《高级语言程序设计》参考答案

  • 格式:doc
  • 大小:225.00 KB
  • 文档页数:36

1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。

如:输入36和60,输出为:zdgys=12,zxgbs=180#include<stdio.h>int main(){int i,j,t;int max(int,int);int min(int,int);scanf("%d%d",&i,&j);if(i<j){t=i;i=j;j=t;}printf("zdgys=%d,zxgbs=%d\n",max(i,j),min(i*j,max(i,j)));return 0;}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;}又解:#include<stdio.h>int main(){int i,j,t;int max(int,int);int min(int,int);scanf("%d%d",&i,&j);if(i<j){t=i;i=j;j=t;}printf("zdgys=%d,zxgbs=%d\n",max(i,j),min(i*j,max(i,j)));return 0;}int max(int i,int j){int n;for(n=j;n>=2;n--)if ((i%n==0) && (j%n==0)) break;return n;}int min(int p,int q){return p/q;}2. 输入4个整数,找出其中最大的数。

用函数的嵌套调用来处理。

#include<stdio.h>int max2(int a,int b){return(a>b?a:b);}int max4(int a,int b,int c,int d){return max2(max2(max2(a,b),c),d);}int main(){int a,b,c,d;scanf("%d%d%d%d",&a,&b,&c,&d);printf("max=%d\n",max4(a,b,c,d));return 0;}3. 用递归调用的方法求n!。

如:输入为5,输出为5!=120。

#include<stdio.h>int main(){int fac(int);int n;scanf("%d",&n);printf("%d!=%d\n",n,fac(n));return 0;}int fac(int n){int c;if ((n==0||n==1))c=1;elsec=fac(n-1)*n;return c;}4. 按以下递归公式求函数的值。

⎩⎨⎧>+-==)1(2)1()1(10 fun(n)n n fun n 例如,当给n 输入5时,输出为result is 18,(要求用递归实现,并且输入和输出都要在主函数中实现)。

#include<stdio.h>int main(){int fun(int);int n;scanf("%d",&n);printf("result is %d\n",fun(n));return 0;}int fun(int n){int c;if(n==1)c=10;elsec=fun(n-1)+2;return c;}5. 用递归法将一个整数n 转换成字符串。

(n 为不超过6为的整数)如输入为483,输出为:转换后的字符串为:483;如输入为-13579,输出为:转换后的字符串为:-13579。

注意:输入和输出都要在主函数中实现。

#include<stdio.h>int i=0;char st[6];void main(){void fun(int);int n;scanf("%d",&n);if (n<0){n=-n; st[i++]='-';}fun(n);st[i]=0;printf("转换后的字符串为:%s\n",st);}void fun(int m){if(m/10)fun(m/10);st[i++]=m%10+48;}又解:#include<stdio.h>void main(){void fun(int,char []);int n;char st[6];scanf("%d",&n);fun(n,st);printf("转换后的字符串为:%s\n",st);}void fun(int m,char st[]){ static int i=0;if (m<0) {st[i++]='-';m=-m;}if(m/10) fun(m/10,st);st[i++]=m%10+48;st[i]='\0';}6. 写一个函数,完成将任意一个数组中的值按逆序重新存放。

(数组长度不超过6位)要求:数组内容的内容输入和重新存放后的输出都要在主函数中实现。

如:输入内容为5个整数,分别为8 6 5 4 1,重新存放后输出为:the result is 1,4,5,6,8。

#include<stdio.h>#define N 6void fun(int a[],int n){int t,i;for(i=0;i<n/2;i++){t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}}int main(){ int a[N],i,n;printf("input array length:");scanf("%d",&n);for(i=0;i<n;i++)scanf("%d",&a[i]);fun(a,n);printf("the result is :");for(i=0;i<n;i++)printf("%d,",a[i]);return 0;}7. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。

要求:输入和输出都要在主函数中实现。

如:输入第一个数组内容为:1 2 3 4 5,第二个数组内容为:2 4 6 8 10 12 14 16 18 20,输出分别为3和11。

#include<stdio.h>float fun(int c[],int n){float aver=0;for(int i=0;i<n;i++)aver+=c[i];return aver/n;}int main(){int score_1[5],score_2[10],i;for(i=0;i<5;i++)scanf("%d",&score_1[i]);for(i=0;i<10;i++)scanf("%d",&score_2[i]);printf("average of score_1:%f\n",fun(score_1,5));printf("average of score_2:%f\n",fun(score_2,10));return 0;}8. 编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。

(两个个字符串长度之和不超过100)如输入第一个字符串为I LOVE,第二个字符串为:my motherland,则输出为I LOVE my motherland。

#include<stdio.h>int main(){void connect(char [],char []);char s1[100],s2[100];gets(s1); gets(s2);connect(s1,s2); puts(s1);return 0;}void connect(char st1[],char st2[]){int i=0,k=0;while(st1[++i]);while(st1[i++]=st2[k++]); //循环次数?}又解:#include<stdio.h>#include <string.h>int main(){void connect(char [],char []);char s1[100],s2[100];gets(s1); gets(s2);connect(s1,s2); puts(s1);return 0;}void connect(char st1[],char st2[]){strcpy(st1+strlen(st1)-1,st2);}9. 编写完成fun函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp 函数。

要求:输入和输出都要在主函数中实现。

如:根据输入不同输入内容,对应输出“两个字符串相等”、“第一个字符串大”、“第二个字符串大”。

#include<stdio.h>#include <string.h>int fun(char a[],char b[]){int i;for(i=0;i<strlen(a) || i<strlen(b);i++)if (a[i]>b[i]) return 0;else if (a[i]<b[i]) return 1;return 2;}int main(){char a[100],b[100],i;gets(a);gets(b);i=fun(a,b);switch(i){case 0:printf("第一个字符串大\n");break;case 1:printf("第二个字符串大\n");break;default:printf("两个字符串相等\n");return 0;}10. 编写一个函数,实现在一个升序排列的整型数组{1,3,5,7,14,23,45,87,155,231};中插入任意一个整数的功能,保持整型数组仍然升序排列,并在main函数中调用此函数,输入数据和最后输出都在主函数中实现。