编译已通过
7.11/*打印图案*/ #include
{static char a[5]={'*','*','*','*','*'}; int i,j,k;
char space=' '; for(i=0;i<=5;i++) {printf(\
for(j=1;j<=3*i;j++) printf(\ for(k=0;k<=5;k++) printf(\ } } 7.12
/*译电文*/
#include /*连接两个字符串(不用'stract')*/ #include /*字符串比较*/ #include /*字符串复制*/ #include scanf(\ printf(\请输入字符串2:\ scanf(\ for(i=0;i<=strlen(from);i++) to[i]=from[i]; printf(\复制字符串为:%s\\n\ } 第8章 函数参考答案 【知识要点】 C语言的基本组成单位函数。 C是由一个且仅有一个主函数( main)和若干个子函数组成.子函数可有可无。 一个C语言源程序执行,从主函数开始,以主函数结束。 C语言称为函数式语言,即用户可根据解决问题的算法编成一个相对独立的函数模块,然后采用调用的方法来使用函数。 采用了函数模块式的结构的特点:程序的层次结构清晰,便于程序的编写、阅读和调试。 C语言提供了极为丰富的库函数,使用这些库函数时,在源程序的头部使用文件包含命令。如: 数学函数 #include 动态存储分配函数 #include 函数的值: 函数的值的数据类型由函数定义时所决定的。调用函数时可有返回值和无返回值两种。有返回值的函数在函数体内必有一条或多条 return 语句,无返回值的函数定义为void类型,且在函数体无return 语句。 函数调用时参数的传递:主调函数和被调函数之间数据传递有两种,数值传递和地址传递。 【习题参考答案】 8.1写两个函数,分别求两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 【解析】用碾转相除法求最大公约数。最小公倍数=两个整数之积/最大公约数。 #include int gcf(int x,int y) /*求两整数的最大公约数*/ {int t,r; if (x {t=x;x=y;y=t;} while ((r=x%y)!=0) { x=y; y=r; } return y; } int lcm(int x,int y,int h) /*求两整数的最小公倍数*/ { return(x*y/h); } void main ( ) { int a,b,df,sc; /* df:所求的最大公约数,sc:所求的最小公倍数*/ printf(\ scanf(“%d%d”,&a,&b); df=gcf(a,b); printf(“G.C.F=%d\\n”,df); sc=lcm(a,b,df); printf(“L.C.M=%d\\n”,sc); } 8.2 求方程ax2+bx+c=0的根,用3个函数分别求当b2-4ac大于0,等于0和小于0时的根,并输出结果。从主函数输入a,b,c的值。 # include void real_root(float a,float b,float disc) /*求方程的两个不相同的实根*/ {float x1,x2; x1=(-b+sqrt(disc))/(2*a); x2=(-b-sqrt(disc))/(2*a); printf(\} void equal_root(float a,float b) /*求方程的两个相同的实根*/ { float x1,x2; x1=x2=(-b)/(2*a); printf(\} void imaginary_root(float a,float b,float disc) /*求方程的两个不相同的虚根*/ { float p,q; p=-b/(2*a); q=sqrt(disc)/(2*a); printf(\} void main ( ) { float a,b,c,disc; printf(\ scanf(\ disc=b*b-4*a*c; if (disc>0) real_root(a,b,disc); else if (disc==0) equal_root(a,b); else imaginary_root(a,b,disc); } 8.3写一个判素数的函数,在主函数输入一个整数,输出是否素数的信息。 【解析】:素数(质数):只能被1和该整数本身整除的数为素数。换句话说,只有两个正因数(1和自己)的自然数即为素数。 #include int flag=1,i; /*flag:标识变量*/ for (i=2;i<=n/2 && flag==1;i++) if (n%i==0) flag=0; return flag ; } void main ( ) { int n; printf(\ scanf(\ if (prime(n)) printf(\ else printf(\} 【扩展】求100以内的所有的素数。 #include int flag=1,i; /*flag:标识变量*/ for (i=2;i<=n/2 && flag==1;i++) if (n%i==0) flag=0; return flag ; } void main ( ) { int a[100],i,j=0; for(i=2;i<=100;i++)
相关推荐: