当前位置:首页 > 《高级语言程序设计》答案
1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。 #include int max(int i,int j) { int t; while(j) { t=i%j; i=j; j=t; } return i; } int min(int p,int q) { return p/q; } 2. 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。 #include int max2(int a,int b) { return(a>b?a:b); //返回条件表达式的值,即a和b中的大者 } 3. 用递归调用的方法求5!。 #include 第 1 页 共 2 页 printf(\ return 0; } int fac(int n) { if(n==0||n==1) return 1; else return fac(n-1)*n; } 4. 按以下递归公式求函数的值。 ?10fun(n) ???fun(n?1)?2(n?1)(n?1) 例如,当给n输入5时,函数值为18,(要求用递归实现)。 #include int main() { int fun(int); int n; scanf(\ printf(\ return 0; } int fun(int n) { if(n==1) return 10; else return fun(n-1)+2; } 5. 用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”,n的位数不确定,可以是任意位数的整数。 #include scanf(\ if(n<0) { n=-n; putchar('-'); } fun(n); puts(\} void fun(int m) { if(m/10) fun(m/10); putchar(m+48); } 6. 写一个函数,完成将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。 #include 第 2 页 共 2 页 void fun(int a[]); int a[N],i; for(i=0;i void fun(int a[N]) { int t,i; for(i=0;i for(i=0;i 7. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。 #include float average(int c[],int n) { float m=0.00; int i; for(i=0;i }8. 编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。 #include void c(char st1[],char st2[]) { int i=0,k=0; 第 3 页 共 2 页 while(st1[++i]); while(st1[i++]=st2[k++]); } 9. 编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp函数。 #include void fun(char a[],char b[]); gets(a); gets(b); fun(a,b); return 0; } void fun(char a[],char b[]) { for(int i=0;;i++) { if(a[i]>b[i]) {puts(a);break;} else if(a[i] 10. 编写一个函数,实现在一个升序排列的整型数组中插入一个整数的功能,主函数中实现。 #include int a[11]={1,3,5,7,14,23,45,87,155,231}; int main() { int c,i; void fun(int a[],int c); printf(\ scanf(\ fun(a,c); for(i=0;i<11;i++) printf(\ printf(\ return 0; } void fun(int a[],int t) { int i,j; if(t>a[9]) a[10]=t; else { for(i=0;i<11;i++) if(ti;j--) a[j]=a[j-1]; a[i]=t; 第 4 页 共 2 页 并在main函数中调用此函数,输入数据和最后输出都在
共分享92篇相关文档