数组添加和平均值

时间:2016-11-16 10:17:33

标签: c arrays

所以本周的作业是:'编写一个输入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;
}

5 个答案:

答案 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