第一范文网 - 专业文章范例文档资料分享平台

C语言程序设计_第三版_谭浩强主编第6—8章课后习题答案

来源:用户分享 时间:2025/6/6 12:46:41 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

编译已通过

7.11/*打印图案*/ #include void main()

{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 void main() { int i,n; char ch[80],tran[80]; printf(\请输入字符:\ gets(ch); printf(\密码是:%s\ i=0; while(ch[i]!='\\0') { if((ch[i]>='A')&&(ch[i]<='Z')) tran[i]=26+64-ch[i]+1+64; else if((ch[i]>='a')&&(ch[i]<='z')) tran[i]=26+96-ch[i]+1+96; else tran[i]=ch[i]; i++; } n=i; printf(\原文是:\ for(i=0;i

/*连接两个字符串(不用'stract')*/

#include void main() { char s1[80],s2[40]; int i=0,j=0; printf(\请输入字符串1:\ scanf(\ printf(\请输入字符串2:\ scanf(\ while(s1[i]!='\\0') i++; while(s2[j]!='\\0') s1[i++]=s2[j++]; s1[i]='\\0'; printf(\连接后字符串为:%s\\n\ }编译已通过 7.14

/*字符串比较*/ #include void main() { int i,resu; char s1[100],s2[100]; printf(\请输入字符串1:\ gets(s1); printf(\请输入字符串2:\ gets(s2); i=0; while((s1[i]==s2[i]) && (s1[i]!='\\0')) i++; if(s1[i]=='\\0' && s2[i]=='\\0')resu=0; else resu=s1[i]-s2[i]; printf(\与%s比较结果是%d\\n\ }编译已通过 7.15

/*字符串复制*/ #include #include void main() { char from[80],to[80]; int i; printf(\请输入字符串1:\

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 字符串函数 #include 输入输出函数 #include

动态存储分配函数 #include #include 清屏函数 #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 prime(int n) {

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 prime(int n) {

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++)

C语言程序设计_第三版_谭浩强主编第6—8章课后习题答案.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c19gfz4pwqt7yogl1itk20zdc523y3q00i11_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top