c语言求最大公约数_求会C语言的人帮我看一看我这C语言怎么了

原问题:求会C语言的人帮我看一看我这C语言怎么了
分类:编程开发 > 最后更新时间:【2016-12-11 02:19:55】
问题补充:

#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;
}

最佳答案由网友  grass_rt  提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
4

分享到:

其他回答

其它网友回答:
你定义的是整形数据


追问:
能帮我改一下吗
    推荐