《高级语言程序设计》答案
时间:2025-07-09
时间: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字,全部文档内容请下载后查看。喜欢就下载吧 ……
下一篇:2#机主厂房脚手架施工方案