当前位置:嗨网首页>书籍在线阅读

05-第4章复习题答案

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

A.4 第4章复习题答案

1.程序不能正常运行。第1个 scanf() 语句只读取用户输入的名,而用户输入的姓仍留在输入缓冲区中(缓冲区是用于存储输入的临时存储区)。下一条 scanf() 语句在输入缓冲区查找重量时,从上次读入结束的地方开始读取。这样就把留在缓冲区的姓作为体重来读取,导致 scanf() 读取失败。另一方面,如果在要求输入姓名时输入 Lasha 144 ,那么程序会把 144 作为用户的体重(虽然用户是在程序提示输入体重之前输入了144)。

2.a. He sold the painting for $234.50.

b. Hi! (注意,第1个字符是字符常量;第2个字符由十进制整数转换而来;第3个字符是八进制字符常量的ASCII表示)

c. His Hamlet was funny without being vulgar.

has 42 characters.

d. Is 1.20e+003 the same as 1201.00?

3.在这条语句中使用\": printf("\"%s\"\nhas %d characters.\n", Q, strlen(Q));

4.下面是修改后的程序:

#include <stdio.h>        /* 别忘了要包含合适的头文件 */
#define B "booboo"        /* 添加#、双引号 */
#define X 10              /* 添加# */
int main(void)            /* 不是main(int) */
{
     int age;
     int xp;              /* 声明所有的变量 */
     char name[40];       /* 把name声明为数组 */
     printf("Please enter your first name.\n"); /* 添加\n,提高可读性 */
     scanf("%s", name);
     printf("All right, %s, what's your age?\n", name); /* %s用于打印字符串*/
     scanf("%d", &age); /* 把%f改成%d,把age改成&age */
     xp = age + X;
     printf("That's a %s! You must be at least %d.\n", B, xp);
     return 0; /* 不是rerun */
}

5.记住,要打印 % 必须用 %%

printf("This copy of \"%s\" sells for $%0.2f.\n", BOOK, cost);
printf("That is %0.0f%% of list.\n", percent);

6.a. %d

b. %4X

c. %10.3f

d. %12.2e

e. %-30s

7.a. %15lu

b. %#4x

c. %-12.2E

d. %+10.3f

e. %8.8s

8.a. %6.4d

b. %*o

c. %2c

d. %+0.2f

e. %-7.5s

9.a. int dalmations;

scanf("%d", &dalmations);

b. float kgs, share;

scanf("%f%f", &kgs, &share);

(注意:对于本题的输入,可以使用转换字符e、f和g。另外,除了%c之外,在%和转换字符之间加空格不会影响最终的结果)

c. char pasta[20];

scanf("%s", pasta);

d. char action[20];

int value;

scanf("%s %d", action, &value);

e. int value;

scanf("%*s %d", &value);

10.空白包括空格、制表符和换行符。 C 语言使用空白分隔记号。 scanf() 使用空白分隔连续的输入项。

11. %z 中的 z 是修饰符,不是转换字符,所以要在修饰符后面加上一个它修饰的转换字符。可以使用 %zd 打印十进制数,或用不同的说明符打印不同进制的数,例如, %zx 打印十六进制的数。

12.可以分别把(和)替换成{和}。但是预处理器无法区分哪些圆括号应替换成花括号,哪些圆括号不能替换成花括号。因此,

#define ( {
#define ) }
int main(void)
(
     printf("Hello, O Great One!\n");
)

将变成:

int main{void}
{
     printf{"Hello, O Great One!\n"};
}