ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:102.85KB ,
资源ID:6736215      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6736215.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言课后题编程答案.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言课后题编程答案.docx

1、C语言课后题编程答案C 语 言 课 后 题 编 程 答 案所有章节的课后习题的选择题和填空题大家必须熟练掌握,编程题掌握到第九章即可。 希望大家通过课后的编程题熟悉典型的编程算法,掌握基本的编程思路,注意编程细节。第3章3-17 编写程序,把 560分钟换算成用小时和分钟表示,然后进行输出。#includemain()int h,m;h=560/60;m=560%60;printf( 560分钟可转换成d小时d分钟”,h,m);程序总结:1)只要在程序中用到系统提供的库函数,必须把库函数所在的头文件用 #include 命令包含进来。 否则库函数的使用无效。 输入输出库函数的头文件是: ;数学

2、函数的头文件是: ;字符处理函数的头文件是:字符串处理函数的头文件是: 。2)注意 C 语言中的“ /”和“% ”两种运算符。“/”的运算结果取决于两操作数的类型。比如: 1/2=0(与数学中不同,结果与操作数的类型一致,所以结果只取商值) , 2=(除之前 2要自动类型转换成,因为只有同类型的操作数才能进行除运算 ), 1/=, =。“%”的两个操作数都必须是整数。(3) printf( 560分钟可转换成%d小时%d分钟”,h,m); printf第一个参数要尽量详细, 这样可以提高输出结果的可读性, 恰当好处的添 加提示性信息,可以提高程序的质量。4)int h,m; 变量起名要有艺术性

3、,尽量做到见名知意。3-18 编写程序,输入两个整数, 1500和 350,求出它们的商和余数并进行输出。#include main() int a,b,m,n;printf( “请输入两个整数 :n ”);scanf(“%d%d ”,&a,&b);m=a/b;n=a%b;printf( %d 除以 d 商 d 余d ” ,a,b,m,n);程序总结:(1) printf( “请输入两个整数 :n ” ) ;这是一个提示信息,避免用户在看到黑屏后不知所措。2)scanf(“%d%d ”,&a,&b); scanf 的功能是用户要通过键盘输入数 据,赋值给各输入项。注意每个输入项前面必须要加 &

4、 符号。 %d 与输入项的个数要一致,类型要匹配。 %d 与 int 一致, %f 与 float 对 应,lf与double匹配,%c与char对应。3-19 编写程序, 读入三个双精度数, 求它们的平均值并保留此平均 值小数点后一位数, 对小数点后第二位数进行四舍五入, 最后输出结 果。#include main() double a,b,c,x;printf( “请输入三个双精度数 :n ”);scanf(“%lf%lf%lf ”,&a,&b,&c);x=(a+b+c)/3;x=x*10;x=x+;x=(int)x;x=x/10;printf( “x=%.1lf ”,x);程序总结:(1

5、) double a,b,c,x; 和 scanf(“%lf%lf%lf ”,&a,&b,&c); 有直接 联 系, %lf 与输入项 a,b,c 在定义时所用的类型 double 一致。(2) %.1lf, .1的意思是结果仅保留小数点后一位小数。3-20 编写程序,读入三个整数给 a、 b 、 c ,然后交换他们中的数,把a中原来的值给b,把b中原来的值给C,把c中原来的值给a, 然后输出 a,b,c。#include main()int a,b,c,t;t=a;a=c;c=b;b=t;程序总结: 交换两个变量的值和三个变量的值,都需要借助另外一个变量。第4章4-21 若 a 的值小于 1

6、00,请将以下选择结构改写成由 switch 语句构 成的选择结构。if(a30) m=1;else if(a40) m=2;else if(a50) m=3;else if(a60) m=4;else m=5;#include main() int a;switch(a/10) case 0:case 1:程序总结:1)选择结构的实现除了使用 if 语句以外,还可以使用 switch 语句来实现。(2) switch后的表达式和case后的标号的类型要一致,switch后的case 语句后,依次顺序往下执行,直到遇到 break 语句就彻底 跳出 switch 语句体,转去执行 switch

7、 语句体后的语句。3)default 语句可有可无, 位置无所谓, 当 switch 后的表达式和所有 case 后的标号都不一致时,转去执行 default 语句,然后依 次顺序执行 default 语句后其他的 switch 语句,直到遇到 break语句,则彻底跳出 switch 语句体。4)break 语句可出现在循环语句体和 switch 语句体内, 目的是彻底跳出循环体和 switch 语句体。(5) case和其后的标号之间必须要加空格。4-22编写程序,输入一位学生的生日(年:yO、月m0、日dO),并输入当前的日期(年:y1、月m1、日d1),输出该生的实际年龄。#inclu

