您的当前位置:首页C语言第七章习题答案

C语言第七章习题答案

2022-09-17 来源:小侦探旅游网


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

hcf(u,v)

int u,v;

{ int a,b,t,r;

if(u>v)

{ t=u;u=v;v=t; }

a=u;b=v;

while((r=b%a)!=0)

{ b=a;a=r; }

return(a);

}

lcd(u,v,h)

int u,v,h;

{ int u,v,h,l;

scanf(\"%d,%d\

h=hcf(u,v);

printf(\"H.C.F=%dn\

l=lcd(u,v,h);

printf(\"L.C.d=%dn\

return(u*v/h);

}

#include

void main()

{ int u,v,h,l;

scanf(\"%d,%d\

h=hcf(u,v);

printf(\"H.C.F=%dn\

l=lcd(u,v,h);

printf(\"L.C.D=%dn\

}

7.2 求方程根

float x1,x2,disc,p,q;

greater_than_zero(a,b)

float a,b;

{

x1=(-b+sqrt(disc))/(2*a);

x2=(-b-sqrt(disc))/(2*a);

}

equal_to_zero(a,b)

float a,b;

{ x1=x2=(-b)/(2*a);}

smaller_than_zero(a,b)

float a,b;

{ p=-b/(2*a);

q=sqrt(disc)/(2*a);

}

main()

{

float a,b,c;

printf(\"n输入方程的系数a,b,c:n\");

scanf(\"%f,%f,%f\

printf(\"n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n\

disc=b*b-4*a*c;

printf(\"方程的解是:n\");

if(disc>0)

{ great_than_zero(a,b);

printf(\"X1=%5.2ftX2=%5.2fnn\

}

else if(disc==0)

{

zero(a,b);

printf(\"X1=%5.2ftX2=%5.2fnn\

}

else

{

small_than_zero(a,b,c);

printf(\"X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin\

}

}

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

#include

#include

void main()

{ int number;

scanf(\"%d\

if(prime(number))

printf(\"yes\");

else

printf(\"no\");

}

int prime(number)

int number;

{ int flag=1,n;

for(n=2;nif(number%n==0)

flag=0;

return(flag);

}

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

#define N 3

int array[N][N];

convert(array)

int array[3][3];

{ int i,j,t;

for(i=0;ifor(j=j+i;j{ t=array[i][j];

array[i][j]=array[j][i];

array[j][i]=t;

}

}

main()

{

int i,j;

printf(\"输入数组元素:n\");

for(i=0;ifor(j=0;jscanf(\"%d\j];

printf(\"n数组是:n\");

for(i=0;i{ for(j=0;jprintf(\"%5d\j]);

printf(\"n\");

}

convert(array);

printf(\"转置数组是:n\");

for(i=0;i{ for(j=0;jprintf(\"%5d\j]);

printf(\"n\");

}

}

7.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。

#include

#include

void main()

{

char str[100];

printf(\"输入字符串:n\");

scanf(\"%s\

inverse(str);

printf(\"转换后的字符串是: %sn\

}

inverse(str)

char str[];

{

char t;

int i,j;

for(i=0,j=strlen(str);i<(strlen(str)/2;i++,j--)

{

t=str[i];

str[i]=str[i-1];

str[i-1]=t;

}

}

7.6 写出一个函数,将两个字符串连接。

char concatenate(string1,string2,string);

char string1[],string2[],string[];

{

int i,j;

for(i=0;string1[i]!='';i++)

string[i]=string1[i];

for(j=0;string2[j]!='';j++)

string[i+j]=string2[j];

string[i+j]='';

}

#include

void main()

{

char s1[100],s2[100],s[100];

printf(\"n输入字符串1:n\");

scanf(\"%s\

printf(\"输入字符串2:n\");

scanf(\"%s\

concatenate(s1,s2,s);

printf(\"连接后的字符串:%sn\

}

7.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但是两个数字间空一个空格。

#include

void main()

{

char str[80];

printf(\"请输入含有四个数字的字符串:n\");

scanf(\"%s\

insert(str);

}

insert(str)

char str[];

{

int i;

for(i=strlen(str);i>0;i--)

{ str[2*i]=str[i];

str[2*i-1]=' ';

}

printf(\"n 结果是:n %s\

}

7.9 编写一个函数,由实参传来一个字符串字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。

#include

int alph,digit,space,others;

void main()

{ char text[80];

gets(text);

alph=0,digit=0,space=0,others=0;

count(text);

printf(\"nalph=%d,digit=%d,space=%d,others=%dn\

}

count(str)

char str[];

{ int i;

for(i=0;str[i]!='';i++)

if((str[i]>='a'&&str[i]<='z')||(str[i]>='A'&&str[i]<='Z'))

alph++;

else if(str[i]>='0'&&str[i]<='9')

digit++;

else if(strcmp(str[i],' ')==0)

space++;

else

others++;

}

因篇幅问题不能全部显示,请点此查看更多更全内容