#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);
}
*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没有定义
另外不懂你思路,写的很混乱
*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了
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了