《C 语言程序设计》改错信息
一、6 页:程序的第 11-12 行要与第 10 行对齐,修改如下: if(max<s[i]) max=s[i]; if(min>s[i]) min=s[i]; sum+=s[i]; 二、9 页:图 1-5 用下图替换
A
P 成立 A 不成立 B
当 P 成立 A A 当 P 成立
B
顺序结构
选择结构
循环结构:while
循环结构:do-while
三、14 页:将(3) 鸡兔同笼,已知鸡兔共有头 50 个,有脚 80 只,问鸡兔各有多少只。(用枚举法) 中的 50 改
为 30
四、16 页:第 2 行中
#includ 改为:#include (原文缺少字母 e)
五、22 页:将表 2-6 中后面一个:-38、-308、-4932 中的负号(-)去掉,即下表中的红色部分
表 2-6
类 float double long double 型 存 4 字节 8 字节 10 字节 储 ±3.4× 10 ±1.7× 10
?38
浮点类型
表 示 范 围 精度(有效位数) 7 位数字 16 位数字 19 位数字
~3.4× 10
?38 ?308
?308
~1.7× 10
±3.4× 10?4932~3.4× 10?4932
六、39 页:将 5.数学表达式 sin(25°)+cos(30°)的 C 语言表达式为
中的 100 改为 180
。(提示:弧度=角度× ?/100。)
七、75 页~79 页:前面程序为原文,后面程序中的红色部分是修改内容 4. 执行下面程序: #include <stdio.h> void main() { int a; float b,c; scanf("%2d%3f%4f",&a,&b,&C.; printf("\na=%d,b=%.1f,c=%.1f\n",a,b,C.; }
改为 4. 执行下面程序: #include <stdio.h> void main() { int a; float b,c; scanf("%2d%3f%4f",&a,&b,&c); printf("\na=%d,b=%.1f,c=%.1f\n",a,b,c); } 第 76 页 5. 执行下面程序: #include <stdio.h> main() { int a=0,b=9; printf("a=%%d,b=%%d\n",a,B.; } 则输出结果是( ) 。 改为 5. 执行下面程序: #include <stdio.h> main() { int a=0,b=9; printf("a=%%d,b=%%d\n",a,b); } 则输出结果是( ) 。 第 76 页 6. 下面程序输出结果是( ) 。 #include <stdio.h> void main() { int a=-1; printf("%d,%o,%u\n",a,a,A.; } 改为 6. 下面程序输出结果是( ) 。 #include <stdio.h> main() { int a=-1;
printf("%d,%o,%u\n",a,a,a); } 第 76 页 10. 设 x,y,z 都是 int 型变量,且 x=3,y=4,z=5,则下面表达式中值为 0 的是( A.'x'&&'y' B.x<=y C.x||y+z&&!y D.!(x<y)&&!z||1) 改为 10. 设 x,y,z 都是 int 型变量,且 x=3,y=4,z=5,则下面表达式中值为 0 的是( A.'x'&&'y' B.x<=y C.x||y+z&&!y D.!(x<y)&&!z||0 第 77 页 15. 有如下程序 #include <stdio.h> void main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d\n",a,B.; } 改为 15. 有如下程序 #include <stdio.h> void main() { int x=1,a=0,b=0; switch(x) { case 0: b++; case 1: a++; case 2: a++;b++; } printf("a=%d,b=%d\n",a, b); } 第 77 页 16. 有以下程序 #include <stdio.h>
) 。
) 。
void main() { int a=5, b=4, c=3, d=2; if(a>b>C. printf("%d\n",D.; else if((c-1 >= D. == 1) printf("%d\n",d+1); else printf("%d\n",d+2); } 执行后输出结果是( ) 。 A. 2 B. 3 改为 16. 有以下程序 #include <stdio.h> void main() { int a=5, b=4, c=3, d=2; if(a>b>c) printf("%d\n",d); else if((c-1 >= d)== 1) printf("%d\n",d+1); else printf("%d\n",d+2); } 执行后输出结果是( ) 。 A. 2 B. 3
C. 编译时出错
D. 4
C. 编译时出错
D. 4
第 78 页 19. 若执行以下程序时从键盘上输入 3 和 4,则输出结果是( #include <stdio.h> void main() { int a,b,s; scanf("%d%d",&a,&B.; s=a; if(a<B. s = b; s *= s; printf("%d\n",s); } A. 14 B. 16 C. 18 改为 19. 若执行以下程序时从键盘上输入 3 和 4,则输出结果是( #include <stdio.h> void main()
) 。
D.20 ) 。
{ int a,b,s; scanf("%d%d",&a,&b); s=a; if(a<b) s = b; s *= s; printf("%d\n",s); } A. 14 B. 16 C. 18 D.20
第 79 页 23.有如下程序其运行结果是( #include <stdio.h> void main() { int s,i; s=0; for(i=1;i<=100;i =i+3) s=s+i; printf("s=%d\n",s); } A.18 B.20 改为 23.有如下程序其运行结果是( #include <stdio.h> void main() { int s,i; s=0; for(i=1;i<=10;i =i+3) s=s+i; printf("s=%d\n",s); } A.18 B.20
) 。
C.22 ) 。
D.24
C.22
D.24
八、92 页:将图 4-5 中:逆序前、逆序后 的格线去掉,如下所示:
a[0] 逆序前 6 a[0] 逆序后 5 a[1] 8 a[1] 4 a[2] 9 a[2] 2 a[3] 3 a[3] 1 a[4] 7 a[4] 0 a[5] 0 a[5] 7 a[6] 1 a[6] 3 a[7] 2 a[7] 9 a[8] 4 a[8] 8 a[9] 5 a[9] 6
九、94 页:将图 4-9 中的第二个:for j=1 to N-i 中的 1 改为 0
十、110 页:倒数第 3 行中:C.a[5] 改方括号为圆括号:C.a(5) 十一、113 页:四、6.中增加“方阵”两字,即:
6.下面是一个 5× 5 阶的螺旋方阵。试编程打印出此形式的 n× n (n<10,顺时针方向旋进)方阵。
十二、123 页:将图 5-2 的地址法列中:&a[0]+0、&a[0]+1、&a[0]+2、&a[1]+0、&a[1]+1、&a[1]+2 的&全部删除 十三、 159 页: 删除第 7 行: 函数名就是这个函数源代码在内存中的起始地址, 编译器将不带 “( )” 的函数名解释为该函数的入口地址。中的“源”字