这个C程序错哪啦..

来源:百度知道 编辑:UC知道 时间:2024/09/24 10:41:05
#include <stdio.h>
main()
{
int a[10],i,max,min,*p=a;
float ave;
printf("enter..\n");
for (i=0;i<10;i++)
scanf("%d",p++);
p=a;
max=*p;min=*p;
for(i=0;i<10;i++)
{
ave+=*(p+i);
if(*(p+i)>max)
max=*(p+i);
if(*(p+i)<min)
min=*(p+i);
}
printf("max=%d,min=%d,aver=%f"max,min,ave/10);
}


#include <stdio.h>
main()
{
int a[10],i,max,min,*p=a;
float ave;
printf("enter..\n");
for (i=0;i<10;i++)
scanf("%d",p++);
p=a;
max=*p;min=*p;
for(i=0;i<10;i++)
{
ave+=*(p+i); //ave没有初始化
if(*(p+i)>max)
max=*(p+i);
if(*(p+i)<min)
min=*(p+i);
}
printf("max=%d,min=%d,aver=%f"max,min,ave/10); //max前面少个;
}

首先在 自己的机子上跑了下,最后 print那边少个逗号

还有 最大最小都是没问题的 只有 ave

主要原因是 你没有初始化,应该 float ave=0;

在申明的时候 初始化一下 也可以在后面初始化

未初始化的 float 我的机子上的 值 为-107374176

*p=a;

scanf("%d",p++);
p=a;

先把p的地址设为a[o],然后让p++,就是a[1],然后把a[0]的地址给p,这是什么意思呢?你的循环实际上一直在给a[0]赋值.
可以改为a[i]=*p;

printf("max=%d,min=%d,aver=%f"max,min,ave/10); /*这一行双引号后面少了个逗号*/