输入10个整数,求最大值(要求用指针和自定义函数实现)。
自己写的:
#include<stdio.h>
int fun(int a[10])
{
int i=0,j;
for(j=1;j<10;j++)
{
if(a[j]>a[i])
{
i=j;
}
}
return a[i];
}
void main()
{
int a[10],i,max,*p;
p=a;
printf("请输入十个数:\n");
for(i=0;i<10;i++);
scanf("%d",p);
printf("%d\n",a[i]);
max=fun(a);
printf("max=%d\n",max);
}
同学写的:
#include<stdio.h>
void max(int *p,int q)
{
int i,max=*p;
for(i=0;i<q;i++,p++)
{
if(max<*p)
max=*p;
}
printf("最大的数是:%d\n",max);
}
main()
{
int a[10],i,*p;
p=a;
puts("请输入十个数:\n");
for(i=0;i<10;i++);
scanf("%d",&a[i]);
puts("\n");
max(p,10);
}
两个都有问题,第二个程序我在我电脑上运行结果不对,在同学电脑上运行正确,都是vc++6.0。
你输入时候不对 p是个指针
scanf("%d",p);
而且读入的循环后面多加了分号导致错误
改之后:
#include<stdio.h>
int max(int *p)
{
int i,max=*p;
for(i=0; i<10; i++,p++)
{
if(max<*p)
max=*p;
}
return max;
}
int main()
{
int a[10],i,*p,max1;
printf("请输入十个数:");
for(i=0; i<10; i++){
scanf("%d",&a[i]);
}
p=a;
max1=max(p);
printf("最大的数是:%d\n",max1);
}
//1 2 3 4 5 6 7 8 9 10
fun 参数改为 *a, 主函数中传入a 数组的地址
这个是你同学的问题,for()循环加了;输入不了数字
修改如下,供参考:
#include<stdio.h>
int max(int *p,int n)
{
int max=*p,*q;
for(q = p; q < p + n; q++)
if(max < *q) max=*q;
return max;
}
int main()
{
int a[10],i,*p;
puts("请输入十个数:");
for(p = a; p < a + 10; p++)
scanf("%d",p);
p = a;
printf("最大的数是:%d\n",max(p,10));
return 0;
}