《C语言第七章习题答案.doc》由会员分享,可在线阅读,更多相关《C语言第七章习题答案.doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、7.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果。两个整数由键盘输入。hcf(u,v)int u,v; int a,b,t,r; if(uv) 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,&u,&v); h=hcf(u,v); printf(H.C.F=%dn,h); l=lcd(u,v,h); printf(L.C.d=%dn,l);return(u*v/h);#include void
2、main() int u,v,h,l; scanf(%d,%d,&u,&v); h=hcf(u,v); printf(H.C.F=%dn,h); l=lcd(u,v,h); printf(L.C.D=%dn,l);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=-
3、b/(2*a); q=sqrt(disc)/(2*a);main() float a,b,c; printf(n输入方程的系数a,b,c:n); scanf(%f,%f,%f,&a,&b,&c); printf(n 方程是:% 5.2f*x*x+%5.2f*x+%5.2f=0n,a,b,c); disc=b*b-4*a*c; printf(方程的解是:n); if(disc0) great_than_zero(a,b); printf(X1=%5.2ftX2=%5.2fnn,x1,x2); else if(disc=0) zero(a,b); printf(X1=%5.2ftX2=%5.2fn
4、n,x1,x2); else small_than_zero(a,b,c); printf(X1=%5.2f+%5.2fitX2=%5.2f-%2.2fin,p,q,p,q); 7.3 写一个判断素数的函数,在主函数输入一个整数,输出是否是素数的信息。#include#includevoidmain() int number; scanf(%d,&number); if(prime(number) printf(yes); else printf(no);int prime(number)int number; int flag=1,n;for(n=2;nsqrt(number);n+) if
5、(number%n=0) flag=0;return(flag);7.4 写一个函数,使给定的一个3*3的二维整型数组转置,即行列互换。#define N 3int arrayNN;convert(array)int array33; int i,j,t; for(i=0;iN;i+) for(j=j+i;jN;j+) t=arrayij; arrayij=arrayji; arrayji=t; main()int i,j;printf(输入数组元素:n);for(i=0;iN;i+) for(j=0;jN;j+) scanf(%d,&arrayij;printf(n数组是:n);for(i=
6、0;iN;i+) for(j=0;jN;i+) printf(%5d,arrayij); printf(n);convert(array);printf(转置数组是:n);for(i=0;iN;i+) for(j=0;jN;j+) printf(%5d,arrayij); printf(n);7.5 写一个函数,使输入的一个字符串按反序存放,在主函数中输入和输出字符串。#include #include voidmain() char str100; printf(输入字符串:n); scanf(%s,str); inverse(str); printf(转换后的字符串是: %sn,str);
7、inverse(str)char str;char t;int i,j;for(i=0,j=strlen(str);i(strlen(str)/2;i+,j-) t=stri;stri=stri-1;stri-1=t; 7.6 写出一个函数,将两个字符串连接。char concatenate(string1,string2,string);char string1,string2,string; int i,j; for(i=0;string1i!=;i+) stringi=string1i; for(j=0;string2j!=;j+) stringi+j=string2j; stringi
8、+j=;#includevoid main()char s1100,s2100,s100;printf(n输入字符串1:n);scanf(%s,s1);printf(输入字符串2:n);scanf(%s,s2);concatenate(s1,s2,s);printf(连接后的字符串:%sn,s);7.8 写一个函数,输入一个4位数字,要求输出这4个数字字符,但是两个数字间空一个空格。#includevoid main()char str80;printf(请输入含有四个数字的字符串:n);scanf(%s,str);insert(str);insert(str)char str;int i;f
9、or(i=strlen(str);i0;i-) str2*i=stri; str2*i-1= ;printf(n 结果是:n %s,str);7.9 编写一个函数,由实参传来一个字符串字母、数字、空格和其他字符的个数,在主函数中输入字符串以及输出上述的结果。#includeint alph,digit,space,others;void main() char text80; gets(text); alph=0,digit=0,space=0,others=0; count(text); printf(nalph=%d,digit=%d,space=%d,others=%dn,alph,digit,space,others);count(str)char str; int i; for(i=0;stri!=;i+) if(stri=a&stri=A&stri=0&stri=9) digit+; else if(strcmp(stri, )=0) space+; else others+;