8、de main()int y0,m0,d0,y1,m1,d1,age ;age=y1-y0;if(m1m0|m0=m1&d1d0) age-;printf( “age=%dn ”,age);程序总结 :1)if(m1m0|m0=m1&d0d1) ,在程序设计中,要学会用逻辑与、或、非代替复杂的 if 语句嵌套。2)在 printf 语句中,要尽量加上 n ,这样可以避免黑屏上的结束语 press any key to continue 出现在有价值的输出结果的后面, 而是换行输出。这样就提高了程序输出结果的可读性。3)通过本设计,要加强对变量起名艺术性的认识。4-23 编写程序,输入一个整数,

9、打印出它是奇数还是偶数。#include main() int x,y;printf( “请输入一个整数 :n ”)scanf(“%d ”,&x);y=x%2;if(y=0)printf( “%d 是一个偶数! n”,x);elseprintf( “%d 是一个奇数! n”,x);程序总结:y=x%2; 这是判断一个数是奇数还是偶数的一贯表示方式。计算机中 的等号是双等号,与数学中的等号不一样。4-24编写程序,输入a,b,c三个数,打印出最大者。方法一:#include main() int a,b,c,max;printf( “请输入三个数: n”);scanf(“%d%d%d ”,&a,

10、&b,&c);if(ab)if(ac)max=a;elsemax=c;else if(bc)max=b;elsemax=c;printf( “max=%d ”,max);程序总结:利用if-else的嵌套,可求出一组数的最大值和最小值。在 if-else的嵌套中,要格外注意if和else的配对问题。配对的原则是:从最后一个 else开始,寻找与其配对的 if ,找的原则是离 else 最近的还没有配对的 if 就是该else的配对对象。if和else的配对一旦出问题,输出结果全错。方法二:#includemain()int a,b,c,t;printf( “请输入三个数: n”);scanf(

11、“%d%d%d ”,&a,&b,&c);if(ab)t=a;a=b;b=t;if(ac)t=a;a=c;c=t;if(bc)t=b;b=c;c=t;printf( “最大值为: %d ”,c);程序总结:方法一利用 if-else 的嵌套来进行程序设计,极易容易出错。而方法二采用三个 if 语句的并列来实现,同样可以求出最大值。2)方法二算法分析:第一个 if 语句结束后, b 中保存 a 和 b 中的较大值;第二个 if 语句结束后, c 中保存 a 和 c 中的较大值;第三个 if 语句结束后, c 中保存 b 和 c 中的较大值;三次比较后, c 中的值就是三个数中最大的。现实生活中,交

12、换两盆水必须要借助第三个盆子;在程序设计中,要想实现两个变量中值的交换,就必须借助第三个变量。Y=x(-5x0),y=x-1(x=0),y=x+1(0x10), 编写程序,要求输入 x 的值,输出y 的值。分别用:(1)不嵌套的 if 语句( 2)嵌套的 if 语句( 3) if-else 语句( 4) switch 语句(1)#includemain()int x,y;printf( “请输入 x 的值: n”);scanf(“%d ”,&x);if(x=0) y=x-1;if(x-5&x0&x10) y=x+1;printf( “y=%dn ”,y);(2)#includemain() i

13、nt x,y;printf( “请输入 x 的值: n”);scanf(“%d ”,&x);if(x-5)if(x0)y=x+1;if(x=0)y=x-1;Printf( “y=%dn ”,y);(3)#includemain() int x,y;printf( “请输入 x 的值: n”);scanf(“%d ”,&x);if(x-5&x0)y=x;else if(x=0)y=x-1;elsey=x+1;Printf( “y=%dn ”,y);(4)#includemain() int x,y,i;scanf(“%d ”,&x);if(x-5&x0&x10) i=3;switch(i) ca

14、se 1:y=x;printf( “x=%d,y=%dn ”,x,y);break;case 2:y=x-1; printf( “x=%d,y=%dn ”,x,y);break;case 3:y=x-1; printf( “x=%d,y=%dn ”,x,y);程序总结:对于这个程序设计我建议大家采用第一种方法,因为第一种方法是大众化的思路,鉴于上机考试是机器阅卷,希望大家不要在上机试题上展现自己的个性。大家可以在平常练习中,尝试多种方法解决同一问题,这样可以通过一个程序设计,巩固多个知识点。第5章5-17编写程序,求1-3+5-7+-99+101的值。方法一:#includemain()int

