c语言第二版第七章答案

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

7.1 写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。

参考程序如下:

#include

int aa(int m,int n) //求最大公约数

{ int k;

if(m

{k=m;m=n;n=k;}

k=m%n;

while(k) //辗转求余法

{ m=n;

n=k;

k=m%n;

}

return(n); //n即为最大公约数

}

int bb(int m,int n) //求最小公倍数

{

int k;

k=aa(m,n); //调用aa函数,返回两数的最大公约数

return(m*n/k);

}

main()

{

int m, n,yy,kk;

printf("Input m and n:");

scanf("%d%d",&m,&n);

yy=aa(m,n);

kk=bb(m,n);

printf("最小公倍数=%d\n",kk);

printf("最大公约数=%d\n",yy);

}

7.3 写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。

参考程序如下:

#include

int aa(int n)

{

int i;

int flag; // flag标志

for(i=2;i<=sqrt(n);i++)

{ if(n%i==0) break;

}

if(i>sqrt(n)) flag=1;

else flag=0;

return(flag);

}

main()

{ int n,flag; // flag标志

printf("\nInput n:");

scanf("%d",&n);

flag=aa(n);

if(flag==1) printf("%d is a prime number.\n",n);

else printf("%d is not a prime number.\n",n);

}

7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。

参考程序如下:

#include

main()

{ int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

int b[3][3],i,j;

printf("array a:\n");

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

{ for(j=0;j<3;j++)

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

printf("\n");

}

printf("After switch:\n");

aa(a,b);

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

{ for(j=0;j<3;j++)

printf("%5d",b[i][j]);

printf("\n");

}

}

void aa(int a[3][3],int b[3][3])

{ int i,j;

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

for(j=0;j<3;j++)

b[j][i]=a[i][j];

}

说明:当数组名作函数参数时,形参也必须是同类型的数组名,形参数组名的实质是一个指针变量,存放的第0行第0列的元素的地址;这样,子函数中a[i][j]就是主函数中的a[i][j];

7.11写一个函数,用“起泡法”对输入的10个字符按由小到大的顺序排列

参考程序如下:

main()

{

char s[10];

int i;

void sort(char ss[],int n);

printf("\nInput 10 character:\n");

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

scanf("%c",&s[i]);

printf("\nbefore sort:");

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

printf("%c ",s[i]);

printf("\nAfter sort:");

sort(s,10);

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

printf("%c ",s[i]);

}

void sort(char a[],int n) //起泡法

{

int i,j;

char t;

for(i=1;i<=9;i++)

for(j=0;j

if(a[j]>a[j+1])

{ t=a[j];a[j]=a[j+1];a[j+1]=t;}

}

7.17用递归法将一个整数n转换成字符串。例如,输入483,应输出字符串“483”。n的位数不确定,可以是任意位数的整数。

参考程序如下:

#include

main()

{

int n;

void aa(int n);

printf("Input a integar:");

scanf("%d",&n);

printf("The result is:");

if(n<0) {printf("-"); n=-n;} //如果是负数,先输出符号

printf("The result is:");

aa(n);

}

void aa(int n)

{

相关文档
最新文档