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

  • 格式:doc
  • 大小:156.50 KB
  • 文档页数:20

下载文档原格式

  / 20
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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[])

{