04-第3章复习题答案
A.3 第3章复习题答案
1.a. int 类型,也可以是 short 类型或 unsigned short 类型。人口数是一个整数。
b. float 类型,价格通常不是一个整数(也可以使用 double 类型,但实际上不需要那么高的精度)。
c. char 类型。
d. int 类型,也可以是 unsigned 类型。
2.原因之一:在系统中要表示的数超过了 int 可表示的范围,这时要使用 long 类型。原因之二:如果要处理更大的值,那么使用一种在所有系统上都保证至少是32位的类型,可提高程序的可移植性。
3.如果要正好获得32位的整数,可以使用 int32_t 类型。要获得可存储至少32位整数的最小类型,可以使用 int_least32_t 类型。如果要为 32 位整数提供最快的计算速度,可以选择 int_fast32_t 类型(假设你的系统已定义了上述类型)。
4.a. char 类型常量(但是存储为 int 类型)
b. int 类型常量
c. double 类型常量
d. unsigned int 类型常量,十六进制格式
e. double 类型常量
5.第1行:应该是 #include <stdio.h>
第2行:应该是 int main(void)
第3行:把 ( 改为{
第4行: g 和 h 之间的;改成,
第5行:没问题
第6行:没问题
第7行:虽然这数字比较大,但在 e 前面应至少有一个数字,如 1e21 或 1.0e21 都可以。
第8行:没问题,至少没有语法问题。
第9行:把 ) 改成 }
除此之外,还缺少一些内容。首先,没有给 rate 变量赋值;其次未使用 h 变量;而且程序不会报告计算结果。虽然这些错误不会影响程序的运行(编译器可能给出变量未被使用的警告),但是它们确实与程序设计的初衷不符合。另外,在该程序的末尾应该有一个 return 语句。
下面是一个正确的版本,仅供参考:
#include <stdio.h>
int main(void)
{
float g, h;
float tax, rate;
rate = 0.08;
g = 1.0e5;
tax = rate*g;
h = g + tax;
printf("You owe $%f plus $%f in taxes for a total of $%f.\n", g, tax, h);
return 0;
}
6.
| 常量 | 类型 | 转换说明( % 转换字符) |
| :----- | :----- | :----- | :----- | :----- |
| 12 | int | %d |
| 0X3 | unsigned int | %#X |
| 'C' | char (实际上是 int ) | %c |
| 2.34E07 | double | %e |
| '\040' | char (实际上是 int ) | %c |
| 7.0 | double | %f |
| 6L | long | %ld |
| 6.0f | float | %f |
| 0x5.b6p12 | float | %a |
7.
| 常量 | 类型 | 转换说明( % 转换字符) |
| :----- | :----- | :----- | :----- | :----- |
| 012 | unsigned int | %#o |
| 2.9e05L | long double | %Le |
| 's' | char (实际上是 int ) | %c |
| 100000 | long | %ld |
| '\n' | char (实际上是 int ) | %c |
| 20.0f | float | %f |
| 0x44 | unsigned int | %x |
| -40 | int | %d |
8. printf("The odds against the %d were %ld to 1.\n", imate, shot);
printf("A score of %f is not an %c grade.\n", log, grade);
9.
ch = '\r';
ch = 13;
ch = '\015'
ch = '\xd'
10.最前面缺少一行(第0行): #include <stdio.h>
第1行:使用/和/把注释括起来,或者在注释前面使用//。
第3行: int cows, legs;
第4行: count ? \n");
第5行:把 %c 改为 %d ,把 legs 改为 &legs 。
第7行:把 %f 改为 %d 。
另外,在程序末尾还要加上 return 语句。
下面是修改后的版本:
#include <stdio.h>
int main(void) /* this program is perfect */
{
int cows, legs;
printf("How many cow legs did you count?\n");
scanf("%d", &legs);
cows = legs / 4;
printf("That implies there are %d cows.\n", cows);
return 0;
}
11.a.换行字符
b.反斜杠字符
c.双引号字符
d.制表字符