第1章引论第一单元重点与难点解析1.C语言中的函数与数学中的函数有什么联系吗?二者没有必然的联系。C语言中的函数是程序的构成单位,相当于某此编程语言中的子程序或过程。当然,数学中常用的函数在C语言中也有相对应的库函数,如正弦函数、对数函数等。2.C语言程序中的main可以写作Main吗?不可以。在C语言中,严格区分字母的大小写。因此,关键字和标识符中字母的大小写必须与其定义形式保持一致。3.在C语言程序中,词与词之间必须用空格分隔吗?词与词之间可以用空格分隔,也可以用标点符号分隔。当两个词之间没有标点符号时,必须以空格(或换行符)分隔,以免连成一体而导致编译系统无法识别4.程序在编译时,如果没有显示错误(error)和警告(warning),是否说明程序就是正确的?不是的。在编译时只能发现程序中的语法错误,而不能发现逻辑错误和运行错误。因此,上述情况只能说明不存在语法错误,而不能排除存在逻辑错误和运行错误的可能性。题第二单元习一、判断题O1.在C语言程序执行时,总是从第一个函数开始执行的。(2.一个C语言程序可由一个或多个函数组成。(13.C语言的源程序可以直接执行。(4.在C语言程序中,注释对程序的执行不产生影响。(二、选择题1.以下程序中完全正确的是CB.A#include<stdio.h>;include<stdio.h>int main(void);int main(void)(printf("Hello world!In");(printf("Helloworld!In");return O;return O;11
C.D.#include <stdio.h>#include <stdio.h>int main(void)int main(void)(printf("Hello world!In");(printf("Hello world!In")return O;return O;2.以下程序中完全正确的是oA.B.#include<stdio.h#include<stdio.h>int main(void)int main(void)(int a,b;{int a,b;a=10;a=10;b=20;b=20;c=a*b;C=a*b;printf("c=gdln",c);print("c-8dln",c);return O;return 0;11C.D.#include <stdio.h>#include <stdio.h>int main(void)int main(void)(int a,b(INT a,b;a=10;a=10;b=20;b=20;c=a.b;c=a*b;printf("c-%dln",c);printf("c=gdln",c);return oreturn O;3.以下叙述中错误的是A.C语言的源程序经过编译之后生成扩展名为obi的目标程序B.C语言的源程序经过编译、连接之后生成扩展名为exe的可执行程序C.C语言的源程序是以ASCII码形式存储的文本文件D.对源程序进行编译时,可以发现程序中存在的所有错误第三单元习题参考答案及解析判断题C语1.错误。言解析:当c语言程序执行时,总是从main函数开始执行的,而不管main函数位于程程序的什么位置。库2.正确。设解析:函数是C语言程序的基本构成单位。一个C语言程序是由若干个函数组成的,计其中必须有一个主函数(main函数)。训练3.错误。教解析:C语言源程序(扩展名为c)并不能直接运行,必须先经过编译得到目标程序(扩程展名为obi),再经过连接得到可执行程序(扩展名为exe)。只有可执行程序才可以直接执行。2
4.正确。解析:注释信息是为了帮助程序的阅读者(包括程序的作者)理解程序使用的。编译系统对源程序进行编译时,将会忽略所有的注释信息,因此注释信息对程序的执行不产生任何影响。二、选择题1. C解析:在程序A中,在include命令、函数首部之后误加了分号。在程序B中,include命令之前漏写了“#”号。在程序D中,printf语句之后漏写了分号。2. B解析:在程序A中,将printf误写为print。在程序C中,将int误写为INT(在C语言中严格区分字母的大小写)。在程序D中,将a*b误写为a.b。3. D解析:对源程序进行编译时,只能发现程序中的语法错误,而不能发现逻辑错误和运行错误。科学出版第1章引论3
第2章基本的数据与运算第一单元重点与难点解析1.标识符可以随意指定吗?标识符只能由字母、数字、下划线组成,且首字符不能是数字。另外,关键字和系统预定义的标识符,如int、printf、struct等也不能用作用户标识符。2.标识符的长度有限制吗?标识符的长度理论可以是任意的,但有的编译器只能保证前31个字符或前63个字符是有效的。3.标识符区分字母的大小写吗?在C语言中,标识符是严格区分字母的大小写的,如inta,A;这是两个不同的变量名。4.在使用之前的任何位置都可以定义变量吗?C语言规定变量必须先定义后使用。全局变量,可以在函数外的任意位置定义。局部变量的合法定义位置,依赖编译器所遵循的C语言规范版本。仅支持C89标准的编译器只允许在块(用一对花括号括起来的语句组)的起始部分定义变量。支持C99标准的编译器,可以在函数内部的任意位置定义局部变量。5.C语言中有字符串变量吗?没有。C语言中使用字符数组来存储字符串,使用字符数组或字符指针来处理字符串。6.C语言中的运算符很多,需要牢记运算符的优先级吗?虽然C语言的运算符很多,但通常在一条语句或表达式中不会出现太多的运算符。作为初学者,在实际的编程练习中,可以尝试记住一些比较常见的运算符(如算术运算符、关系运算符和逻辑运算符等)的优先级。对于相对生僻的运算符,可以使用圆括号来明确运算的先后顺序。题第二单元习一、判断题1.C语言不允许不同类型的数据之间进行运算。()2.一个变量被定义后,它的类型就被确定了,不可改变。())3.在C语言中,数值类型的数据都可进行%运算。()4.在C语言中,整型常量有二进制、八进制、十六进制和十进制等4种表示形式。()5.C语言要求定义符号常量时必须用大写字母。(6.在C语言中,一个变量可以同时被定义为多种类型。(7.在C语言中,变量可以不经定义而直接使用。()8.整数-32100可以赋值给int型和longint型变量。(
9.若a是实型变量,在执行了语句a=5;之后,a将变为整型变量。()710.在C语言程序中,无论是整数还是实数都能准确无误地在内存中表示出来。11.在程序中,APH和aph是两个不同的变量。()12."018是合法的字符常量。(二、单选题1.下面4个选项中,均属于不合法的用户标识符的选项是dolao_123A.DatesumB. chariffloatD._abcTempIntC b+a2.下面4个选项中均属于合法常量的选项是12e-33.6'd'In'A.058B.-12.80x9843.56e2C."w"034Oxal"m'D.4.45076"how"5.33E1.53.以下叙述中不正确的是A.在C语言中,%运算符与/运算符的优先级相同。B在C语言中,area和AREA是两个不同的变量名C在C语言中,可以使用二进制整数D.若a和b类型相同,在执行了赋值运算a=b后,a得到b的值,而b的值不变。4.在C语言中,要求运算对象必须是整型的运算符是B. *C. +D.%A. /个字符。5.若有说明语句charch=x41,则变量ch包含A. 1B.2C.3D.说明不合法,ch的值不确定6.若有定义inta=7;floatx=2.5,y=4.5,则表达式x+a%3x+y)/2的值是B.6.000000A.2.500000C.5.500000D.0.0000007.设变量f是float型,i是double型,则表达式10+'a'+i*f的结果的数据类型为CB.floatA, intC. doubleD.不确定8.以下叙述中正确的是A.在C语言中,一行只能写一条语句B.若a是实型变量,则在C语言中不允许用其他类型的数据对其赋值C.在C语言中,无论是整数还是实数,都能被准确无误地表示第D.在C语言中,%是只能用于整数运算的运算符29.在C语言中,int型数据在内存中的存储形式是章A.原码B.反码C. 补码D.ASCII码基10.下列选项中,可作为C语言合法整数的是本A. a2B.101011BC.03845D.0x4b5的11.在C语言中,字符型数据在内存中的存储形式是数A.原码B.反码C.补码D.ASCII码据12.若短整型数据用2字节存储,则unsigned shortint型数据的取值范围是与运算B.0~255A.0~65535C.-128~127D.-32768~327675