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

为什么输入后得不到数据呢?是我输入有问题吗?

img


#include 

int main()
{
    int a[20];
    int i;
    for (i = 0; i < 20; i++)
    {
        scanf_s("%d ", &a[i]);
    }
    int sum = 0;
    int n = 20;
    for (i = 0; i < 20; i++)
    {
        if (a[i] > 0)
        {
            printf("%d", a[i]);
            sum += a[i];
            n--;
        }
    }
    printf("%d\n", n);
    printf("%0.2f", sum);
    return 0;
}

空格去掉,因为输入数据有的以空格分隔,有的以换行分隔
你要么写两个循环,前面10个空格分隔,中间getchar读入一个换行,后面再空格分隔
或者直接去掉空格,那么空格、换行、制表符都可以用作分隔符

img


这个空格去掉

题目中输入为整形数,应该考虑0位输入时的情况。楼主的输入没有问题,帮你改良的代码如下:

int main()
{
    int a[20];
    int i;
    for (i = 0; i < 20; i++)
    {
        scanf_s("%d", &a[i]);
    }
    int CountPlus = 0,CountMins = 0;
    float Sum = 0;
    for (i = 0; i < 20; i++)
    {
        if (a[i] < 0)
        {
            CountMins += 1;
        }
        else if (a[i] > 0)
        {
            Sum += a[i];
            CountPlus += 1;
        }
    }
    float fMean = Sum / CountPlus;
    printf("负数的个数为:%d\n", CountMins);
    printf("整数的均值为:%0.2f", fMean);
    return 0;
}

输如输出结果如下:

img


希望对你有帮助!


#include <stdio.h>
int main()
{
    int i, n = 0, num = 0;
    int a[20] = { 0 };
    double sum = 0;


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

        if (a[i] < 0)
        {
            num++;
        }

        if (a[i] > 0)
        {
            sum += a[i];
            n++;
        }
    }

    printf("%d %.2f", num, sum / n);

    return 0;
}

```

scanf在定义那栏有什么,在输入时也必须要有,否则无法识别,如你在scanf("%d ") 那在输入数字后 需要按一下 空格 符合输入的格式 ,正确的做法是 删除空格 后 可以正常进行数字的输入