C++ Code
1
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
//2013华为校园招聘机试题目题5
//将一个int类型的数字转化为字符串 //并判断有无重复字符串(长度应大于2)有返回1,无返回2 #include <stdio.h> #include <stdlib.h> #define MAX 200 int ItoAandRepeat(unsigned int theNum,char *s) { char Str[MAX]; char Repeat[MAX]; int interg,remainder,i=0,j,z=0,k=0,temp; //数字转换成字符串 remainder=theNum%10; interg=theNum/10; while(interg) { Str[i]=remainder+48; i++; remainder=interg%10; interg=interg/10; } Str[i]=remainder+48; i++; Str[i]='\0'; for(z=0,j=i-1;j>=0;j--,z++) { s[z]=Str[j]; } s[z]='\0'; printf("%d转换成字符串为:%s\n",theNum,s); //判断有无重复字符串 for(i=0;s[i]!='\0';i++) { //判断之前是否出现过该字符 for(j=0;j<i;j++) { //出现过,从此位置开始向后判断,有多少位重复 if(s[j]==s[i]) { z=i; z++; j++; temp=1;//第一次重复 while(s[j]==s[z]&&s[z]!='\0')//继续判断 { z++; j++; temp++; } if(temp>1)//重复字符数大于1 { for (k=0;k<temp;k++,i++) { Repeat[k]=s[i];//复制重复的字符串便于打印 } Repeat[k]='\0'; printf("%s有重复字符串,重复字符串为:%s\n",s,Repeat); return 1; } } } } return 2; } //测试主函数 void main() { int number,temp1,re; char s[MAX]; printf("请输入一个整数!\n"); temp1=scanf("%d",&number); while(temp1==1) { re=ItoAandRepeat(number,s); printf("re=%d\n",re); printf("\n请输入下一个整数!\n"); temp1=scanf("%d",&number); } } |