您的位置:首页 > 其它

判断一个整数中是否有重复数字(0~9),该数字不以0开头--------方法1

2013-05-16 08:20 495 查看
/*
题目:判断一个整数中是否有重复数字(0~9),该数字不以0开头
方法1:利用函数将数字从低位(个位)到高位进行分解,每分解一位,判断该数是否在0~9中出现,
如果从未出现过该位数字,则将该数字下标对应字符设置为'x',表示该数字已经出现过。
如果下次得到的另一个位的数为数字下标对应的字符为'x',表示此位数字再次出现,则返回false,
表示这个整数中有重复数字。

*/

#include<iostream>
#include<cstring>
using namespace std;

bool checkNum(int n){
char arr[]="0123456789";  //数组下标整数值对应对应的整数字符
do{
if(arr[n%10]<='9') //此位上的数是0~9的数,且从未出现过
{
arr[n%10]='x';  //标记对应数字为已出现过,为'x'
}else{   //第二次出现了
return false;
}
n/=10;  //从个位开始循环判断各个位上数字
}while(n!=0);
return true;
}

int main()
{
int digit_10;
cout<<"请输入10位数以内的整数:";
while(cin>>digit_10&&digit_10<9999999999)
{
if(checkNum(digit_10))
cout<<"此数中没有重复数字"<<endl;
else
cout<<"此数中存在重复数字"<<endl;
cout<<"请输入10位数以内的整数";
}
return 0;
}


 


 

#include<iostream>
#include<cstring>
using namespace std;

bool checkNum(int n){
int arr[]={0,1,2,3,4,5,6,7,8,9};  //数组下标整数值对应对应的整数
do{
if(arr[n%10]>=0&&arr[n%10]<=9) //此位上的数是0~9的数,且从未出现过
{
arr[n%10]=-1;  //标记对应数字为已出现过,将数组元素值改为-1
}else{   //第二次出现了
return false;
}
n/=10;  //从个位开始循环判断各个位上数字
}while(n!=0);
return true;
}

int main()
{
int digit_10;
cout<<"请输入10位数以内的整数:";
while(cin>>digit_10&&digit_10<9999999999)
{
if(checkNum(digit_10))
cout<<"此数中没有重复数字"<<endl;
else
cout<<"此数中存在重复数字"<<endl;
cout<<"请输入10位数以内的整数";
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: