1. 设定一个任意数字串,数出这个数中的偶数个数,奇数个数,及这个数中所包含的所有位数的总数,将答案按 “偶-奇-总” 的位序,排出得到新数。重复进行,最后会得到 123。
解法一:
1 #include<iostream> 2 #include<string.h> 3 #include<cstdio> 4 using namespace std; 5 int main() 6 { 7 char num[100]; 8 for(int i=0; i<100; i++) //初始化数组 9 { 10 num[i] = ‘a‘; 11 } 12 int count = 0; 13 int oddCount = 0; 14 int evenCount = 0; 15 int totalNum = 0; 16 printf("请输入数字:"); 17 char input; 18 while((input =getchar())!=‘ ‘&&(input!=‘\n‘)) 19 { 20 num[count] = input; 21 count++; 22 23 } 24 string LinkStr = "";//最后拼接成的字符串 25 int step = 0; //总共步数 26 while(LinkStr!="123") 27 { 28 for(int j=0; j<100 && num[j]!=‘a‘; j++) 29 { 30 int k = num[j]-‘0‘; //将char转化成int 31 if(k%2) 32 { 33 oddCount++; 34 } 35 else 36 { 37 evenCount++; 38 } 39 } 40 totalNum = oddCount+evenCount; 41 42 /*下面是将totalcount,oddCount和evenCount组合成 “偶-奇-总”的形式*/ 43 44 char t1[100],t2[100],t3[100]; 45 string temp1,temp2,temp3; 46 sprintf(t1,"%d",evenCount); 47 sprintf(t2,"%d",oddCount); 48 sprintf(t3,"%d",totalNum); 49 temp1 = t1; 50 temp2 = t2; 51 temp3 = t3; 52 string temp = temp1+temp2; 53 LinkStr = temp+temp3; 54 step++; 55 cout<<"Step"<<step<<":"; 56 cout<<"now the number is:"<<LinkStr<<endl; 57 58 /*重置三个计数变量*/ 59 totalNum = 0; 60 oddCount = 0; 61 evenCount = 0; 62 63 /*更新num数组*/ 64 for(int i=0; i<20; i++) 65 { 66 num[i] = ‘a‘; 67 } 68 int LinkStrSize = LinkStr.length(); 69 for(int i = 0; i<LinkStrSize; i++) 70 { 71 num[i] = LinkStr[i]; 72 } 73 } 74 printf("输出结果能为123"); 75 }
解法二:
1 #include <iostream> 2 using namespace std; 3 4 int media(int num) 5 { 6 int m = 1; 7 while(num) 8 { 9 num /= 10; 10 m *= 10; 11 } 12 13 return m; 14 } 15 16 int main() 17 { 18 int numb, odd = 0, even = 0, lastNumb = 0; 19 cout<<"please input the number:"; 20 cin >> numb; 21 while(numb != lastNumb || numb != 123) 22 { 23 lastNumb = numb; 24 odd = 0; 25 even = 0; 26 while(numb) 27 { 28 if((numb % 10) %2) 29 odd++; 30 else 31 even++; 32 numb /= 10; 33 } 34 numb = odd + even; 35 numb = media(numb) * odd + numb; 36 numb = media(numb) * even + numb; 37 cout << "now number is:" << numb << endl; 38 } 39 cout<< numb; 40 return 0; 41 }
时间: 2024-10-23 07:01:11