15、 s,n,t,j;n=1;t=1;j=1;while(n=101) s=s+t;n+=2;j=-j;t=j*n;printf( 1-3+5-7+ -99+101=%d ” ,s);程序总结:( 1 )循环结构可用循环语句来实现,循环语句有三种: while,do-while,for , 循环语句的使用场合是:数之间有规律可循并且是重复执行某项操作。(2)本程序设计是正负数交替求和,所以必须单独定义一个变量,通过每次乘以- 1 ,来实现正负交替。本题中的 j 就扮演了这个角色。(3) while 语句简介:功能是可实现循环结构。 While 与其后的括号之间无 空格,括号里的表达式只要是合法的表

16、达式即可,不过关系表达式最为常 见。While的管辖范围是紧跟在其后的一条“ C语句”(可以是单纯的一条C 语句,也可以是用花括号括起来的复合语句) 。程序设计最忌讳死循环, 所以说循环体中必须要有使 while 后表达式为假的趋势,这样才能正常的 跳出循环体,从而避免死循环的出现。方法二:#include#includemain()int a,b,c,s;a=1;b=1;c=1;s=0;while(fabs(c)=101)s+=c;b+=2;a=-a;c=a*b;printf( 1-3+5-7+ -99+101=%d ” ,s);程序总结:若程序中用到了数学函数,就必须把 #include

17、加上。5-18编写程序,求e的值,1+1川+1/2!+1/3!+1/4!+(1)用 for 循环,计算前 50 项。(2)用 while 循环,要求直至最后一项的值小于 10 的-6 次方。(1) 方法一:#includemain()int m,n;float e=,i=,t;for(n=1;n=1;m-)t=t*m;i=1/t;e=e+i;printf( “e=%f ”,e);程序总结: for(t=;m=1;m-) t=t*m; 实现的是阶乘的求法。方法二:#includemain() float a,b,c,e;e=;a=;c=0;for(b=;b50;b+) e+=c;c=(a*b);

18、a=a*b;printf( “e=%f ”,e);程序总结: c=a*b; a=a*b; 这两句是阶乘的另一种实现方法。此算法的设计 思路是:1! *2=2 ! , 2! *3=3 ! , 3! *4=4 !后一项的分母是前一项分 母再乘以一个有规律的数。(2) #includemain()float a=,b=,c=,e=;while(c=1e-6) e+=c;b+;c=(a*b);a=a*b;printf( “e=%fn ”,e);程序总结: 1乘以 10的-6次方,在 C 语言中表示为 1e-6。5-19编写程序,输出从公元 2000年至 3000年所有闰年的年号,每输出 10个年号换一

19、行,判断公元年是否为闰年的条件是:(1)公元年数如能被 4 整除,而不能被 100整除,则是闰年。(2)公元年数能被 400 整除也是闰年。#includemain() int i,j=0;for(i=2000;i=3000;i+) if(i%4=0&i%100!=0|i%400=0)printf( “i=%d ”,i);if(j%10=0)printf( “n”);printf( “n ”);程序设计:(1) int i,j=0; 这条语句中的 j=0 非常必要,因为 j 的作用就是累计闰年的个 数,在所有的程序设计中,具有累计功能的变量都需要初始化为零。否则 随机数会来捣乱,从而导致最后累

20、计结果的无意义。(2) if(j%10=0) 这是换行的一贯表示形式。(3)语句 printf( “n ”);在程序的最后出现两次,这两次的作用是不一样的, 前者实现的是每 10 个闰年换行一次。后者的功能是让黑屏上的 press any key to continue 乖乖换行,从而提高程序输出结果的可读性。5-20 编写程序,打印以下图形: *#includemain() int i,j,k;for(i=3;i=0;i-) for(k=1;k=i;k+)Printf(for(j=0;j7-i*2;j+)printf( “* ”printf( “n”);for(i=4;i7;i+)for(k

