修改程序,使其可以显示哪些数字有重复(如果有的话)

#include
#define true 1
#define false 0
typedef int bool;
int main(void)//检查数中重复出现的数字
{
bool digit_seen[10]={false};
int digit;
long n;
printf("Enter a number:");
scanf("%d",&n);
while(n>0){
digit=n%10;

if (digit_seen[digit]==true)
break;
digit_seen[digit]=true;
n/=10;
}
if(n>0)

printf("Repeatd digit(s):\n");
else
printf("No repeated digit\n");
return 0;
}
我的思路是设一个数组,把有重复的digit存入数组中,下标循环自加。但是首先你不知道会有多少个重复,所以数组的长度也定不了。。。。

另外实现的结果应为:
Enter a number:939577
Repeated digit: 7 9

修改
int digit_seen[10]={0};
循环里面
digit=n%10;
digit_seen[digit] += 1;

最后取出数组大于1的就行了

我用我的方法基本实现 了,但是出现了歧义,就是我设了一个数组(长度10),把重复出现的数字存在数组中,最后一并输出,但是无法解决该数组长度问题,导致除了重复数外,还连带输出了很多0(初始为10个0),然后一旦数字里有重复的0的话,也容易产生歧义
#include
#define true 1
#define false 0
typedef int bool;
int main(void)//检查数中重复出现的数字
{
bool digit_seen[10]={false},flag=0;
int i=0,digit,digits[10]={0};
long n;
printf("Enter a number:");
scanf("%d",&n);
while(n>0){
digit=n%10;
if (digit_seen[digit]==true){
digits[i]=digit;i++;
flag=1;
}
digit_seen[digit]=true;
n/=10;
}
if(flag==1)
{
printf("Repeatd digit(s):");
for(i=0;i<10;i++)
printf(" %d",digits[i]);
}
else
printf("No repeated digit\n");
return 0;
}