如何判断任意一个数中时候有重复的数?
例如输入12344,则可判断有重复的数字4,如果输入12345,则没有重复的数。
那如何来实现呢?
我之前的是利用数组来判断,即将12345拆分成1、2、3、4、5,然后利用for循环对拆分出的数进行判断即可。但是这样就有点麻烦了,而且还要根据输入的长度去重新调整数组的长度和 for 循环。那有什么简化的方法呢?
- 假如输入的数是:11345
- 定义一个长为10的bool数组
-
在while循环中利用求余%算出最后一位数,并将其作为下标修改对应位置的布尔值为真,如果说有重复的数,怎么触发if语句,跳出整个循环。
程序原理如下图所示:
代码如下:
#include<stdio.h>
#include<stdbool.h>
int main(){
bool digit_seen[10] = {false};
int digit;
long n;
printf("Enter a number: ");
scanf("%ld",&n);
while(n>0){
digit = n%10;
if(digit_seen[digit]){
break;
}
digit_seen[digit] = true;
n/=10;
}
if(n>0){
printf("Repeated digit\n");
}else{
printf("No repeated digit\n");
}
return 0;
}
这个我不知道该怎么才能更好的表达清楚,但心里却是清楚是咋回事的,希望有缘人看到了别放弃,多想想即可。
与君共勉
版权声明:本文为weixin_48939460原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。