麻烦各位帮忙看看哪里错了
题目在图片里
输入有问题,你可以一个一个输入,在输入过程中直接进行判断
#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]);
}
有帮助的话采纳一下哦!