如何判断任意一个数中时候有重复的数?
例如输入12344,则可判断有重复的数字4,如果输入12345,则没有重复的数。
那如何来实现呢?
我之前的是利用数组来判断,即将12345拆分成1、2、3、4、5,然后利用for循环对拆分出的数进行判断即可。但是这样就有点麻烦了,而且还要根据输入的长度去重新调整数组的长度和 for 循环。那有什么简化的方法呢?
- 假如输入的数是:11345
- 定义一个长为10的bool数组
- 在while循环中利用求余%算出最后一位数,并将其作为下标修改对应位置的布尔值为真,如果说有重复的数,怎么触发if语句,跳出整个循环。
程序原理如下图所示:
代码如下:
#include#include 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 digitn"); }else{ printf("No repeated digitn"); } return 0; }
这个我不知道该怎么才能更好的表达清楚,但心里却是清楚是咋回事的,希望有缘人看到了别放弃,多想想即可。
与君共勉



