c语言简单问题,请大家解答

题目:

img

我的代码:


#include <stdio.h>
#include <math.h>

int main()
{
    int num[50];
    int i;
    for (i = 0; i < 50; i++)
    {
        scanf_s("%d", num[i]);
    }
    int len = sizeof(num);
    int A1=0,A2=0,A3=0,A5=0;
    int sum = 0,number=0;
    float A4 = 0;
    for (i = 0; i < len; i++)
    {
        if (num[i] % 5 == 0)
        {
            if (num[i] % 2 == 0)
                A1 += num[i];
        }
        if (num[i] % 5 == 1)
        {
            int result=pow(-1, i);
            A2 += result;
        }
        if (num[i] % 5 == 2)
            A3++;
        if (num[i] % 5 == 3)
        {
            number++;
            sum += num[i];
        }
        if (num[i] % 5 == 4)
        {
            if (num[i] > A5)
            {
                A5 = num[i];
            }
        }
    }
    A4 = sum / number;
    printf("%d %d %d %0.1f %d", A1, A2, A3, A4, A5);
    return 0;
}

先不管N的问题 在我输入例子中的值的情况下 为啥不能正常输出呢?


#include <stdio.h>

int main()
{
    int num[50];
    int i;
    int len = sizeof(num) / sizeof(num[0]);
    for (i = 0; i < len; i++)
    {
        scanf_s("%d", &num[i]);
    }
    
    int A1=0,A2=0,A3=0,A5=0;
    int number=0;
    float sum = 0;
    float A4 = 0;
    int count = 0;
    for (i = 0; i < len; i++)
    {
        if (num[i] % 5 == 0)
        {
            if (num[i] % 2 == 0)
                A1 += num[i];
        }
        if (num[i] % 5 == 1)
        {
            count++;
            if (count % 2 == 0) {
                A2 -= num[i];
            }
            else {
                A2 += num[i];
            }

        }
        if (num[i] % 5 == 2)
            A3++;
        if (num[i] % 5 == 3)
        {
            number++;
            sum += num[i];
        }
        if (num[i] % 5 == 4)
        {
            if (num[i] > A5)
            {
                A5 = num[i];
            }
        }
    }
    A4 = sum / number;
    printf("%d %d %d %0.1f %d", A1, A2, A3, A4, A5);
    return 0;
}

经各位指出的错误修改后的代码如下,但还是不能正确输出

13行错了那表示字节数并不是元素个数,改成int len = sizeof(num)/sizeof(num[0]);

在计算A2的时候你的逻辑有问题,你都没有计算到num[i],修改为:
在上面定义 int A2_count=0;

 
     if (num[i] % 5 == 1)
            {
                A2_count++;
                if(A2_count % 2==0) {
                       A2 -= num[i];
                }else {
                     A2 += num[i];
                }
             
            }

再次,你计算A4的时候,sum的类型修改为float 然后做一个取一位小数的处理即可。其它的值都是正确的。望采纳!!


for (i = 0; i < 50; i++)//因为你这里要循环输入50次,如果你先不管N,你可以把50改成你要输入的个数试试看看
    {
        scanf_s("%d", &num[i]);//这里&缺了
    }