__第 1 章 导言

    int 与 float 类型的取值范围取决于具体的机器。对于 int 类型,通常为 16 位,其取值范围在 -32678 ~ +32767 之间,也有用 32 位表示的 int 类型。 float 类型通常是 32 位,它至少有 6 位有效数字,取值范围一般在 10^(-38) ~ 10^(+38) 之间。

    while 循环语句的执行方式是这样的:首先测试圆括号中的条件:如果条件为真,则执行循环体;然后再重新测试圆括号中的条件,如果为真,则再次执行循环体;当圆括号中的条件测试结果为假时,循环结束。

    正确的缩进以及保留适当的空格的程序设计风格对程序的易读性非常重要。我们建议每行只写一个语句,并在运算符两边各加上一个空格字符,这样可以使得运算的结合关系更清楚明了。

    即使浮点数常量取的是整型值,在书写时最好还是为她加上一个显式的小数点,这样可以强调其浮点性质,便于阅读。%6f 表示待打印的浮点数至少有 6 个字符宽;%.2f 表示指定待打印的浮点数的小数点后有两位小数,但宽度没有限制。

    printf 仅仅是标准库函数中的一个有用的函数而已。

    C语言中一个通用规则实例:在允许使用某种类型变量的任何场合,都可以使用该类型的更复杂的表达式。

    for 语句是一种循环语句。for (;;)。第一部分是初始化部分,仅在进入循环前执行一次;第二部分是控制循环的测试条件或条件部分。循环控制对该条件求值,如果结果值为真,则执行循环体;此后将执行第三部分,并再次对条件求值。如果计算得到的条件值为假,循环终止执行。

---------------------------

本来我打算写成一个笔记式的日志,但发觉这本书真的很经典,字字珠玑,如果真的像原先想的那样做成一个笔记式的,那几乎是把这本书重新打过一遍,一来造轮子,二来浪费时间。不如用彩色笔在书上划出关键句子,然后把课后习题在这里做一遍。

书中原代码:

  
    
1 /* 打印华氏温度与摄氏温度对照表 */
2   /* 版本 1 */
3 #include < stdio.h >
4 main()
5 {
6 int fahr, celsius;
7 int lower, upper, step;
8
9 lower = 0 ;
10 upper = 300 ;
11 step = 20 ;
12
13 fahr = lower;
14 while (fahr <= upper) {
15 celsius = 5 * (fahr - 32 ) / 9 ;
16 printf( " %d\t%d\n " , fahr, celsius);
17 fahr = fahr + step;
18 }
19 }
20
21   /* 版本 2 */
22 main()
23 {
24 int fahr, celsius;
25 int lower, upper, step;
26
27 lower = 0 ;
28 upper = 300 ;
29 step = 20 ;
30
31 fahr = lower;
32 while (fahr <= upper) {
33 celsius = ( 5.0 / 9.0 ) * (fahr - 32.0 ) ;
34 printf( " %3.0f\t%6.1f\n " , fahr, celsius);
35 fahr = fahr + step;
36 }
37 }
38
39   /* 版本 3 */
40 main()
41 {
42 int fahr;
43
44 for (fahr = 0 ; fahr <= 300 ; fahr = fahr + 20 )
45 printf ( " %3d %6.1f\n " , fahr, ( 5.0 / 9.0 ) * (fahr - 32 ));
46 }
47
48   /* 版本 4 */
49   #define LOWER 0
50   #define UPPER 300
51   #define STEP 20
52
53 main()
54 {
55 int fahr;
56
57 for (fahr = LOWER; fahr <= UPPER; fahr = fahr + STEP)
58 printf ( " %3d %6.1f\n " , fahr, ( 5.0 / 9.0 ) * (fahr - 32 ))
59 }

练习题答案:

1-3
   
     
1 #include < stdio.h >
2
3 main()
4 {
5 float fahr, celsius;
6 int lower, upper, step;
7
8 lower = 0 ;
9 upper = 300 ;
10 step = 20 ;
11
12 printf( " fahr celsius\n " );
13 fahr = lower;
14 while (fahr <= upper) {
15 celsius = ( 5.0 / 9.0 ) * (fahr - 32.0 );
16 printf( " %3.0f %6.1f\n " , fahr, celsius);
17 fahr = fahr + step;
18 }
19 }
1-4
   
     
1 #include < stdio.h >
2 main()
3 {
4 float fahr, celsius;
5 int lower, upper, step;
6
7 lower = 0 ;
8 upper = 300 ;
9 step = 20 ;
10
11 printf( " celsius fahr\n " );
12 celsius = lower;
13 while (celsius <= upper) {
14 fahr = ( 9.0 * celsius) / 5.0 + 32.0 ;
15 printf( " %3.0f %6.1f\n " , celsius, fahr);
16 celsius = celsius + step;
17 }
18 }

1-5
   
     
1 #include < stdio.h >
2 main()
3 {
4 int fahr;
5 for (fahr = 300 ; fahr >= 0 ; fahr = fahr - 20 )
6 printf( " %3d %6.1f\n " , fahr, ( 5.0 / 9.0 ) * (fahr - 32 ));
7 }

1-6
   
     
1 #include < stdio.h >
2 main()
3 {
4 int c;
5 while ((c = getchar()) != EOF)
6 putchar(c);
7 printf ( " EOF : %d \n " , c);
8 }

1-7
   
     
1 #include < stdio.h >
2 main()
3 {
4 int c;
5 printf ( " EOF is %d\n " , EOF);
6 }

1-8
   
     
1 #include < stdio.h >
2 main()
3 {
4 int c;
5 int nb, nt, nl;
6
7 nb = 0 ;
8 nt = 0 ;
9 nl = 0 ;
10
11 while ((c = getchar()) != EOF) {
12 if (c == ' ' )
13 ++ nb;
14 else if (c == ' \t ' )
15 ++ nt;
16 else if (c == ' \n ' )
17 ++ nl;
18 }
19 printf( " Blanks: %d, Tab: %d, Line: %d " , nb, nt, nl);
20 }

你可能感兴趣的:(程序设计)