c语言求最大公约数_求会C语言的人帮我看一看我这C语言怎么了
#include <stdio.h>
#include <stdlib.h>
int main()
{int a;
printf("输入数组个数");
scanf ("%d",&a);
int su[a],s,b=0,d,v,e,i,u; //a是数组个数,b是总和,c是平均值,d是最大值,e是最小值
float c;
for(i=0;i<a;i++) //定义数组
{printf("输入数组");
scanf("%d",&su[i]);}
for(s=0;s<a;s++) //求数组和
b=b+su[s];
printf("总和:%d\n",b);
printf("\n");
c=b/a; //求数组平均值
printf("平均值:%f\n",c);
printf("\n");
for(u=0;u<a;u++)
{if(su[u]<su[u+1])
d=su[u+1];
else d=su[u];}
printf("最大值:%d\n",d);
printf("\n");
for(v=0;v<a;v++)
{if(su[v]<su[v+1])
e=su[v];
else e=su[v+1];}
printf("最小值:%d\n",e);
getch();
}
补充:总和没有问题,平均数一遇到不是整数就出问题,最大值和最小值不知道哪里出问题了补充:最好帮我改好了发上来,谢谢。最佳答案
我看过了题主代码,确实存在一些问题。给题主的进步空间还是比较大的,需要一步一个脚印的认真打牢基础。给题主一个现在就能够改进的建议,请将变量的名称尽量起得有实际意义。否则写着写着代码,真得容易忘记变量的作用(真的很想改,但怕你的逻辑就不流畅了)。还有,请不要吝惜使用Tab键进行缩进,这样更有利于理解代码的逻辑关系。
需要说明的是,我没有每做一件事都重新循环一遍。记录数组和汇总求和同时完成。最大值、最小值也是一次成型。还有,我去除了众多的循环标识变量,仅保留了一个int i。下面就是代码及注释:
#include <stdio.h>
int main(void)
{
int a; // a是数组个数
printf("输入数组个数:");
scanf ("%d", &a);
int su[a]; // 存储用户输入数据的数组
int i; // 循环变量
int b = 0; // b是总和
int d; // d是最大值
int e; // e是最小值
float c; // c是平均值
for(i=0; i<a; i++) //定义数组
{
printf("第%d个元素:", i+1);
// 存储数据
scanf("%d", &su[i]);
// 数组求和
b += su[i];
}
printf("总和: %d\n\n", b);
// 题主代码中写成了c = b / a;
// 计算结果是整数,这是因为a和b都是int,
// 所以b / a同样也是int。
c = (float)b/a; //求数组平均值
printf("平均值: %f\n\n", c);
// 将最大值和最小值初始化为数组第1个元素的大小
e = d = su[0];
// 所以从第2项开始循环
for(i=1; i<a; i++)
{
// 如果当前数值大于最大值则记录
if(su[i] > d)
d = su[i];
// 如果当前数值小于最小值则记录
if (su[i] < e)
e = su[i];
}
printf("最大值:%d\n\n",d);
printf("最小值:%d\n",e);
getchar();
return 0;
}
其他回答
其它网友回答:
你定义的是整形数据
追问:
能帮我改一下吗