《高级语言程序设计》答案)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1. 输入两个整数,要求用两个函数求出其最大公约数和最小公倍数,最大公约数和最小公倍数都在主函数中输出。#include
int main()
{
int i,j,t;
int max(int,int);
int min(int,int);
scanf("%d%d",&i,&j);
if(i {t=i;i=j;j=t;} printf("%d %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; } 2. 输入4个整数,找出其中最大的数。用函数的嵌套调用来处理。 #include int main() { int max4(int,int,int,int); //对max4的函数声明 int a,b,c,d; scanf("%d%d%d%d",&a,&b,&c,&d); //输入4个数 printf("max=%d\n",max4(a,b,c,d));//调用4个数中的最大者 return 0; } int max4(int a,int b,int c,int d) //定义max4函数 { int max2(int,int); //对max2的函数声明 return max2(max2(max2(a,b),c),d); //调用max2把作为函数值带回main函数} int max2(int a,int b) { return(a>b?a:b); //返回条件表达式的值,即a和b中的大者 } 3. 用递归调用的方法求5!。 #include int main() { int fac(int); int n; scanf("%d",&n); printf("%d!=%d\n",n,fac(n)); return 0; } int fac(int n) { if(n==0||n==1) return 1; else return fac(n-1)*n; } 4. 按以下递归公式求函数的值。 ⎩⎨⎧>+-==) 1(2)1()1(10 fun(n)n n fun n 例如,当给n 输入5时,函数值为18,(要求用递归实现)。 #include int main() { int fun(int); int n; scanf("%d",&n); printf("%d\n",fun(n)); return 0; } int fun(int n) { if(n==1) return 10; else return fun(n-1)+2; } 5. 用递归法将一个整数n 转换成字符串。例如,输入483,应输出字符串“483”,n 的位数不确定,可以是任意位数的整数。 #include void main() {void fun(int); int n; scanf("%d",&n); if(n<0) { n=-n; putchar('-'); } fun(n); puts(""); } void fun(int m) { if(m/10) fun(m/10); putchar(m%10+48); } 6. 写一个函数,完成将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1改后成为1,4,5,6,8。 #include #define N 5 int main() { void fun(int a[]); int a[N],i; for(i=0;i scanf("%d",&a[i]); fun(a); return 0; } void fun(int a[N]) { int t,i; for(i=0;i { t=a[i]; a[i]=a[N-1-i]; a[N-1-i]=t; } for(i=0;i printf("%d ",a[i]); puts(""); } 7. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。 #include #define N 5 #define M 10 int main() { int score_1[N],score_2[M]; int i,fun(int a[],int); 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:%d\n",fun(score_1,N)); printf("average of score_2:%d\n",fun(score_2,M)); return 0; } int fun(int c[],int l) { int aver=0; for(int i=0;i aver+=c[i]; return aver/l; } 8. 编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。#include int main() { void c(char st1[],char st2[]); char s1[100],s2[100]; gets(s1); gets(s2); c(s1,s2); puts(s1); return 0; } void c(char st1[],char st2[]) {