有一堆数字(位数不一定) 如何把数位没有重复的筛选出来(例如1112是重复的 12456789不重复)

来源:百度知道 编辑:UC知道 时间:2024/06/21 10:04:14
这堆数字是
long k;
for(k=1;k<90909090;k++)

比如11就重复了 //两个1
121也重复 //两个1
1234就不重复

如果把没重复的筛选出来
for(k=1;k<90909090;k++) {k*11;} 这些就是需要检验的数字

本题一个完整的c程序如下,考虑到数字位数不定,可能超过int或long型的表示范围,故把输入数字看成字符串来处理。程序在win-tc和Dev-c++下调试通过。
#include <stdio.h>
#include <string.h>
#define N 20
int main()
{ int i,j,k,n,flag[100]={0};
char s[100][N],len[100];/* 设数字总数不超过100,每数长度不超过20位,实际请更改 */
printf("Please input number of the digits(<=100):\n");
scanf("%d",&n);
printf("Please input the digits one by one:\n");
for(i=0;i<n;i++)
{scanf("%s",s[i]);
len[i]=strlen(s[i]);
}
for(k=0;k<n;k++)
for(i=0;i<len[k]-1;i++) /*类似选择排序方法*/
{ for(j=i+1;j<len[k];j++)
if(s[k][j]==s[k][i])
{ flag[k]=1;
break;/*如有重复立即退出该层循环,提高判断速度*/
}
if(flag[k]==1)
break; /*如有重复立即退出该层循环,提高判断速度*/
}
printf("The digits without repetition are:\n");
for(k=0;k<n;k++)
if(flag[k]==0)
printf("%s\n",s[k]);
system("paus