这段代码出错了吗? [C]

时间:2015-03-13 02:51:57

标签: c

我应该修改代码repdigit.c,以便用户可以输入多个数字来测试重复的数字。出于某种原因,尽管我的所有编译器都是No repeated digit,但无论我输入什么数字。

int main(void)
{
    bool digit_seen[10] = {false};
    int digit;
    long n, m;

    while (1)
    { 
        printf("Enter a number (0 to terminate): ");
        scanf("%ld", &n);

        if (n == 0)
            break;

        n = m;

        while (m > 0) 
        {
            digit = m % 10;
            if (digit_seen[digit])
                break;
            digit_seen[digit] = true;
            m /= 10;
        }

        if (m > 0)
            printf("Repeated digit\n");
        else
            printf("No repeated digit\n");
    }

    return 0;
}

2 个答案:

答案 0 :(得分:5)

问题在于n=m。由于m未初始化,因此它将包含一些垃圾值。你可能想要m=n

答案 1 :(得分:3)

  1. m未初始化;
  2. 您正在阅读n并将m复制到n; m可能包含垃圾值。

    n=m;
    

    解决方案:将n=m;更改为m=n;