所以本周的作业是:'编写一个输入6个整数并将它们放入数组的程序。该程序 然后打印出以下内容:所有数组元素的列表,从0到5以及总和和 所有元素的平均值。 NB数组元素的平均值不会 必须是一个整数。为了将整数转换为实数(浮点)使用 铸件: 要将整数'x'变为浮点数,请使用float(x) 例如。: 平均值=浮点数(总和)/元素数量; (在这种情况下,元素的数量是6)'
不太确定我在这里做错了什么,但我的代码似乎回答了错误的答案,我无法弄清楚原因。
任何建议都将不胜感激。我觉得我要失败这个模块,因为自从引入函数等以来我一直在努力。
无论如何,这是我的代码:
#include<stdio.h>
#include<conio.h>
#include<math.h>
int main() {
int numArr[5];
int i, sum = 0;
float avg;
printf("\nEnter 6 elements : \n");
for (i = 0; i < 6; i++)
scanf("%d", &numArr[i]);
for (i = 0; i < 6; i++) {
sum = sum + i;
}
avg = sum /6;
printf("The sum is : %d", sum);
printf("The mean value is : %f", avg);
return 0;
}
答案 0 :(得分:4)
你的阵列不足以容纳6个数字。
更改
int numArr[5];
到
int numArr[6];
目前,您正在访问数据库外的数据,从而生成undefined behaviour。
还有其他几个问题:
1)您没有对数组元素求和
2)你正在进行整数除法
修复它,它看起来像:
#include<stdio.h>
#include<math.h>
int main(void) {
int numArr[6];
int i, sum = 0;
float avg;
printf("\nEnter 6 elements : \n");
for (i = 0; i < 6; i++)
scanf("%d", &numArr[i]);
for (i = 0; i < 6; i++) {
sum = sum + numArr[i]; /* was summing `i` instead of numArr[i] */
}
avg = sum /6.0; /* was doing integer division */
printf("The sum is : %d", sum);
printf("The mean value is : %f", avg);
return 0;
}
答案 1 :(得分:4)
'编写输入 6 整数
的程序
int numArr[5];
^^^^^
更改此循环
for (i = 0; i < 6; i++) {
sum = sum + i;
}
像
for (i = 0; i < 6; i++) {
sum = sum + numArr[I];
}
并更改此声明
avg = sum /6;
以下方式
avg = ( float )sum /6;
你忘了输出数组的所有元素。
考虑到根据C标准,没有参数的函数main应声明为
int main( void )
并且您可以删除标题<math.h>
,因为您的程序中此标头都没有使用声明。
答案 2 :(得分:2)
sum = sum + i;
应该是
sum = sum + numArr[i];
应添加数组元素。
后来
avg = sum/6.0
答案 3 :(得分:1)
for (i = 0; i < 6; i++) {
sum = sum + numArr[i];
}
avg = (float)sum /6;
注意 numArr [i]
答案 4 :(得分:1)
int numArr[5];
应该是
int numArr[6];
和
for (i = 0; i < 6; i++) {
sum = sum + i;
}
应该是
for (i = 0; i < 6; i++) {
sum = sum + numArr[i];
}
和
avg = sum /6;
应该是
avg = sum/6.0 //because division of integer by an integer results by integer value. So we divide integer with a float (6.0) value