资源描述:
《C语言题及答案Microsoft Word 文档》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.问题简介:(1)编写一个函数,求两个正整数的最大公约数和最小公倍数。(编程要求:必须使用函数的递归调用)(2)编写一个函数,从主函数得到任意一个三个数,由函数判断以这三个数为边长的三角形是否存在,如果存在输出三角形的面积(结果保留两位小数)。(3)编写一个函数,从主函数得到一个5位数,判断这个5位数是否为回文数。(4)编写一个函数,函数功能是从三个数中找到最大数。(5)有5个人坐在一起,问第五个人多少岁,他说比第四个人大2岁。问第四个人多少岁?他说比第三个人大2岁。问第三个人多少岁,他说比第二个人
2、大2岁。问第二个人多少岁,他说比第一个人大2岁。最后问第一个人,他说是10岁。请问第五个人多大?(编程要求:必须使用函数的递归调用)(6)编写一个函数,函数功能是:将两个两位数的正整数a、b合并成一个正整数放在c中。(选作)合并的方法是:将a数的十位和个位数依次存放在c数的个位和百位上,b数的十位和个位数依次存放在c数的十位和千位上。例如:当a=45,b=12时,调用函数后,c=2514。(7)编写一个函数,函数的功能为:根据形参m计算如下公式的值。(选作)例如,若输入5,则应输出2.283334。(
3、8)编写一个函数,函数的功能为:输出斐波那契数列:1,1,2,3,5,8,13,21,……。(编程要求:必须使用函数的递归调用)2.C语言源程序代码:(1)#includeintgys(intx,inty){if(x%y==0)returny;elsereturngys(y,x%y);}voidmain(){intm,n;printf("输入俩正数:");scanf("%d,%d",&m,&n);printf("%d和%d的最大公约数为%d",m,n,gys(m,n));prin
4、tf("%d和%d的最小公倍数为%d",m,n,m*n/gys(m,n));}(2)#include#includevoidfun(floata,floatb,floatc){floatarea,s;s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));if((a+b)>c&&(a-b)5、{floata,b,c;printf("请输入三个数:");scanf("%f,%f,%f",&a,&b,&c);fun(a,b,c);}(3)#includevoidfun(intn){inta,b,c,d;a=n/10000;b=(n%1000)/1000;c=(n%100)/100;d=n%10;if(a==d&&b==c)printf("%d",n);}voidmain(){inti,k=0;for(i=10000;i<=99999;i++){fun(i);k=k+1;i
6、f(k==10000){getchar();k=0;}}}(4#includeintmax(intx,inty){intz;z=x>y?x:y;return(z);}intmain(){inta,b,c,m;printf("请输入三个数:");scanf("%d,%d,%d",&a,&b,&c);m=max(a,max(b,c));printf("max=%d",m);return(0);})(5)#includeintage(int);intmain(){
7、printf("%d",age(5));return0;}intage(intn){intc;if(n==1)c=10;elsec=age(n-1)+2;returnc;}(6)#includevoidmain(){inta,b,c;printf("输入两个两位数");scanf("%d,%d",&a,&b);if(c=(b%10)*1000+(a%10)*100+(b/10)*10+(a/10))printf("%d",c);}(7)#includefloat
8、sum(intm){floatt=0;inti;for(i=1;i<=m;i++)t=t+1.0/i;return(t);}main(){intn;floatk;printf("输入一个数:");scanf("%d",&n);k=sum(n);printf("%f",k);}(8)#includeintf(intn);intmain(){intn;printf("输出数列:");scanf("%d",&n);for(n=1;n<