《C++程序设计课后习题解析张树粹主编清华大学出社.docx》由会员分享,可在线阅读,更多相关《C++程序设计课后习题解析张树粹主编清华大学出社.docx(11页珍藏版)》请在三一办公上搜索。
1、C+程序设计课后习题解析张树粹主编清华大学出社C/C+程序设计(第二版) 张树粹主编_清华大学出版社 1-9章课后习题解析 第一章P42页 一、选择:1.A 2.A 3.D 4.A 5.C 6.B 7. A 二、填空 1. .C .CPP .OBJ .EXE 2. 主函数 或main函数 3. #include #include 4. 顺序、选择、循环 5. 函数声明 函数执行 不能 void 三、分析理解 1. 解答:C语言程序主要由函数组成,一般包括预处理命令、函数、全局变量声明等等。 2. 解答: 函数由函数首部和函数体组成。函数首部规定函数的返回值类型、函数名、函数的形参及类型;函数体
2、包括用于实现功能的可执行语句,由括起。 3. 解答:基本的C语言语句由简单语句、复合语句、赋值语句、流程控制语句、非限定性转向语句等。 4. 解答:合法的一般标识符有: name,Int,File_name, DATA 5. 解答:源程序需要经过编译程序编译转换成二进制程序,即:目标代码文件,再通过连接程序将目标文件盒其他目标文件及系统所提供的库函数等进行连接生成可执行程序。 6. 解答:两种:单行注释用/. 多行注释采用/* 和*/。 7. 解答:。源程序如图1-1所示: 图1-1 ex1-7源程序 运行结果如下图1-2所示: 图1-2 ex1-7 运行结果 分析: setprecison单
3、独使用时用来输出实数的有效数字,若和fixed联用,则用来输出实数小数点后的数字位数。 (2)-33.7801 /setprecision表示根据当前默认输出精度输出实数。默认精度:实数输出6位有效数字。 (4) 122.1 /为num1输出4位有效数字 8. 解答:源程序如下图1-3所示: 图1-3 ex1-8源程序 运行结果如下图所示: 图1-4 ex1-8 运行结果 第二章P 67页 一、选择 1、B 2、B 3、A 4、B 5、C 6、A 7、B 8、C 9、D 10、D 二、填空 1、 x20 & x30 |xy 或者 ab 3、 1 4、 auto、extern、static、re
4、gister 5、 函数内部 6、 int、float、double 7、 2,1 8、 为最右边表达式的值 9、 7 10、 前缀:先自增后使用;后缀:先使用后自增 11、 右结合性 12、 变量的数据类型、存储类型、变量名称 13、 是否整除 14、 全局变量,静态局部变量,静态局部变量 15、 const,初始值和数据类型 三、阅读程序 1、解答:输出结果是2,1 2、解答:输出结果是6,8,6,7 3、解答:输出结果是n=1 4、解答:输出结果是x=7,a=3,b=7 5、解答:输出结果是n=-4 6、解答:输出结果是0 7、解答:输出结果是2147483647,-2147483648
5、 8、解答:输出结果是 2 3 1 2 四、编程 1、“china”译成密码问题。 这里分别采用getchar/putchar 、cin/cout、scanf/printf三种方法实现。 getchar/putchar 如下图2-1所示: 图2-1 图2-2 cin/cout 如下图2-3所示: 图2-3 同上图2-2 scanf/printf 实现 如图2-4所示: 图2-4 正常数据键入结果同上图2-2,当用户按如下形式键入,也能得到正确结果: 图2-5 若采用 scanf(%c%c%c%c%c, &ch1, &ch2, &ch3, &ch4, &ch5); 各格式串中格式符%c前没有空格
6、分隔,则按照上图2-5形式输入,空格将会作为有效字符存入变量中。运行结果将不正确,如下图2-6所示。 图2-6 2、华氏温度与摄氏温度转换问题。 图2-7 图2-8 第三章 程序控制结构P97页 一、选择 1、D 2、B 3、B 4、C 5、C 6、D 7、A 8、B 9、C 10、A 二、阅读程序 1、解答:输出结果是120 2、解答:输出结果是s=63 3、解答:输出结果是: 0 1 2 3 4 the loop break out. 4、解答:输出结果是freight=5880000 5、解答:输出结果是 sum=1 sum=3 sum=9 sum=33 三、程序填空 1、i+ i 10
7、 2、i= 0 x min 4、i+ 2*i-1 endl 5、i=1 j=i j*i 四、编程 1、判断输入的一个字符是否为09之间的阿拉伯数字。 使用cin输入单个字符 能完成除空白字符外的字符判断,但对空白字符作为非阿拉伯数字无法处理。 图3-1 图3-2 程序能完成包括空白字符在内的所有字符判断 图3-3 非空白字符的运行效果同上 图3-6 各种情况运行结果均与方法二效果相同。 采用getchar/putchar函数完成单个字符的输入输出 ch = getchar; putchar(ch); if scanf(“%c”,&ch); printf(“%c”,ch); if 找出符合条件的
8、三位数,即: k2 * 100 + k1 * 10 + k0 = k2 * k2 * k2 + k1 * k1 * k1 + k0 * k0 * k0 图3-13 图3-14 5.输入4个整数,要求按由小到大的顺序输出。 通过两两比较,将最小数交换到前面。 图3-15 图3-16 6.编写程序,按下列公式计算e的值。 这是一个累加算法的典型实例。e=e+k,由于累加次数未知,只要将加数k分解达到要求精度为止,以此作为循环条件,较常用while循环或do-while循环结构。 图3-17 图3-18 7.输出能被11整除且不含有重复数字的所有3位数,并统计其个数。 设num为100999之间的3
9、位数,将其拆分出百位、十位、各位用k2、k1、k0表示,count为计数器,通过循环查找满足条件的数。 图3-19 图3-20 8.每个苹果0.8元,第一天买2个苹果,从第二天开始,每天买的苹果数是前一天的2倍,直到当天购买的苹果个数超过100个,问每天平均花多少钱。 这是一个迭代算法的典型实例。注意找出规律。 图3-21 图3-22 第4章 数组P123页 一、单项选择题 1. A D 3. A 4. B 5. A 6. D 7. B 8. B 9. B 10. A 二、填空题 2. 1、3 2、19 3、a10 4、98 5、7 6、ABCDE 7、12 8、2244 23 三、阅读程序题
10、 1、19 2、,8,5,2 3、10010 4、6521 5、-9是第6个元素 四、程序填空题 1、ai min=ai 2、bi!=0 ai i+ 3、ai!=0 sj=si i+ 五、编程题 1、统计N个学生的成绩并输出低于平均分的人数,在一批结构体数据中查找信息,根据查找情况相应输出。 运行结果: 输入:李方 输出:李方找到了,很高兴为您服务,再见! 输入:张艳燕 输出:张艳燕不再这里,下次再合作,再见! 2、fun函数的功能是输出参数指针所指结构体变量的name成员值。 运行结果:Zhao 3、共用体变量中在每一瞬时只能存放其中一种成员。能够访问的是共用体变量中最后一次被赋值的成员。
11、运行结果:1000 4、运行结果为0 四、程序填空题 1、score &stu 2、struct comp x.re+y.re x.im+y.im 3、sk.name sk.total smin.total 4、page q-name 五、编程题 1、编写统计选票的程序。设有3个候选人,有10人参加选举,每个选举人只能输入一个候选人的姓名,要求输出各个候选人的得票数。 答: #include #include using namespace std; struct person char name20; int count; leader3=Li,0,Zhang,0,Wang,0; int m
12、ain int i,j; char leader_name20; for(i=1;i leader_name; for(j=0;j3;j+) if(strcmp(leader_name,leaderj.name)=0)leaderj.count+; for(i=0;i3;i+) coutleaderi.name 票数为: leaderi.count endl; 运行结果: 第八章 文件 一、选择题 1、B 2、D 3、C 4、D 5、A 6、D 7、C 8、B 二、阅读程序题 此程序调用函数fc来完成将文件中的第一个#之前的字符读取出来并显示在屏幕上。其操作顺序是:先在屏幕上上输出文件a1.t
13、xt中的#之前的字符,紧接着再输出a2.txt中的#之前的字符。 运行结 第九章 编译预处理 一、选择题 1、C 2、D 3、C 4、D 5、D 二、填空题 1、9 2、2 3、z=0 4、5 5、4 三、编程题 1、定义一个带参的两个参数的值互换。 答: #include using namespace std; #define S(x,y) int t; t=x;x=y;y=t; int main int a,b; cin a b; S(a,b); cout a= a ,b= b endl; 运行结果: 2、给出年份year,定义一个宏,以判定该年份是否闰年。 源程序: #include using namespace std; #define LEAP_YEAR(y) (y%4=0&y%100!=0|y%400=0) int main int year; cin year; if(LEAP_YEAR(year) cout year is a leap year endl; else cout year is NOT a leap year endl; return 0; 运行结果: 果:121314252627
链接地址:https://www.31ppt.com/p-3153738.html