03-第2章复习题答案
A.2 第2章复习题答案
1.它们都叫作函数。
2.语法错误违反了组成语句或程序的规则。这是一个有语法错误的英文例子:Me speak English good.。这是一个有语法错误的C语言例子: printf"Where are the parentheses?"; 。
3.语义错误是指含义错误。这是一个有语义错误的英文例子:This sentence is excellent Czech.[1]。这是一个有语义错误的C语言例子: thrice_n = 3 + n; [2]。
4.第1行:以一个#开始; studio.h 应改成 stdio.h ;然后用一对尖括号把 stdio.h 括起来。
第2行:把 {} 改成 () ;注释末尾把 /* 改成 */ 。
第3行:把 ( 改成{
第4行: int s 末尾加上一个分号。
第5行没问题。
第6行:把 := 改成 = ,赋值用 = ,而不是用 := (这说明Indiana Sloth了解Pascal)。另外,用于赋值的值 56 也不对,一年有 52 周,不是 56 周。
第7行应该是: printf("There are %d weeks in a year.\n", s);
第9行:原程序中没有第 9 行,应该在该行加上一个右花括号}。
修改后的程序如下:
#include <stdio.h>
int main(void) /* this prints the number of weeks in a year */
{
int s;
s = 52;
printf("There are %d weeks in a year.\n", s);
return 0;
}
5.a. Baa Baa Black Sheep.Have you any wool? (注意, Sheep. 和 Have 之间没有空格)
b. Begone!
O creature of lard!
c. What?
No/nfish?
(注意斜杠
/
和反斜杠
\
的效果不同,
/
只是一个普通的字符,原样打印)
d. 2 + 2 = 4
(注意,每个
%d
与列表中的值相对应。还要注意,
+
的意思是加法,可以在
printf()
语句内部计算)
6.关键字是 int 和 char ( main 是一个函数名; function 是函数的意思; = 是一个运算符)。
7. printf("There were %d words and %d lines.\n", words, lines);
8.执行完第 7 行后, a 是 5 , b 是 2 。执行完第 8 行后, a 和 b 都是 5 。执行完第 9 行后, a 和 b 仍然是 5 (注意, a 不会是 2 ,因为在执行 a = b; 时, b 的值已经被改为 5 )。
9.执行完第 7 行后, x 是 10 , b 是 5 。执行完第 8 行后, x 是 10 , y 是 15 。执行完第 9 行后, x 是 150 , y 是 15 。