//题目28:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第 //3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后 //问第一个人,他说是10岁。请问第五个人多大? #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:经过阅读,发现f(5)=f(4)+2;f(4)=f(3)+2;f(3)=f(2)+2;f(2)=f(1)+2;所以可以使用递归,也可以直接求出 //f(5)=f(4)+2=f(3)+2+2=f(3)+2*2=f(2)+2+2+2=f(2)+2*3=f(2)+2*(5-2)=f(1)+2*(5-1)=18; //由于太过简单,此处不使用递归 void main(){ printf("第五个人%d岁", 10 + 2 * (5 - 1)); system("pause"); }
//题目29:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。 #define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> #include<math.h> //分析:求它是几位数,先除以10得到一个数,num-这个数,逆序将数字存到数组里递归就OK了 char str3[8] = { 0 }; void run3(int n){ if (n==0) { printf("%c", str3[n]); } else{ printf("%c", str3[n]); run3(n-1); } } void main(){ scanf("%s", str3); int index = 0; while (str3[index] != ‘\0‘){ index++; } printf("这个数字是%d位数\n",index); printf("逆序排列\n"); run3(index); system("pause"); }
时间: 2024-11-03 03:24:41