该程序应该读取用户输入的数字的数字并检查重复的数字。程序一直在询问数字,直到用户输入小于或等于0的任何数字。它主要起作用,如果你输入一个重复的数字,它会告诉你。但是,如果您从另一个号码呼叫输入相同的数字,则将其视为重复数字。例如,如果在一个实例中输入23,然后在另一个实例中输入52,则认为存在重复(即使输入的新数字中没有)。关于如何解决它的任何想法?
#include <stdio.h>
#include <stdbool.h> //as per C99 standard
int main (void)
{
bool digit_seen[10] = {false};
int digit;
long n;
while (1){
printf("Enter a number (enter 0 to terminate the program): ");
scanf("%ld", &n);
if (n == 0){
break;
}
while (n > 0){
digit = n % 10;
if (digit_seen[digit]){
break;
}
digit_seen[digit] = true;
n /= 10;
}
if (n > 0){
printf("Repeated digit\n");
} else {
printf("No repeated digit\n");
}
}
return 0;
}
答案 0 :(得分:1)
但是,如果您从另一个号码呼叫输入相同的数字,则会将其视为重复数字。
目前,digit_seen
仅初始化一次而外部 while
循环,从未重新初始化新输入n
。
您需要将此代码bool digit_seen[10] = {false};
移至内您的while
循环。这样可以解决问题。