//使用返回指针的函数查找最大值 帮看下哪里错了 运行不了 调试可以

C语言 码拜 8年前 (2016-04-18) 913次浏览
#include<stdio.h>
*findmax(int *a,int n)
{
int *max,i=0;
for(p=a;p<a+10;p++)
{
if(*(p+i)>*(p+i+1))
{
max=p+i;
*(p+i)=*(p+i+1);
*(p+i+1)=*(p+i);
max=(p+i);
}
return max;
}
}
main()
{
int a[10],i,*max;
printf(“please input 10 number”);
for(i=0;i<10;i++)
scanf(“%d”,&a[i]);
max=findmax(a,10);
printf(“%d”,*max);
}
解决方案

2

#include<stdio.h>
int* findmax(int* a,int n)
{
    int* max=a;
    int i=0 ;
    for(i=1;i<n;i++)
    {
        if(*max<*(a+i))
        {
            max=a+i;
        }
    }
    return max ;
}
int main()
{
    int a[10];
    int i;
    int* max;
    printf("please input 10 number");
    for(i=0;i<10;i++)
    	scanf("%d",&a[i]);
    max=findmax(a,10);
    printf("%d",*max);
    return 0;
}

8

很多问题
*findmax(int *a,int n) 改成 int* findmax(int *a,int n)
另外for(p=a;p<a+10;p++) 这里p没有定义
另外不懂你思路,写的很混乱

60

你下面四句的逻辑有问题
max=p+i;     //max指向p+i所指向的元素
*(p+i)=*(p+i+1);  //用后一个元素的值覆盖前一个
*(p+i+1)=*(p+i);  //用前一个元素的值又赋值给后面一个元素?
max=(p+i);        //又执行一遍max=p+i?
而且你这个return的位置也不对,for循环就行一次就return了

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明//使用返回指针的函数查找最大值 帮看下哪里错了 运行不了 调试可以
喜欢 (0)
[1034331897@qq.com]
分享 (0)