C语言:如何判断任意数中的是否有重复的数?

  • Post author:
  • Post category:其他


如何判断任意一个数中时候有重复的数?

例如输入12344,则可判断有重复的数字4,如果输入12345,则没有重复的数。

那如何来实现呢?

我之前的是利用数组来判断,即将12345拆分成1、2、3、4、5,然后利用for循环对拆分出的数进行判断即可。但是这样就有点麻烦了,而且还要根据输入的长度去重新调整数组的长度和 for 循环。那有什么简化的方法呢?

  1. 假如输入的数是:11345
  2. 定义一个长为10的bool数组
  3. 在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 版权协议,转载请附上原文出处链接和本声明。