【程序26】 題目:利用遞歸方法求5!。
1. 程序分析:遞歸公式:fn=fn_1*4!
2. 程序源代碼:
#include "stdio.h"
#include "conio.h"
main(){
int i;
int fact();
for(i=0;i<5;i++)
printf("\40:%d!=%d\n",i,fact(i));
getch();}int fact(j)int j;{
int sum;
if(j==0)
sum=1;
else
sum=j*fact(j-1);
return sum;
}
——————————————————————————————————————
【程序27】 題目:利用遞歸函數(shù)調(diào)用方式,將所輸入的5個(gè)字符,以相反順序打印出來(lái)。
1. 程序分析:
2. 程序源代碼:
#include "stdio.h"
#include "conio.h"
main(){
int i=5;
void palin(int n);
printf("\40:");
palin(i);
printf("\n");
getch();}void palin(n)int n;{
char next;
if(n<=1)
{
next=getchar();
printf("\n\0:");
putchar(next);
}
else
{
next=getchar();
palin(n-1);
putchar(next);
}
}
——————————————————————————————————————
【程序28】 題目:有5個(gè)人坐在一起,問(wèn)第五個(gè)人多少歲?他說(shuō)比第4個(gè)人大2歲。問(wèn)第4個(gè)人歲數(shù),他說(shuō)比第 3個(gè)人大2歲。問(wèn)第三個(gè)人,又說(shuō)比第2人大兩歲。問(wèn)第2個(gè)人,說(shuō)比第一個(gè)人大兩歲。最后問(wèn)第一個(gè)人,他說(shuō)是10歲。請(qǐng)問(wèn)第五個(gè)人多大?
1. 程序分析:利用遞歸的方法,遞歸分為回推和遞推兩個(gè)階段。要想知道第五個(gè)人歲數(shù),需知道第四人的歲數(shù),依次類(lèi)推,推到第一人(10歲),再往回推。
2. 程序源代碼:
#include "stdio.h"
#include "conio.h"
age(n){
int n;
int c;
if(n==1) c=10;
else c=age(n-1)+2;
return(c);
}
main(){
printf("%d",age(5));
getch();
}
——————————————————————————————————————
【程序29】 題目:給一個(gè)不多于5位的正整數(shù),要求:一、求它是幾位數(shù),二、逆序打印出各位數(shù)字。
1. 程序分析:學(xué)會(huì)分解出每一位數(shù),如下解釋:()
2. 程序源代碼:
#include "stdio.h"
#include "conio.h"
main( ){
long a,b,c,d,e,x;
scanf("%ld",&x);
a=x/10000;/*分解出萬(wàn)位*/
b=x%10000/1000;/*分解出千位*/
c=x%1000/100;/*分解出百位*/
d=x%100/10;/*分解出十位*/
e=x%10;/*分解出個(gè)位*/
if (a!=0) printf("there are 5, %ld %ld %ld %ld %ld\n",e,d,c,b,a);
else if (b!=0) printf("there are 4, %ld %ld %ld %ld\n",e,d,c,b);
else if (c!=0) printf(" there are 3,%ld %ld %ld\n",e,d,c);
else if (d!=0) printf("there are 2, %ld %ld\n",e,d);
else if (e!=0) printf(" there are 1,%ld\n",e);
getch();
}
——————————————————————————————————————
【程序30】 題目:一個(gè)5位數(shù),判斷它是不是回文數(shù)。即12321是回文數(shù),個(gè)位與萬(wàn)位相同,十位與千位相同。
1. 程序分析:同29例
2. 程序源代碼:
#include "stdio.h"
#include "conio.h"
main( ){
long ge,shi,qian,wan,x;
scanf("%ld",&x);
wan=x/10000;
qian=x%10000/1000;
shi=x%100/10;
ge=x%10;
if(ge==wan&&shi==qian)/*個(gè)位等于萬(wàn)位并且十位等于千位*/
printf("this number is a huiwen\n");
else
printf("this number is not a huiwen\n");
getch();
}
——————————————————————————————————————
更多關(guān)于物聯(lián)網(wǎng)培訓(xùn)的問(wèn)題,歡迎咨詢千鋒教育在線名師,如果想要了解我們的師資、課程、項(xiàng)目實(shí)操的話可以點(diǎn)擊咨詢課程顧問(wèn),獲取試聽(tīng)資格來(lái)試聽(tīng)我們的課程,在線零距離接觸千鋒教育大咖名師,讓你輕松從入門(mén)到精通。