永发信息网

C语言,在线等!!!!!

答案:2  悬赏:10  手机版
解决时间 2021-05-10 17:59
  • 提问者网友:疯子也有疯子的情调
  • 2021-05-09 21:35

题目:编写程序产生10个随机整数,计算平均值,找出最大最小值。

我的编写的代码输出了10个随机数,平均值,最大值。但最小值溢出,哪位高手帮我看一下,怎么修改,谢谢啦!!!

#include<stdlib.h>
#include<time.h>
void main()
{
int a[10];
int sum,i,max,min;
double everage;
srand((unsigned long)time(NULL));
max=min=a[0],sum=0;
for(i=0;i<=9;i++)
{
a[i]=rand();
printf("%d ",a[i]);
sum+=a[i];
}
for(i=1;i<=9;i++)
{
if(max < a[i])
max=a[i];
}
for(i=1;i<=9;i++)
{
if(min > a[i])
min=a[i];
}
everage=sum/10.0;
printf("\n最小值:%d, 最大值:%d, 平均数:%f \n",min,max,everage);
}

最佳答案
  • 五星知识达人网友:不想翻身的咸鱼
  • 2021-05-09 22:45

max=a[0],min=a[0],sum=0;这句放在第一个for(){}后面即 for(){..}max=a[0],min=a[0],sum=0;


还有你的sum最好定义成long int sum;因为int得范围太小了,随机数的和也许会大于这个范围,这时候计算平均数就出错了

全部回答
  • 1楼网友:第幾種人
  • 2021-05-10 00:13

因为数组并没有被初始化,所以a[0]是一个很大的负数.(好像是-85*********什么的).

将a[0]赋值给了变量min.那么min也就等于这个数.

随机生成的数不可能比这个数小.所以比较if(min>a[i])就不能为真.也就不会执行min=a[i];

所以输出就是这个负数.

已经帮你改过来了. 你看看! #include<stdlib.h> #include<time.h> void main() { int a[10]; int sum,i,max,min=1234567; //将min初始化为一个较大的数.

double everage; srand((unsigned long)time(NULL)); max=a[0],sum=0; //不要再将a[0]赋值给min了. for(i=0;i<=9;i++) { a[i]=rand(); printf("%d ",a[i]); sum+=a[i]; } for(i=1;i<=9;i++) { if(max < a[i]) max=a[i]; } for(i=1;i<=9;i++) { if(min > a[i]) min=a[i]; } everage=sum/10.0; printf("\n最小值:%d, 最大值:%d, 平均数:%f \n",min,max,everage); }

运行截图:

望采纳!

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