永发信息网

C语言问题,关于检查数中重复出现的数字 循环中的的语句希望高手解释下

答案:3  悬赏:10  手机版
解决时间 2021-11-28 22:43
C语言问题,关于检查数中重复出现的数字 循环中的的语句希望高手解释下
最佳答案
#include
#define TRUE 1
//#define FALSE 0

typedef int Bool;

void main()
{
Bool digit_seen[10]={0}; //存放0-9这10个数字出现的次数
int digit;
long int n;

printf("Enter a number:");
scanf("%ld",&n);

while(n>0) //用辗转相除法
{
digit=n%10; //n的右边第1位数
if(digit_seen[digit]) //检查digit_seen[digit]数组这个digit出现过没有,如果出现过则退出循环
break;
digit_seen[digit]=TRUE; //如没出现过就把digit_seen[digit]这个数字出现的次数设为1
n/=10; // n=n整除10的商,如123/10=12 ,下次用12做上面重复的步骤
}
if(n>0) //如果循环结束后n的值不为0,表示是循环中途用break中断退出循环的,表示有重复
printf("Repeat digit\n\n");
else
printf("No repeat digit\n\n");
}
全部回答
调试下 感觉不太对
取这个数的个位,存在digit里,看是不是出现过,如果出现过,就退出,没有出现过就记录“出现过”,最后除以10,就相当于把个位去掉,原来的十位变成个位,百位变成十位……
digit_seen[i]里记录的是bool变量,只有真和假,用来表示 i 这个数字是不是出现过
例如个位是5,那就判断digit_seen[5]存的是true 还是 false 。如果是true,说明5已经是第二次出现了,如果是false ,就记录下,以便下次再看见5就判断“出现重复了”
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
【高考】今年我考440——445分,报什么样的学
园林景观设计知识:规则式园林有哪些特点
Kate是什么意思?
甘谷县属于哪个区
vivo账号可以登陆OPPO手机自带网盘吗?
国考行测一般考多少分能进面试
新乡卖车在什么地方
表中实验操作能达到实验目的是实验操作实验目
当假装HIM吓女友,会怎样
解方程36.6-x=23.8
aj12和aj13哪个好
未毕业的学生能参加招聘会吗?
单选题我国的天然林地主要分布在A.交通便利地
用计算器计算下列各式的值.(1)sin?20°(2
单选题认为实践是认识的基础的观点属于A.一切
推荐资讯
香辣罗氏虾的做法步骤图,香辣罗氏虾怎么做
三相四线,为什么零钱有四百伏电压?
利用等式的性质来解-4 +5x=2x-5
四字词语(ABAC ABCC AABB ABAB不要带一的如
生姜十红枣十红糖
休闲的白衬衣再打上休闲的领带和牛仔裤应该搭
雪兔压雪车多少钱?
一什么帽子 词语
9.1x3.7 3.7(能简算就简算)
黄牛肉与水牛肉味道有何不同
粘蛾子是什么,好像是一种蘑菇,具体是什么那
什么字合适写在街门上啊?
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?