目录重要次重要重复或欲删除基础第一章C语言概述1.1选择题1.2填空题第二章数据类型、运算符与表达式2.1选择题2.2填空题第三章最简单的C程序设计3.1选择题3.2填空题第四章逻辑运算和判断选取控制4.1选择题4.2填空题4.3编程题第五章循环控制5.1选择题5.2填空题5.3编程题第六章数组6.1选择题6.2填空题6.3编程题第七章函数7.1选择题7.2填空题7.3编程题第八章编译预处理8.1选择题8.2填空题8.3编程题第九章指针9.1选择题9.2填空题9.3编程题第十章结构体和共用体10.1选择题10.2填空题10.3编程题第十一章位运算11.1选择题11.2填空题11.3编程题第十二章文件12.1选择题12.2填空题12.3编程题第一章C语言概述1.1选择题*1.1一个C程序的执行是从A。A)本程序的main函数开始,到main函数结束B)本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C)本程序的main函数开始,到本程序文件的最后一个函数结束D)本程序文件的第一个函数开始,到本程序main函数结束参考答案:A参考分析:C语言总是从main函数开始,main函数结束。但是C语言中存在一个exit(0)函数,它可以使得程序在任何时候、任何位置结束程序的运行。如果不考虑exit(0)等函数的特殊作用,C则总是在main函数结束。*1.2以下叙述正确的是C。A)在C程序中,main函数必须位于程序的最前面B)在C程序的每一行只能写一条语句C)C语言本身没有输入输出语句D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误参考答案:C参考分析:C程序对main函数的位置没有任何要求;其书写格式自由,一行可以写多条语句,一条语句(多关键字语句)可以写在多行;C语言忽略注释,把注释看作是一个空格,不会对注释中的内容进行语法检查。因此,如果注释中存在错误,系统是不可能发现的。另外,C语言的I/O操作均通过函数实现,系统本身未提供相应的语句。1.3以下叙述不正确的是D。A)一个C源程序可由一个或多个函数组成B)一个C源程序必须包含一个main函数C)C程序的基本组成单位是函数D)在C程序中,注释说明只能位于一条语句的后面参考答案:D参考分析:C语言中,注释语句的位置是任意的,当然,它不能破坏标识符的完整性。C语言只是将一个注释看作是一个空格,因此对注释内的任何错误都不作检查。1.4C语言规定:在一个源程序中,main函数的位置C。A)必须在最开始B)必须在系统调用的库函数的后面C)可以任意D)必须在最后参考答案:C*1.5一个C语言程序是由B。A)一个主程序和若干个子程序组成B)若干函数组成C)若干过程组成D)若干子程序组成参考答案:B参考分析:通常许多语言程序由主程序和子程序构成,但是C语言是函数式语言,整个程序由众多函数组成。尽管有时习惯上称main函数为主程序,显然,严格地讲还是B更为符合C语言的规则。1.2填空题1.6C源程序的基本单位是【】。参考答案:函数1.7一个C源程序中至少应包括一个【】。参考答案:main()函数1.8在一个C源程序中,注释部分两侧的分界符分别为【1】和【2】。参考答案:【1】/*【2】*/1.9在C语言中,输入操作是由库函数【1】完成的,输出操作是由库函数【2】完成的。参考答案:【1】scanf【2】printf第二章数据类型、运算符与表达式2.1选择题**2.1C语言中(以16位PC机为例),各数据类型的存储空间长度的排列顺序为。A)charintlong=floatdoubleB)char=intlong=floatdoubleC)charintlong=float=doubleD)char=int=long=floatdouble参考答案:A分析:在不同的计算机系统中,不同的C语言系统中,其各种数据类型所占据的存储空间是不同的,但是有一个总的原则,即:char=short=int=long=float=double,只有A符合16位PC机中的具体环境。*2.2若x、i、j和k都是int型变量,则计算下面表达式后,x的值为。x=(i=4,j=16,k=32)A)4B)16C)32D)52参考答案:C参考分析:逗号表达式的计算结果是最后一个表达式的值。k=23是括号内最后一个表达式,因此x变量的值来自k变量的值。**2.3假设所有变量均为整型,则表达式(a=2,b=5,a+b++,a+b)的值是。A)7B)8C)5D)2参考答案:B参考分析:逗号表达式的计算结果是最后一个表达式的值。b++在所在表达式参与运算时的值是5,该表达式计算完成后,b进行自增运算,故a+b的值为2+6=8。2.4下列四组选项中,均不是C语言关键字的选项是。A)defineB)getcC)includeD)whileIFcharscanfgotypeprintfcasepow参考答案:A参考分析:是关键字的有:char、case、while。auto局部变量(自动储存)break无条件退出程序最内层循环caseswitch语句中选择项char单字节整型数据const定义不可更改的常量值continue中断本次循环,并转向下一次循环defaultswitch语句中的默认选择项do用于构成do.....while循环语句double定义双精度浮点型数据else构成if.....else选择程序结构enum枚举extern在其它程序模块中说明了全局变量float定义单精度浮点型数据for构成for循环语句goto构成goto转移结构if构成if....else选择结构int基本整型数据long长整型数据registerCPU内部寄存的变量return用于返回函数的返回值short短整型数据signed有符号数sizoef计算表达式或数据类型的占用字节数static定义静态变量struct定义结构类型数据switch构成switch选择结构typedef重新定义数据类型union联合类型数据unsigned定义无符号数据void定义无类型数据volatile该变量在程序中执行中可被隐含地改变while用于构成do...while或while循环结构2.5下列四组选项中,均是C语言关键字的选项是。A)autoB)switchC)signedD)ifenumtypedefunionstructincludecontinuescanftype参考答案:B参考分析:不是关键字的:include、scanf、type*2.6下面四个选项中,均是不合法的用户标识符的选项是。A)AB)floatC)b-aD)_123P_0la0gototempdo_AintINT参考答案:C参考分析:合法的有:A、P_0、la0、_A、_123、temp、INT。**2.7C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符。A)必须为字母B)必须为下划线C)必须为字母或下划线D)可以是字母、数字和下划线中的任一种字符参考答案:C参考分析:教材中只是强调首字符必须为字母,我们应当知道,在语言系统中,下划线和字母具有同等的“法律效力”。*2.8下面四个选项中,均是合法整型常量的选项是。A)160B)-0xcdfC)-01D)-0x48a-0xffff01a986,0122e50110xe06680x参考答案:A参考分析:不合法的B2,C2,C3,D2。解释:A2:-0xffff十六进制数本身已经包含了符号位,一般不前面加符号位,但加上符号位也不错误;C3:0668在有些C系统中,八进制数中允许出现8,但是通常不允许使用8;D3:0x显然后面缺少数值,但在TC中是允许的。*2.9下面四个选项中,均是不合法的整型常量的选项是。A)--0f1B)-0XcdfC)-018D)-0x48eg-0xffff017999-068001112,4565e203f参考答案:D参考分析:不合法的A1,B3,C1,C3,D。解释:A1:--0f1十六进制数没有0x,显然不合法,这里需要讨论的是常量前面允许不允许加上--号,是否可以负负得正,显然不可以,--在C中是自减运算,它只适用于变量;B1:0XcdfX大写也可以!C3:5e2是个实型数。*2.10下面四个选项中,均是不合法的浮点数的选项是。A)160.B)123C)-.18D)-e30.122e4.2123e4.234e3.e50.01e3参考答案:B参考分析:不合法的有A3,B,D1。部分解释:A1,D2:C语言中小数点前面或后面的0可以省略。但是不能只有小数点自身;A3,B3,D1:e的前后必须有合法数字。1.e2.1e2合法,.e2不合法;B1:123是整型数,不是浮点数。*2.11下面四个选项中,均是合法的浮点数的选项是。A)+1e+1B)-.60C)123eD)-e35e-9.412e-41.2e-.4.8e-403e2-8e5+2e-15.e-0参考答案:B参考分析:不合法的有A2:阶码不能为小数;A3:浮点数的尾数及阶码不能用八进制数表示;C1:e后必须有整数,C2:阶码不能为小数;D1:缺少尾数。*2.12下面四个选项中,均是合法转义符的l选项是。A)'\''B)'\'C)'\018'D)'\\0''\\''\017''\f''\101''\n''\''xab''x1f'参考答案:A参考分析:\后面的数字,c总是按照八或十六进制解释。由于c支持扩展ASCII字符集,所以,八进制数范围在0~377,十六进制数范围在00~ff。*2.13下面四个选项中,均是不合法的转义符的选项是。A)'\'B)'\1011'C)'\011'D)'\abc''\\''\''\f''\101''\xf''\a''\}''x1f'参考答案:B参考分析:不合法的有B1,B2,B3,C3,D1,D3;但B3和C3值得讨论,实际上,'\a'是一个转义字符(07beep)。C中只有少数字母是转义字符,大多数字母不是。像'\c'就不是,它就是字符c自身,非转义字母加\也仅表示它本身。C3'\}'也表示自身。本题的命题人显然不知道'\a'也是转义字符。*2.14下面正确的字符常量是。A)cB)'\\''C)'W'D)参考答案:C*2.15下面四个选项中,均是不正确的八进制或十六进制数的选项是。A)016B)0abcC)010D)0a120x8f017-0x117ff0180xa0x16-123参考答案:D参考分析:不正确的有A3:非法八进制数;B1、D1、D2:缺少x;D3是十进制数。2.16下面四个选项中,均是正确的八进制或十六进制数的选项是。A)-10B)0abcC)0010D)0a120x8f-017-0x11-0x123-0110xc0xf1-0xa参考答案:C参考分析:不正确的有A1:这是十进制数;B1、D1:缺少x2.17下面四个选项中,均是正确的数值常量或字符常量的选项是。A)0.0B)aC)'3'D)+0010f3.9e-2.50110xabcd8.9e1e10xFF002e2'&''\'0a50.参考答案:D参考分析:不正确的有A2、C4:不是ox打头;A3:e后不是整数;B1是字符串;B2:2.5不是整数。2.18下面不正确的字符串常量是。A)'abc'B)12'12C)0D)参考答案:A参考分析:与PASCAL不同,B)字符串内的单引号不需双写。C语言中,在不引起误解的情况下,双引号界定的字符串里的单引号可以不加转义标志\,单引号界定的双引号字符也可以不加转义标志\。2.19对应以下各代数式中,若变量a和x均为double类型,则不正确的c语言表达式是。A)ex^2/2exp(x*x/2)/sqr(2*3.14159)√2πB)½(ax+a+x/4a)1.0/2.0*(a*x+(a+x)/(4*a))C)√sinx2.5sqrt((pow(sin(x*3.14159/180),2.5))D)x2-e5x*x-exp(5.0)参考答案:C2.20若有代