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
。