#include<stdio.h>
int main()
{
int i,m,a[m],max,min,sum,aver;
scanf("%d",&m);
sum=0;
for(i=0;i<m;i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
aver=sum/m;
max=a[0];
for(i=0;i<m;i++)
{
if(a[i]>max)
max=a[i];
}
min=a[0];
for(i=0;i<m;i++)
{
if(a[i]<min)
min=a[i];
}
printf("aver=%d,max=%d,min=%d\n",aver,max,min);
return 0;
}
输入m个数,求其最大数、最小数和平均值。想问下列源程序有什么错误?
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
雷鬼007 2021-04-21 22:55关注#include<stdio.h> int main() { int i,m,a[m],max,min,sum,aver; // m未赋值之前(随机值)就拿来定义数组,这是极其危险的 scanf("%d",&m); sum=0; for(i=0;i<m;i++) { scanf("%d",&a[i]); sum+=a[i]; } aver=sum/m;//这里是帧数除法,符合你的设计预期吗? max=a[0]; for(i=0;i<m;i++) { if(a[i]>max) max=a[i]; } min=a[0]; for(i=0;i<m;i++) { if(a[i]<min) min=a[i]; } printf("aver=%d,max=%d,min=%d\n",aver,max,min); return 0; } // 给你一段代码你参考一下 #include<stdio.h> static inline int MyMax(int a, int b) { return (a > b) ? a : b; } static inline int MyMin(int a, int b) { return (a > b) ? b : a; } int main() { int i, m, sum; int max = 0x80000000; int min = 0x7fffffff; double aver; scanf("%d",&m); int a[m]; sum=0; for(i = 0; i < m; i++) { scanf("%d",&a[i]); sum += a[i]; min = MyMin(min, a[i]); max = MyMax(max, a[i]); } aver = (double)sum / (double)m; printf("aver = %f, max=%d, min=%d\n", aver, max, min); return 0; }评论 打赏 举报解决 1无用 1