1.2 典型例题分析

1.2.1 例题解析

【例1.1】组成C程序的基本单位是( )。

A. 表达式与语句

B. 若干文件

C. 函数

D. main函数

解:C语言是结构化程序设计语言。C程序由一个或多个文件组成,而一个文件可由一个或多个函数组成。函数是组成C程序的基本单位,函数由语句构成,C程序的执行总是从main函数开始。答案为C。

【例1.2】C程序中能直接让机器执行的文件是( )。

A. 编辑后的.c源文件

B. 通过编译的.obj文件

C. 通过连接的.exe文件

D. 正在编辑的源文件存盘为.exe的文件

解:C语言源程序扩展名为.c或.cpp,为文本文件,机器不能直接执行。源程序经过编译后生成.obj的二进制文件,再由连接程序把.obj文件与C语言提供的各种库函数连接起来生成一个.exe文件,它是可执行文件,机器可以直接执行。可执行文件是通过编译和连接生成的,并非是通过改变扩展名而得到的。答案为C。

【例1.3】下面每组3个标识符,可以用作C语言用户标识符的一组是( )。

A. void word FOR

B. al_b1_1231F

C. Case −abc xyz

D. case5 Liti 2ab

解:此题测试C语言的标识符规则。C语言的标识符命名规则:可以是单个字母,也可以由字母、数字和下画线组成,但必须是以字母或下画线开头,用户标识符不能是C语言的关键字。选项A中void是C语言的关键字不可用,选项C中第二个选项有减号不可用,选项D中第三个选项以数字开头不可用。答案为B。

【例1.4】下列选项中,不是C语言提供的合法关键字的是( )。

A. switch

B. default

C. Case

D. if

解:此题测试C语言的关键字。C语言的关键字都用小写英文字母表示。答案为C。

【例1.5】在下面程序中,出现错误的个数是( )。

main
{ int a;b;
   a=10;
   b= a+50;
   print("%d, %d\n", A , B);

A. 2

C. 4

B. 3

D. 5

解:程序中存在5个错误:①主函数名后面的括号没写;②声明语句int a;b;中的两个变量之间应该用逗号隔开;③输出函数print书写错误,应该改为printf;④输出变量的值时,把变量a和b写成了大写字母A和B,C语言是区分字母大小写的;⑤函数体没有右花括号,使函数不完整。答案为D。

1.2.2 常见错误

一般情况下,一个程序很少能够一次性地运行通过。作为一名程序设计初学者,你会发现错误总是常常出现,你需要认识到:改正错误的过程即是进行调试的过程。

当编译系统检测到一个错误时,就会显示一条出错信息,用来表示程序有错以及可能的错误原因。对于初学者,这些出错信息有时很难被理解甚至使人误解。但随着实践经验的积累,大家将慢慢地成为查错并纠正错误的高手。

下面介绍常见的3种类型的错误:语法错误、运行错误和逻辑错误。

1. 语法错误

语法错误是指在编写程序时,使用了违反C语言语法规则的内容,编译系统在编译源程序时,会发现这种类型的错误。若程序源代码含有语法错误,就不能被正确地编译生成可执行文件,程序也就不能运行。常见的错误包括:没有定义变量就直接使用变量,语句后面缺少“;”等。

需要注意的是,在程序编译时,程序中的一处错误可能会导致多条错误信息出现。建议的纠错过程是首先集中修改声明语句中的错误,然后在修改其他错误之前,重新编译程序。在程序编译过程中,常常会出现这样的情况:一旦声明语句修改正确了,其他很多错误信息也就会随之消失。

2. 运行错误

运行错误是指在程序运行期间发生了超出程序允许程度的故障,使程序无法正常运行。例如当程序执行非法操作“3/0”时,就会发生这种类型的错误。出现这类错误时,计算机将会停止程序的运行,并显示诊断信息,标明错误所在的行。

3. 逻辑错误

逻辑错误通常表现为程序可正常运行,但运行结果是错误的。一般是当程序的算法出现错误时会产生逻辑错误。此类错误通常不会发生运行阻碍,也不会显示出错信息,因此很难检测。只有通过对程序的全面调试,将程序输入与计算结果进行比较,才有可能找到逻辑错误。