我应该修改代码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;
}
答案 0 :(得分:5)
问题在于n=m
。由于m
未初始化,因此它将包含一些垃圾值。你可能想要m=n
。
答案 1 :(得分:3)
m
未初始化; 您正在阅读n
并将m
复制到n
; m
可能包含垃圾值。
n=m;
解决方案:将n=m;
更改为m=n;