问题:从键盘输10个正整数并存放在一个一维数组中,统计其中偶数的个数,并求出偶数的平方的平均值
我琢磨出来的内容:
#include
void main()
{
int a[10],s[10];
int suq,i,j=0;
float sum,ave;
printf("Input ten numbers:");
for(i=0;i<10;i++)
scanf("%d",&a[i]);
for(i=0;i<10;i++)
{
if(a[i]%2==0)
{
j++;
printf("%d为偶数\n",a[i]);
suq=a[i]*a[i];
printf("对应的平方为%d\n",suq);
suq=s[j];
sum=sum+s[j];
}
}
printf("偶数有%d个\n",j);
printf("偶数的平方的和为%d\n",sum);
ave=sum/j;
printf("偶数的平方的平均值为%d\n",ave);
}
运行结果是如图所示:
我想知道自己错在什么地方,由于才疏学浅,找不到自己的问题所在,求帮助解答!
16行,s[j]=suq,你写错了
①代码中使用一个名为 s 的数组来存储输入的偶数的平方。然而,并没有在代码中初始化这个数组,并且在每次循环迭代时都会将偶数的平方赋值给 s[j]。这可能会导致期望的结果不一致。
② 在统计偶数的个数时使用了一个名为 j 的计数器。然而,在每次循环迭代之前都没有将 j 设置为 0,这可能会导致统计错误的偶数的个数。
③ 使用 float 类型的变量 sum 和 ave 来存储偶数的平方的和和平均值。然而,在将偶数的平方的和赋值给 sum 时使用了 sum=sum+s[j],其中 s[j] 是整数类型的。这可能会导致类型转换问题,导致最终的结果不准确。
修改后的代码如下
#include<stdio.h>
int main(void)
{
int a[10], s[10];
int suq, i, j = 0, sum = 0;
float ave;
printf("Input ten numbers:\n");
for (i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < 10; i++) {
if (a[i] % 2 == 0) {
j++;
printf("%d 为偶数\n", a[i]);
suq = a[i] * a[i];
printf("平方和位 %d\n", suq);
s[j] = suq;
sum += suq;
}
}
printf("偶数有%d个\n", j);
printf("偶数的平方的和为%d\n", sum);
ave = (float)sum / j;
printf("偶数的平方的平均值为%.2f\n", ave);
return 0;
}