#include <stdio.h>
#include<stdbool.h>
int main()
{
long int num,temp;
int i=1;
printf("请输入一个整数:");
scanf("%ld",&num);
temp = num; //获取所输入整数的位数。
while(temp/10>0){
i+=1;
temp = temp/10;
} //打印所输入整数的位数,并定义一个bool型数
printf("该数为%d位数。\n",i);
bool a[i+1]; //初始化数组中所有元素为0
for(int j=0;j<i+1;j++){
a[j] = 0;
} //判断是否有重复的数字。
<span style="color:#ff0000;">do{
int n = num % 10;
if(a[n]==1){
printf("出现重复了。\n");
break;
}
a[n] = 1;
num /= 10;
}while(num);</span>
if(num==0){
printf("没有重复。\n");
}
return 0;
}
扩展资料:
使用其他的方法判断一个整数中是否出现重复数字:
int x;
printf("请输入一个数:");
scanf("%d",&x);
bool bs[10]={0};
do {
int n=x%10;
if ( bs[n] ==1 )
{
printf("重复了\n");
break;
}
bs[n] = 1;
x/=10;
}
while (x);
if ( 0==x )
{
printf("没有重复\n");
}
return 0;
定义一个数组,标记是否出现过这个数
当出现一个数,同时对应数已经被标记过 代表重复。
然后 循环获取每一位就可以了。
#include <stdio.h>
int check_repeat(int n)
{
int flag[10]={0};
int a;
while(n)
{
a=n%10;
n/=10;
if(flag[a]) return 1;//发现重复
flag[a]=1; //标记出现过
}
return 0; //正常退出循环 表示没有出现重复
}
int main()
{
int a;
scanf("%d",&a);
if(check_repeat(a))printf("有重复\n");
else printf("无重复\n");
return 0;
}