关于#c语言#的问题,请求各位解答

麻烦各位帮忙看看哪里错了
题目在图片里

img


这是运行结果

img


为什么偶数项不输出和运行结果会出错呢?

输入有问题,你可以一个一个输入,在输入过程中直接进行判断


#include<string.h>
#include<stdio.h>
int main()
{
    int a[20];
    int i, n = 0;
    float sum = 0, sum1 = 0, average;
    for (i = 0; i < 20; i++) {
        printf("请输入a[%d]的值:\n", i);
        scanf_s("%d",&a[i]);
        if (a[i] % 2 == 0) {
            sum += a[i];
        }
        else {
            n++;
            sum1 += a[i];
        }
    }
    printf("偶数项的和:%f\n", sum);
    average = sum1 / n;
    printf("奇数项的平均值:%f\n", average);
    return 0;
}

您好,看了您的程序发现2个小问题
1:题目是需要录入20个数,您&arr[20],这个只是录入一个数字,比如说,你输入了1 2 3...18 19 20,但其实,只是录入了一个数,那个数就是1,而且您也数组越界了,程序在运行的时候,应该会弹出一个警告窗
2:没有必要用两次for循环找奇偶
具体思路如下
手机写的,代码风格不是很好,谅解

#include<stdio.h>
int main()
{
int arr[20] ={0};
int i = 0;
int sum = 0;
int avg = 0;
int count = 0;
for(i = 0; i<20; i++)
 {
//录入20个数字,中间空格隔开
scanf(“%d ”,&arr[i]);
 }
int j=0;
for(j=0;j<20;j++)
{
  if(arr[j] % 2 ==0)
   {
    sum += arr[j];
   }
   else
   {
    avg += arr[j];
     count++;
   }
}
printf(“sum = %d\n”,sum);
//如果平均值需要用浮点型表示
//%d 改为%lf  后面改为(avg*1.0 /count)
printf(“avg = %d\n”,avg/count);
return 0;
}

这20个数得用循环输入呀,而且13行你的数组下标越界了。
13行scanf_s("%d",&a[20])改为

for(int i=0;i<20;i++){
      scanf_s("%d",&a[i]);
}

有帮助的话采纳一下哦!