关于C语言的问题。.,

题是随意输入0到9的数(可多次输入),记录输入此数字的次数。但是结果运行的很奇怪。

img

不知道哪里错了。

img


你这个地方的while循环,没有对x进行任何操作,这里可以算一个死循环。我不确定是不是因为有两个scanf对x进行操作,导致输入有问题

  • 第一个for循环没有必要,你只需要int count[10]={0}这样数组里面的所有元素都是0了

代码修改如下:

#include<stdio.h>
int main()
{
    int x;
    int i = 0;
    int count[10] = { 0 };
    while (scanf("%d", &x) != EOF)
    {
        if (x >= 0 && x <= 9)
        {
            count[x]++;
        }
        if (x == -1)
        {
            break;//用-1来暂停计数
        }
    }
    for (int i = 0; i < 10; i++)
    {
        printf("%d ", count[i]);
    }
    printf("\n");


    return 0;
}

如果对你有帮助,还请点个采纳,万分感谢!


#include<stdio.h>

int main()
{
    int x, i, count[10] = {};

    do
    {
        scanf_s("%d", &x);
        if (x >=0 &&x<=9)
        {
            count[x]++;
        }
    } 
    while (x != -1);//用-1来结束循环

    for (i = 0; i < 10; i++)
    {
        printf("%d的次数是%d\n", i,count[i]);
    }

    return 0;
}

代码应该没有问题