判断整数中是否有重复数字问题
输入一个不超过9位数的无符号整数,判断该整数中是否存在重复的数字#include<stdio.h>
int main(){
int i,num,n;
int count={0};
printf("请输入一个正整数:");
scanf("%d", &num);
n=num;
do{
count++;//统计数字n%10在整数n中出现的次数
n=n/10;
}while(n!=0);
for(i=0;i<10;i++)
if(count>1)
break;
if(i<10)
printf("整数%d中存在重复的数字.\n", num);
else
printf("整数%d中没有重复的数字.\n", num);
return 0;
}
想问下这个count++;数组中n%10在数组中是什么意思,数组不是一个一个的存储嘛?然后++是指数组向下一个推,比如count里是1,count里是2,就是从1指向2?
for(i=0;i<10;i++)
if(count>1)
break;这里遍历的count又是什么意思?count里是2那也大于1啊 n=786
n%10=6
count就是count
如果count=2;count++;
那么count=3
jhq999 发表于 2022-7-21 21:19
n=786
n%10=6
count就是count
比如n=6786,他是如何计算n中有重复数字的? 本帖最后由 jhq999 于 2022-7-21 21:40 编辑
#include<stdio.h>
int main(){
char ch;
int count={0},num=0;
printf("请输入一个正整数:");
while((ch=getchar())>='0'&&ch<='9')
{
if(count)count=-1;
count++;
num=num*10+ch;
}
if(count<0)
printf("整数%d中存在重复的数字.\n", num);
else
printf("整数%d中没有重复的数字.\n", num);
return 0;
} 1163028233 发表于 2022-7-21 21:27
比如n=6786,他是如何计算n中有重复数字的?
n=6786;
count++;\\count++;count=1;
///////////////
n=n/10=678;
count++;\\count++;count=1;
……
n=6;
count++;\\count++;count=2>1;
本帖最后由 桃花飞舞 于 2022-7-21 23:33 编辑
想问下这个count++;数组中n%10在数组中是 % 是取余符号, n%10 求n的个位数的值并不是给数组每一个元素都赋值,只给数组中重复出现的下标的值++,和 n = n / 10是一起看就懂了,数组不是一个一个的存储嘛?然后++是指数组向下一个推,比如count里是1,count里是2,就是从1指向2?int count={0};count数组中的元素值都是0 count++意思就是只要数n中出现了的数字都作为count数组的下标就把下标对应的值加一,如果出现一次则下标对应的值是0+1 是1 ,出现重复的下标++后的值一定大于1
for(i=0;i<10;i++)
if(count>1)
break;这里遍历的count又是什么意思?count里是2那也大于1啊
这里遍历count,count中的值也就是数字n中自然数0~9出现的次数,count的初始值都是0,如果count的值为0也就是说i对应的自然数没有出现过。遍历就是为了找出数组count中,下标i对应的自然数出现重复的那个。
你也可以用别的方法来做 n%10的目的是依次分离个位,十位,百位等数位中的数字,然后每看到一个数字x,count(x)就增加1,比如个位是1,count(1)就自增1,十位还是1,count(1)就再自增1变为2,等等。所以只要出现重复的数字,数组count中必有一个元素大于1,然后最后的for循环就是判断是否有元素大于1 jhq999 发表于 2022-7-21 21:19
n=786
n%10=6
count就是count
意思是就是count一开始都赋0,如果有重复的就会使得count中某一下标中的数大于1,所以后面才有循环当i>1则跳过,如果没重复的i一直加到10,所以i<10才会重复,如果i>=10那么就不会重复,这个程序是这样理解把? 额外减小 发表于 2022-7-23 14:49
n%10的目的是依次分离个位,十位,百位等数位中的数字,然后每看到一个数字x,count(x)就增加1,比如个位是 ...
意思是就是count一开始都赋0,如果有重复的就会使得count中某一下标中的数大于1,所以后面才有循环当i>1则跳过,如果没重复的i一直加到10,所以i<10才会重复,如果i>=10那么就不会重复,这个程序是这样理解把? 1163028233 发表于 2022-8-2 20:58
意思是就是count一开始都赋0,如果有重复的就会使得count中某一下标中的数大于1,所以后面才有循环当 ...
对
页:
[1]