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

时间:2025-07-09

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

#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("%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<stdio.h>

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<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)

{

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<stdio.h>

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<stdio.h>

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<stdio.h>

#define N 5

int main()

{

void fun(int a[]);

int a[N],i;

for(i=0;i<N;i++)

scanf("%d",&a[i]);

fun(a);

return 0;

}

void fun(int a[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;

}

for(i=0;i<N;i++)

printf("%d ",a[i]);

puts("");

}

7. 编写一个函数,用来分别求数组score_1(有5个元素)和数组score_2(有10个元素)各元素的平均值。

#include<stdio.h>

int main()

{

float average(int c[],int n);

int i,score_1[5],score_2[10];

float p,q;

for(i=0;i<5;i++)

scanf("%d",&score_1[i]);

for(i=0;i<10;i++)

scanf("%d",&score_2[i]);

p=average(score_1,5);

q=average(score_2,10);

printf("%f\n%f\n",p,q);

return 0;

}

float average(int c[],int n)

{ float m=0.00;

int i;

for(i=0;i<n;i++)

m=m+c[i];

return(m/n);

}8. 编写一个函数,实现将两个字符串连接起来,并在main函数中调用此函数,不要调用系统提供的strcat函数。

#include<stdio.h>

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[])

{

int i=0,k=0;

while(st1[++i]);

while(st1[i++]=st2[k++]);

}

9. 编写一个函数,比较两个字符串的大小,并在main函数中调用此函数,不要调用strcmp函数。

#include<stdio.h>

int main()

{

char a[100],b[100];

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]<b[i])

{puts(b);break;}

else

continue;

}

}

10. 编写一个函数,实现在一个升序排列的整型数组中插入一个整数的功能,

主函数中实现。

#include<stdio.h>

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("input an integer:");

scanf("%d",&c);

fun(a,c);

for(i=0;i<11;i++)

printf("%d ",a[i]);

printf("\n");

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(t<a[i])

break;

for(j=10;j>i;j--)

a[j]=a[j-1];

a[i]=t;

并在main函数中调用此函数,输入数据和最后输出都在

}

}

11. 写一个判断素数的函数,在主函数输入一个整数,是素数时输出yes,否则输出no,结果要求在主函数中输出。

#include<stdio.h> …… 此处隐藏:11205字,全部文档内容请下载后查看。喜欢就下载吧 ……

《高级语言程序设计》答案.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219