资源描述:
《C语言经典编程(九)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、C语言经典编程(九)【程序1】题目:利用递归方法求5!。1.程序分析:递归公式:fn=fn_1*4!2.程序源代码:#include"stdio.h"main(){inti;intfact();for(i=0;i<5;i++) printf("40:%d!=%d",i,fact(i));}intfact(j)intj;{intsum;if(j==0) sum=1;else sum=j*fact(j-1);returnsum;}============================================================【程序2】题目:利用递归函数
2、调用方式,将所输入的5个字符,以相反顺序打印出来。1.程序分析:2.程序源代码:#include"stdio.h"main(){inti=5;voidpalin(intn);printf("40:");palin(i);printf("");}voidpalin(n)intn;{charnext;if(n<=1){ next=getchar(); printf(" :"); putchar(next);}else{ next=getchar(); palin(n-1); putchar(next);}}================================
3、============================【程序3】题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?1.程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。2.程序源代码:age(n)intn;{intc;if(n==1)c=10;elsec=age(n-1)+2;return(c);}main(){printf("
4、%d",age(5));}============================================================【程序4】题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。1.程序分析:学会分解出每一位数,如下解释:(这里是一种简单的算法,师专数002班赵鑫提供)2.程序源代码:main(){longa,b,c,d,e,x;scanf("%ld",&x);a=x/10000;/*分解出万位*/b=x%10000/1000;/*分解出千位*/c=x%1000/100;/*分解出百位*/d=x%100/10;/*分解出
5、十位*/e=x%10;/*分解出个位*/if(a!=0)printf("thereare5,%ld%ld%ld%ld%ld",e,d,c,b,a);elseif(b!=0)printf("thereare4,%ld%ld%ld%ld",e,d,c,b); elseif(c!=0)printf("thereare3,%ld%ld%ld",e,d,c); elseif(d!=0)printf("thereare2,%ld%ld",e,d); elseif(e!=0)printf("thereare1,%ld",e);}=============
6、===============================================【程序5】题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。 1.程序分析:同上例。2.程序源代码:main(){longge,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)/*个位等于万位并且十位等于千位*/ printf("thisnumberisahuiwen");els
7、e printf("thisnumberisnotahuiwen");}============================================================【程序6】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。2.程序源代码:main(){inti,j,k;printf("");for(i=1;i<5;i++)