找不到自己的问题所在(关键词-一维数组)

问题:从键盘输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);
}

运行结果是如图所示:

img

我想知道自己错在什么地方,由于才疏学浅,找不到自己的问题所在,求帮助解答!

16行,s[j]=suq,你写错了

img

  • ①代码中使用一个名为 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;
}