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

来源:互联网 发布:海岛大亨mac汉化补丁 编辑:程序博客网 时间:2024/06/08 08:35
/*  题目:判断一个整数中是否有重复数字(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;}

原创粉丝点击