21、=4;k=i;k+)printf(for(j=3;j=15-i*2;j+)printf( “* ”printf( “n”);程序总结:1、(1)类似图形的设计是有规律可循的,比如此题:空格的个数从上往下依次是 3、 2、1、0、1、2、3,星号的个数从上往下依次是 3、5、7、5、3、1,并且上下两部分是对称的。(2) 本题中 for 循环的控制条件很难想出来, 大家只要把这个题记住就可以,到时候稍微变一下型就可以。第6章6-19 请编写程序,输入一行字符(用回车结束) ,输出每个字符以及与之对应的 ASCII 代码值,每行输出三对。#include main() int n=0;char c

22、;while(c=getchar()!= n )n+;printf( “ASCII=%d,c=%c ”,c,c);if(n%3=0)printf( “n”);程序总结:记的ASCII代码值有:数字字符勺ASCII值是48,字符a的ASCII值是65,字符 A 的ASCII值是97,字符的ASCII值是 32,这 4个特殊字符的 ASCII 值必须记住。其他的只要在它们的基础上递推就可以。(2)(3)在 printf 和 scanf 中所用到的 %后的字母,取决于输入输出项在定义时所用的关键字。Int与d对应,float与f对应,double与lf对应,char与%c对应,long int与%l

23、d对应,short int与%hd对应。本题中的语句char c;和printf( ASCII=%d,c=%c ”c,c);貌似与中讲的理论相冲突,其实是可行的,由于字符型数据在内存中保存的是与之相对应的 ASCII 码值, ASCII 码值都是整型数,所以 char既可以与 %c 对应,也可以与 %d 对应。4)注意语句 while(c=getchar()!= n )中括号的用法,很多同学容易把(c=getchar()外的这层括号忘掉,变成 while(c二getchar()!= n ,由于! =的优先级要高于 =,所以导致运算顺序的改变,最终引起结果的错误。(5) putchar( h的功

24、能仍然是让黑屏上的 press any key to continue乖乖换行,从而提高程序输出结果的可读性。与 printf( “n ”) ;是完全等价的。决定了它的写法必须是赋给一个字符型的内存变量,如本题的c=getchar()。6-20 请编写程序,输入一行数字字符(用回车结束) ,每个数字字符的前后都有空格。 请编程,把这一行中的数字转换成一个整数。 例如,若输入(vCR代表Enter键):2 4 8 3 ,则输出整数:2483。#include main() char ch,int i=0;while(ch=getchar()!= n )if(ch= 0&ch=0&ch= 9不能写

25、成 0=ch= 0&ch= 0&ch= 9) 和 i=i*10+ch- 0是一体的,是一条语句。而while 恰恰只需要对这一条语句负责,而不是对多条语句负责,所以花括号是多余的。3)大家要格外注意 i=i*10+ch- 0;这条语句, 这条语句是本程序的一大亮点。6-21 请编写程序统计输入的行数,用!号结束输入, !号所在的行不计入行数。#include main() char ch;int i=0;while(ch=getchar()!= ! );if(ch= n) i+;printf( “%d ”,i);putchar( n);程序总结:本程序是要统计输入的行数,其实就是统计 n 出现

26、的次数。6-22 请编写程序统计输入的一行中小写字母的个数。#include main() char ch;int i=0;while(ch=getchar()!= n )if(ch= a&ch=a&ch= z不能写成二chv二 z。6-23 请编写输出以下图案的程序,图案的行数由输入的整数值确定(每行中字符之间没有空格)。ABBBCCCCCDDDDDDDEEEEEEEEE#include main() int i,j,k,m,n;char ch;printf( “Enter n:n ”);scanf(“%d ”,&n);ch=A+i-1;m=2*i-1;for(k=n;k=i;k- -)pu

27、tchar( “”);for(j=1;j=m;j+)putchar(ch);printf( “n ”);第7章7-15 编写函数 int mymod(int a,int b) 用以求 a 被 b 除之后的余数。int mymod(int a,int b)int s;s=a%b;return s;程序总结:1)函数定义分为两部分,函数首部和函数体。结合本题,函数首部是 int mymod(int a,int b) ,函数体是花括号内的所有语句。2)int mymod(int a,int b) 中的 int 是函数的返回值类型, return 后的表达式是函数的返回值, 所以 int 类型的书写,

28、是根据 return后表达式的类型而定的,必须要保证两处的一致性。要是函数 体中没有 return 语句,或是只有 return 这个单词, 其后没有表 达式,则认定为该函数没有返回值。那么函数首部中 int 就要 改写成 void 。要是函数首部省略函数的返回值类型,写成系统默认该函数的返回值为 int 类型。int mymod(int a,int b) 中的 mymod 是函数名,只要符合标识符 的命名规则即可,尽量做到见名知义。int mymod(int a,int b) 中的 a, b 是该函数的两个形参。 形参的个 数取决于题目的实际需要,形参前的类型名一定不能少。return s;语句的功能是把该被调用函数得到的结果返回调用函数。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1