程序猿/媛,你想擺攤嗎?那麼點擊擺攤吧,程序員加入吧💪💪
習題26
利用遞歸方法求5!。
實現思路:
使用遞歸。
代碼如下:
#include<stdio.h>
int main(){
int rec(int n);
int result = rec(5);
printf("5! = %d\n", result);
return 0;
}
int rec(int n){
if(n == 1 || n == 0){
return 1;
}
else{
return n * rec(n - 1);
}
}
打印:
5! = 120
習題27
利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
實現思路:
使用遞歸。
代碼如下:
#include<stdio.h>
int main(){
void rev(int n);
printf("Please input 5 characters:\n");
rev(5);
return 0;
}
void rev(int n){
char ch;
if(n <= 1){
ch = getchar();
printf("Result is as follows:\n");
putchar(ch);
}
else{
ch = getchar();
rev(n - 1);
putchar(ch);
}
}
打印:
Please input 5 characters:
acdfg
Result is as follows:
gfdca
習題28
有 5 個人坐在一起:
問第5個人多少歲,他說比第 4 個人大 2 歲;問第 4 個人歲數,他說比第 3 個人大 2 歲;問第3個人,又說比第 2 人大兩歲;問第 2 個人,說比第1個人大兩歲;最後問第1個人,他說是 10 歲。
請問第五個人多大?
實現思路:
可以簡單倒推、使用循環即可。
這裏爲了熟悉遞歸的思想,因此採用遞歸方法實現:
要想知道第5個人歲數,需知道第四人的歲數,依次類推,推到第1人(10歲),再往回推。
代碼如下:
#include<stdio.h>
int main(){
int age(int n);
int a = age(5);
printf("The age of the 5th person is %d\n", a);
return 0;
}
int age(int n){
if(n == 1){
return 10;
}
else{
return age(n - 1) + 2;
}
}
打印:
The age of the 5th person is 18
習題29
給一個不多於 5 位的正整數,要求:
一、求它是幾位數;
二、逆序打印出各位數字。
實現思路:
逐位獲取並判斷。
代碼如下:
#include<stdio.h>
int main(){
int a, b, c, d, e, num;
printf("Please enter a five digit number:\n");
scanf("%d", &num);
a = num / 10000;
b = num % 10000 / 1000;
c = num % 1000 / 100;
d = num % 100 / 10;
e = num % 10;
if(a != 0){
printf("This number is five digits\nThe reversed num is %d, %d, %d, %d, %d\n", e, d, c, b, a);
}
else if(b != 0){
printf("This number is four digits\nThe reversed num is %d, %d, %d, %d\n", e, d, c, b);
}
else if(c != 0){
printf("This number is three digits\nThe reversed num is %d, %d, %d\n", e, d, c);
}
else if(d != 0){
printf("It's a two digit number\nThe reversed num is %d, %d\n", e, d);
}
else{
printf("This number is one digit\nThe reversed num is %d\n", e);
}
return 0;
}
打印:
Please enter a five digit number:
19537
This number is five digits
The reversed num is 7, 3, 5, 9, 1
習題30
一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。
實現思路:
獲取每一位的數,並比較判斷。
代碼如下:
#include<stdio.h>
int main(){
int a, b, d, e, num;
printf("Please enter a five digit number:\n");
scanf("%d", &num);
a = num / 10000;
b = num % 10000 / 1000;
d = num % 100 / 10;
e = num % 10;
if(a == e && b == d){
printf("%d is a palindrome number\n", num);
}
else{
printf("%d is not a palindrome number\n", num);
}
return 0;
}
打印:
Please enter a five digit number:
12321
12321 is a palindrome number