设为首页 加入收藏

TOP

C语言程序设计:现代方法(第2版)第二章全部习题答案(一)
2018-10-21 18:10:33 】 浏览:299
Tags:语言 程序设计 现代 方法 第二章 全部 习题 答案

前言

本人在通过《C语言程序设计:现代方法(第2版)》自学C语言时,发现国内并没有该书完整的课后习题答案,所以就想把自己在学习过程中所做出的答案分享出来,以供大家参考。这些答案是本人自己解答,并参考GitHub上相关的分享和Chegg.com相关资料。因为并没有权威的答案来源,所以可能会存在错误的地方,如有错误还希望大家能够帮助指出。

第二章练习题和编程题答案

练习题

2.2节

1.建立并运行由Kernighan和Ritchie编写的著名的“hello world”程序:

1 #include <stdio.h>
2 int main(void)
3 { 4 printf("hello world!\n"); 5 }

在编译时是否有警告信息?如果有,需要如何改进呢?

答:如果使用部分比较老的编译器如turbo C等,会生成警告信息,指出main函数并没有返回任何值。这是因为在声明main函数时使用了int,表明函数会返回一个整型数值,这个数值为任意(因为main后面是void)。 但是上面的代码中并没有return语句,所以并不会返回任何值。加入return语句后便可消除警告。

1 /* 加入return语句后的版本 */
2 #include <stdio.h>
3 int main(void)
4 { 5 printf("Hello world!\n"); 6 return 0; 7 }

如果是使用IDE中的编译器,且IDE版本比较新(如本人目前使用的Code:Blocks)即使没有return语句,编译器也不会生成警告信息。

2.思考下面的程序:

1 #include <stdio.h>
2 int main(void)
3 {
4     printf("Parkinson's Law:\nWork expands so as to ");
5     printf("fill the time\n"); 
6     printf("available for its completion.\n");
7     return 0;
8 }

(a)请指出程序中的指令和语句。

(b)程序的输出是什么?

答:(a)给出的程序中有一个指令#include和三条printf语句和一条return语句组成。

  (b)程序的输出结果为

Parkinson's Law:
Work expands so as to fill the time
available for its completion.

2.4节

3.通过下列方法缩写程序dweight.c: (1)用初始化式替换对变量height、length和width的赋值;(2)去掉变量weight,在最后的printf语句中计算(volume + 165)/ 166。

答:

 1 #include <stdio.h>
 2 int main(void)
 3 {
 4     /* 用初始化替代对变量赋值就是在声明变量时直接为其赋值 */
 5     int height = 8, length = 12, width = 10, volume = height * length * width;
 6     printf("Dimensions: %dx%dx%d\n", length, width, height);
 7     printf("Volume (cubic inches): %d\n", volume);
 8     /* 此处则省略原来对于weight,并将计算公式直接放入printf语句中 */
 9     printf("Dimensional weight (pounds): %d\n", (volume + 165) / 166);
10     return 0;
11 }

4.编写一个程序来声明几个int型和float型变量,不对这些变量进行初始化,然后直接显示它们的值。这些值是否有规律?(通常情况下没有)。

答:

1 #include <stdio.h>
2 int main(void)
3 {
4     int a, b, c;
5     float e, f, g;
6     printf("a:%d\nb:%d\nc:%d\ne:%f\n%f:f\ng:%f\n"a, b, c, d, e, f, g);
7     return 0;
8 }

实际上并没有什么规律,上面这些变量既没有被初始化也没有在程序中被赋值,这时变量被显示出来的值取决于许多因素,所以无法确定最终显示的结果。

2.7节

5.判断下列C语言标识符哪些不是合法的?

(a) 100_bottles

(b) _100_bottles

(c) one_hundred_bottles

(d) bottles_by_the_hundred_

答:不合法的标识符只有(a),因为标识符只能以字母或下划线开头,而100_bottles是以数字开头的,所以不会发。另外C语言还规定了下划线后跟一个大写字母是保留字,不应该在程序中使用(书中后面有提及)。

6.为什么说在标识符中使用多个相邻的下划线(如current___balance)不太合适?

答:因为在阅读程序时很难分清到底有几个相邻的下划线,如current____balance和current_____balance,前者是4个下划线后者是5个下划线。在未来维护程序时不论是编写者本人还是他人,都容易弄混下划线的数量,造成不必要的混乱。

7.判断下列哪些是C语言的关键字?

(a) for

(b) If

(c) main

(d) printf

(e) while

答:只有(a)for和(e)while是关键字,其余全都不是。(b) If 是因为C语言区分大小写,所以If和if并不相同,if是关键字但是If不是。(c)main和(d)printf也不是关键字,main()函数是C语言自动调用的函数,但是我们依旧可以将变量命名为main(不建议这样做)。printf()则是我们头文件<stdio.h>内包含的函数,如果不调用这个头文件那么我们一样可以将变量命名为printf。总的来说只有在关键字表里的单词才是关键字,其余都不是关键字。

2.8节

8.下面的语句中有多少个记号?

 answer=(3*q-p*p)/3;

答:14个记号,分别是answer、=、(、3、*、q、-、p、*、p、)、/、3、;。

9.在练习题8的记号之间插入空格,使该语句更易于阅读。

答:answer = (3 * q - p * p) / 3;

10.在dweight.c程序(2.4节)中,哪些空格是必不可少的?

答:程序当中出现两次的int后面空格不能少,return 0; 中间的空格不能少。程序其他部分的空格都是为了易于阅读而存在的,即使可去掉程序本身依旧能够正常执行,只是增加了阅读困难。

编程题

1.编写一个程序,使用printf在屏幕上显示下面的图形:

       *

      *

     *

*   *

 * *

  *

答:

 1 #include <stdio.h>
 2 
 3 int main(void)
 4 {
 5     printf("       *\n"
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c语言贪吃蛇详解4.食物的投放与蛇.. 下一篇C语言中的main函数为什么被称作程..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目