《程序设计基础教程用――C语言编程》之勘误

勘误0:(P38 L2) [1]

“(若希望同时实现延时,需借助于空语句)”

应为:“(若希望同时实现延时,可以关闭编译器的优化功能)”

勘误1:(P39 图1-9a)

中间一列三个向下箭头

应为:三个向上箭头

勘误2:(P45  L-6)[2]

例1.8的修改代码最后的输出“printf("%d \n", n1 + k);”

应为:“printf("%d \n", n2 + k);”

勘误3:(P46  L-6)

[训练题1.26]上方的文字“也就是说,把求和操作的结果,即第i项的值暂存在fib_1变量中,这样fib_1与fib_2之差就是第i-1项的值。”

应为:“也就是说,把求和操作的结果,即第i项的值暂存在fib_2变量中,这样fib_2与fib_1之差就是第i-1项的值。”

勘误4:(P58  L-4)

[训练题2.7*]将训练题1.28、1.29改为用多个函数实现。并对1.28添加用按键增减月份、日历自动更新的功能。

应为:

[训练题2.7*]将训练题1.28、1.29改为用多个函数实现。并对1.29添加用按键增减月份、日历自动更新的功能。

勘误5:(P69  L14、16、20)

“2.4.1 文件包含”中的 #include <temp.h>

应为:#include "temp.h"

勘误6:(P116  L14)

“4.4.3 强制类型转换的作用 (2)转换数值”中的伪随机数生成代码注释“任意指定了两个常数”

应为:“两个常数是素数的乘积,以免产生的随机数相同或分布不均”

勘误7:(P123  L4)

“5.2.2  二维数组的定义”中的“又例如,可以将b看作长度为6的一维数组,用b[0]+2*i+j(等价于b[i][j])表示自b[0]开始的第2*i+j+1个元素。”

应为:“又例如,可以将b看作长度为6的一维数组,用b[0][2*i+j](等价于b[i][j])表示自b[0]开始的第2×i+j+1个元素。”

勘误8:(P175  L9、18、31)

“例8.6* 用结构类型实现栈”中的Pop函数

bool Pop(Stack *s, int &i)

{

    if (s -> top == -1)

    {

printf("Stack is empty.\n");

return false;

    }

    else

    {

i = s -> buffer[s -> top];

s -> top--;

return true;

    }

}                 //出栈

以及之后的main函数

int main()

{

    Stack st;             //定义栈数据

    Init(&st);            //初始化栈

    Push(&st,12);            //入栈

    int x;

    Pop(&st, x);                //出栈

    printf("x: %d\n", x);

    return 0;

}

 

应分别为:

bool Pop(Stack *s, int *i)

{

    if (s -> top == -1)

    {

printf("Stack is empty.\n");

return false;

    }

    else

    {

*i = s -> buffer[s -> top];

s -> top--;

return true;

    }

}                 //出栈

 

int main()

{

    Stack st;             //定义栈数据

    Init(&st);            //初始化栈

    Push(&st,12);            //入栈

    int x;

    Pop(&st, &x);            //出栈

    printf("x: %d\n", x);

    return 0;

}

勘误9:(P182  L-3)

“return *head”应去掉。

 



[1] 表示第38页第2行

[2] 表示第45页倒数第6行