比较笨一点的方法:
#include<stdio.h>
int main()
{
//判断重复数字
int i,j,loop=1,num,n,len=0;
int digital[9];
printf("请输入一个正整数:");
scanf("%d",&num);
n=num;
do
{
digital[len]=n%10;
n=n/10;
len++;
}while(n!=0);
printf("%d是一个%d位整数.\n",num,len);
for(i=0;loop&&i<len-1;i++)//判断数组中是否有取值相同的元素,找到相同元素则结束循环
{
for(j=i+1;loop&&j<len;j++)
{
if(digital[i]==digital[j])
{
loop=0;
}
}
}
if(loop)
{
printf("整数%d中没有重复的数字.\n",num);
}
else
{
printf("整数%d中有重复的数字.\n",num);
}
return 0;
}
比较聪明一点的方法:
#include<stdio.h>
#define N 10
int main()
{
//判断重复数字
int i,num,t,loop=0;
int digital[N]={0};
printf("请输入一个不超过9位数的正整数:");
scanf("%d",&num);
// for(i=0;i<N;i++)//for循环容易出错,这里不使用,这里应该错了,还要判断N多少次
// {
// t=num%10;
// digital[t]++;
// num=num/10;
// }
t=num;//最后printf中还要用到num这个数,如果不提前放到变量中,直接取模相除,最后num=0
do
{
digital[t%10]++;
t=t/10;
}while(t!=0);
for(i=0;i<N;i++)
{
if(digital[i]>1)
{
loop=1;
}
}
if(loop)
{
printf("%d这个正整数中有相同的数字!\n",num);
}
else
{
printf("%d这个正整数中没有相同的数字!\n",num);
}
// for(i=0;i<N;i++) //这种方法不需要使用到loop变量 ,但我的电脑管家会帮我删掉这个程序
// {
// if(digital[i]>1)
// {
// break;
// }
// }
// if(i<10)
// {
// printf("%d这个正整数中有相同的数字!\n",num);
// }
// else
// {
// printf("%d这个正整数中没有相同的数字!\n",num);
// }
return 0;
}