题目:编写程序产生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);
}
max=a[0],min=a[0],sum=0;这句放在第一个for(){}后面即 for(){..}max=a[0],min=a[0],sum=0;
还有你的sum最好定义成long int sum;因为int得范围太小了,随机数的和也许会大于这个范围,这时候计算平均数就出错了
因为数组并没有被初始化,所以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);
}
运行截图:
望采纳!
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息