1、国家二级 C语言机试( C语言基础知识)模拟试卷 6及答案与解析 一、选择题 1 以下叙述中错误的是 ( A)结构化程序由顺序、分支、循环三种基本结构组成 ( B) C语言是一种结构化程序设计语言 ( C)使用三种基本结构构成的程序只能解决简单问题 ( D)结构化程序设计提倡模块化的设计方法 2 C语言源程序名的后缀是 ( A) exe ( B) obj ( C) c ( D) cp 3 以下叙述中正确的是 ( A)程序的算法只能使用流程图来描述 ( B) N S流程图只能描述简单的顺序结构的程序 ( C)计算机可以直接处理 C语言程序,不必进行任何转换 ( D)结构化程序的三种基本结构是循环
2、结构、选择结构、顺序结构 4 计算机能直接执行的程序是 ( A)目标程序 ( B)可执行程序 ( C)汇编程序 ( D)源程序 5 下列叙述中正确的是 ( A)在 C程序中: main函数的位置是固定的 ( B) C程序中所有函数之间都可以相互调用 ( C)每个 C程序文件中都必须要有一个 main函数 ( D)在 C程序的函数中不能定义另一个函数 6 以下叙述中正确的是 ( A)程序的主函数名除 main外,也可以使用 Main或 main ( B)在 C程序中,模块化主要是通过函数来实现的 ( C)程序可以包含多个主函数,但总是从第一个主函数处开始执行 ( D)书写源程序时,必须注意缩进格
3、式,否则程序会有编译错误 7 以下叙述中正确的是 ( A) C程序中的每一行只能写一条语句 ( B)简单 C语句必须以分号结束 ( C) C语言程序中的注释必须与语句写在同一行 ( D) C语句必须在一行内写完 8 有以下程序 #include stdio h main0 inta=0, b=0; /*给 a赋值 a=10-b=20;给 b赋值 */ printf(a+b= din, a+b); /*输出计算结果 */ 程序运行后的输出结果是 ( A) a+b=30 ( B) a+b=10 ( C)出错 ( D) a+b=0 9 若变量已正确定义并赋值,以下不能构成 C语句的选项是 ( A)
4、A=a+b; ( B) B+; ( C) a=a+b ( D) A?a: b; 10 以下选项中不合法的标识符是 ( A) FOR ( B) a ( C) print ( D) 0 11 以下选项中,能用作用户标识符的是 ( A) 0 ( B) 8 8 ( C) yoid ( D) unsigned 12 以下选项中,不合法的 C语言用户标识符是 ( A) Aabc ( B) a-b ( C) a b ( D) 1 13 阅读以下程序 #include stdio h main( ) intcase; floatprintF; printf(请输入 2个数: ); scanf( d f, ca
5、se, printF); printf( d fn, case, printF); 该程序在编译时产生错误,其出错原因是 ( A)定义语句出错, printF不能用作用户白定义标识符 ( B)定义语句出错, case是关键字,不能用作用户自定义标识符 ( C)定义语句无错, scanf不能作为输入函数使用 ( D)定义语句无错, printf不能输出 case的值 14 关于 C语言的变量,以下叙述中错误的是 ( A)所谓变量是指在程序运行过程中其值可以被改变的量 ( B)变量所占的存储单元地址可以随时改变 ( C)程序中用到的所有变量都必须先定义后才能使用 ( D)由三条下划线构成的符号名是
6、合法的变量名 15 以下叙述中正确的是 ( A)标识符的长度不能任 意长,最多只能包含 16个字符 ( B)语言中的关键字不能作变量名,但可以作为函数名 ( C)用户自定义的标识符必须 见名知义 ,如果随意定义,则会出编译错误 ( D)标识符总是由字 *、数字和下划线组成,且第一个字符不得为数字 16 以下叙述中正确的是 ( A)在 C程序中的八进制和十六进制,可以是浮点数 ( B)八进制数的开头要使用英文字 *O,否则不能与十进制区分开 ( C)整型变量可以分为 int型、 short型、 long型和 unsigned型四种 ( D)英文大写字 *x和英文小写字 *x都可以作为二进 制数字
7、的开头字符 17 以下选项中能表示合法常量的是 ( A) 007 ( B) 1 5E2 0 ( C) ( D) 1.2 18 以下选项中正确的定义语句是 ( A) doublea=b=7; ( B) doublea; b; ( C) double, a, b; ( D) doublea=7, b=7; 19 C语言中 double类型数据占字节数为 ( A) 4 ( B) 12 ( C) 8 ( D) 16 20 以下选项中,值为 1的表达式是 ( A) 1-0 ( B) 1-0 ( C) 1-0 ( D) 0-0 21 以下不合法的字符常量是 ( A) ( B) ( C) 018 ( D)
8、xcc 22 以下选项中不能作为 C语言合法常量的是 ( A) cd ( B) 0 1e+6 ( C) a ( D) 011 23 已知大写字 *A的 ASC 码是 65,小写字 *a的 ASC 码是 97。以下不能将变量C中的大写字 *转换为对应小写字 *的语句是 ( A) c=(A+c) 26-a ( B) c=C+32 ( C) c=C-A+a ( D) c=(C-A1 26+a 24 若有定义语句 charc=101;则变量 C在内存中占 ( A) 2个字节 ( B) 3个字节 ( C) 1个字节 ( D) 4个字节 25 以下叙述中正确的是 ( A)字符常量在内存中占 2个字节 (
9、B)转义字符要用双引号括起来,以便与普通的字符常量区分开 ( C)字符常量需要用单引号括起来 ( D)字符常量是不能进行关系运算的 26 有以下程序 main( ) charc1=A, c2=Y; printf( d, dn, C1, c2); 程序的 输出结果是 ( A)输出格式不合法,输出出错信息 ( B) 65 90 ( C) 65, 89 ( D) A Y 27 以下正确的字符串常量是 ( A) abc ( B) OlympicGames ( C) ( D) 28 表达式: (int)(double)9/2) 9 2的值是 ( A) 0 ( B) 4 ( C) 3 ( D) 5 29
10、有以下定义: inta; longb; doublex, y;则以下选项中正确的表达式是 ( A) a (int)(x-y) ( B) a*x y ( C) (a*y) b ( D) y=x+y=x 30 C语言程序中,运算对象必须是整型数的运算符是 ( A) / ( B) ( C) ( D) * 31 设变量已正确定义并赋值,以下正确的表达式是 ( A) x=y+z+5, +y ( B) int(15 8 5) ( C) x=y*5=x+z ( D) x=25 5 0 32 若变量均已正确定义并赋值,以下合法的 C语言赋值语句是 ( A) x=n 2 5; ( B) x+n=i; ( C)
11、x=5=4+1; ( D) x=y=5; 33 若有以下程序 #include stdio h main( ) inta=-11 b=10; a/=b/=4: printf( d dn, a, b); 则程序的输出结果是 ( A) -1-2 ( B) 5-2 ( C) 4-3 ( D) 41762 34 若有定义和语句: inta, b; scanf( d, d, , a, b);以下选项中的输入数据,不能把值 3赋给变量 a、 5赋给变量 b的是 ( A) 3 5 ( B) 3, 5, ( C) 3, 5 ( D) 75, 4 35 有以下程序 #include main( ) intx,
12、y, z; x=y=1; z=x+, y+, +y; printf( d, d, dn, x, y, z); ) 程序运行后的输出结果是 ( A) 2, 3, 1 ( B) 2, 3, 2 ( C) 2, 3, 3 ( D) 2, 2, 1 36 若有以下程序 #include stdio h main( ) inta=0, b=0, c=0; c=(a-=+a), (a+=b, b+=4); printf( d, d, dn, a, b, c); ) 则程序的输出结果是 ( A) 0, 4, 4 ( B) 1, 4, 1 ( C) 0, 4, 0 ( D) 174, 4 37 以下选项中,当
13、 x为大于 1的奇数时,值为 0的表达式是 ( A) x/2 ( B) x 21=0 ( C) x 2=0 ( D) x 2=1 38 以下关于逻辑运算符两侧运算对象的叙述中正确的是 ( A)只能是整数 0或非 0整数 ( B)可以是结构体类型的数据 ( C)可以是任意合法的表达式 ( D)只能是整数 0或 1 39 表示关系式 xyz的 C语言表达式的是 ( A) (x =y)(y =x) ( B) (x =y =z) ( C) (x =y) (y =x) ( D) (x =y)!(y =x) 40 与数学表达式 xyz对应的 C语言表达式是 ( A) (x =y =z) ( B) (x =
14、y) (y =z) ( C) (x =y)!(y =z) ( D) (x =y)(y =x) 41 下列关系表达式中,结果为 假 的是 ( A) (3 4) 1 ( B) (3+4) 6 ( C) (31=4) 2 ( D) 3 =4 国家二级 C语言机试( C语言基础知识)模拟试卷 6答案与解析 一、选择题 1 【正确答案】 C 【试题解析】 结构化程序由顺序结构 、选择结构和循环结构 3种基本结构组成。已经证明,由 3种基本结构组成的算法可以解决任何复杂的问题。由 3种基本结构所构成的算法称为结构化算法;由 3种基本结构所构成的程序称为结构化程序。 【知识模块】 C语言基础知识 2 【正确
15、答案】 C 【试题解析】 由 C语言构成的指令序列称为 C源程序,源程序文件的后缀为“ c”。源程序经过 c编译程序编译生成后缀为 “ obi”的二进制文件 (称为目标文件 ),然后由称为 ”连接程序 ”(Link)的软件把目标文件与 C语言提供的各种库函数连接起来,生成后缀为 “ exe”的 可执行文件。 【知识模块】 C语言基础知识 3 【正确答案】 D 【试题解析】 结构化程序有 _三种基本结构循环结构、选择结构、顺序结构,描述算法常见的有文字描述,流程图,盒图,伪代码等。 N-S图为盒图,可以描述比较复杂的程序结构,而计算机不能直接处理 C程序,只能处理二进制代码。 【知识模块】 C语
16、言基础知识 4 【正确答案】 B 【试题解析】 把由高级语言编写的程序称为 ”源程序 ”,由二进制代码表示的程序称为 ”目标程序 ”(后缀名为 obi),由汇编语言编写的程序称为 ”汇编程序 ”。为了把源程序转换成机器能接受的目标程序,软件工作者编制了一系列软件,通过这些软件可以把用户按规定语法写出的语句一一翻译成二进制的机器指令。这种具有翻译功能的软件称为 ”编译程序 ”,每种高级语言都有与它对应的编译程序。 c源程序经过 C编译程序编译之后生成一个后缀为 obi的二制进文件 (称为目标文件 ),这个 F1标程序要和 C语言的库函数相链接生成一个后缀为 exe的文件,这个文件可以在操作系统中
17、直接执行,称为可执行程序。 【知识模块】 C语言基础知识 5 【正确答案】 D 【试题解析】 当一个程序作 为另一个程序的子程序,并且它自己不独立执行时,这该程序可以没有主函数。主函数的位置不固定,并且可以调用程序中的其他函数,而其他函数不可以调用 main(1函数。 C语言 规定,不能在函数的内部定义函数。 【知识模块】 C语言基础知识 6 【正确答案】 B 【试题解析】 C语言中任何一个有效的程序都有且只能有一个 main( )函数,不能写成其他形式,一个 C程序总是从主函数开始执行,到 main函数体执行完后结束,而 不论 main函数在整个程序中的位置如何。而为了代码清晰容易看懂,最好
18、加上注释,这是程序书写风格,与编译无关。 【知识模块】 C语言基础知识 7 【正确答案】 B 【试题解析】 C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。 C语言注释是比较自由的,可以写在一行或者多行。 C语言规定每条语句和数据定义的最后必须有一个分号,分号是 C语句的必要组成部分。 【知识模块】 C语言基础知识 8 【正确答案】 D 【试题解析】 C语言规定,在字符 ”/*”和其后紧跟的第一个字 符 ”*/”中间的部分是注释内容一且注释部分的内容不参与程序的编译和运行,因此,本题中稗序语句 ”a=10; b=20; ”没有执行。 【知识模块】 C语言基础知识 9 【正确答
19、案】 C 【试题解析】 C语言语句的表示为分号,不加分号的表达式不能看成 C语句。 【知识模块】 C语言基础知识 10 【正确答案】 B 【试题解析】 合法的标识符要满足组成字符为 az以及 A z,数字字符 0到 9和下划线,其中数字不开头,不能是关键字。选项 B中,不属于组成字符,是错误的。 【知识模块】 C语言基础知识 11 【正确答案】 A 【试题解析】 在 C语言中,用户的标识符只能由字 *或下划线开始。一般强调文见其义的命名方法。但是 C语言中的保留字不能用作用户的标识符。而选项 C和D全部为保留字,选项 B中以数字开头,这些都不正确。 【知识模块】 C语言基础知识 12 【正确答
20、案】 B 【试题解析】 在 C语言中的用户标识符只能由字 *,数字和下划 *组成,并且第一个字符必须是字 *或卜划线,在选项 A中出现非法的字符。 【知识模块】 C语言基础知识 13 【正确答案】 B 【试题解析】 case是 C语言中的一个关键字,不能用作用户标识符来使用,所以这段程序代码存编译时就会出错。 【知识模块】 C语言基础知识 14 【正确答案】 B 【试题解析】 变最是指在程序运行过程中其值可以改变的值,一个变量实质上是代表了内存中的某个存储单元。在程序中对某个变量的操作实际上就是对这个存储单元的操作,程序运行期间,这个分配的存储单元不会改变,但是其值可以变化。变量命名要符合标识
21、符的规定,其中下划线是标识符的组成字符。程序中所有变量都必须先定义后使用。 【知识模块】 C语 言基础知识 15 【正确答案】 D 【试题解析】 标识符就是 C语言中的变量名、函数名、数组名、文件名、类型名等。 C语言合法标识符的命名规则是: 标识符由字 *、数字和下划线组成; 第一个字符必须为字 *或下划线: 大写字 *与小写字 *被认为是两个不同的字符; C语言规定了一个标识符允许的字符个数,为 32,超过的字符将不被识别。 C语言的标识符可分为以下 3类: 关键字,不能用于为自定义标识符命名。 预定义标识符。 用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用
22、来给变量、函数、 数组等命名,一般做到见名知义,但是没有特殊规定。 【知识模块】 C语言基础知识 16 【正确答案】 C 【试题解析】 整型变量分为以下 4种类型: 基本型:以 int表示。 短整犁:以 shortint表示,或以 shott表示。 长整型:以 longint表示,或以 long表示。 无符号型:以 unsignedint表示,选项 Clr确,实型常最仪有十进制表示形式,八进制以数字 0开头,十六进制开头为 0x或者 0x,不是二进制。 【知识模块】 C语言基础知识 17 【正确答案】 A 【试题解 析】 选项 D, 1200中间不能有逗号,否则编译时会认为是 1或出错。选项
23、B, 2 0错误,必须为整数。选项 C,要表示字符斜杠常量 ,应该在反斜杠的前而再加上一个反斜杠。选项 A为字符 *常量,为正确选项。 【知识模块】 C语言基础知识 18 【正确答案】 D 【试题解析】 在 C语言中,可以用一条语句同时定义几个同类型的变量,变量之间用逗号隔开。 【知识模块】 C语言基础知识 19 【正确答案】 C 【试题解析】 double类型所占字节为 8。 【知识模块】 C语言基础知识 20 【正确答案】 C 【试题解析】 在 C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为其对应的 ASC 码值再参与整数运算。字符 1对应的 ASC 码值是 49,
24、字符 0对应的 Asc 码值是 48,字符 0是字符串结束标识符 NULL,其对应的 ASC 码值是 0。 【知识模块】 C语言基础知识 21 【正确答案】 C 【试题解析】 在 C语言中,一个字符常量代表 Asc 字符集中的一个字符,在程序中用单引号把一个字符括起来用为字符常量。转义字符常量也是必须括在一对单 引号内,以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的ASC 字符。在选项 C中, 018是用八进制数来代表一个字符常鼙,所以其中的数字只能小于 8,并不包括 8。 【知识模块】 C语言基础知识 22 【正确答案】 A 【试题解析】 常量指的是在程序的运行过程中,其值不能被改
25、变的量。在 C语言中,包括整型常量、实型常量、字符常量和字符串常量等类型。选项 B0 1e+6是用指数形式表示的实型常量。在 C语言中,用以 ”e”或 ”E”后一个整数来表示以10为底的幂数。以用这种形式表示实型常量时要注 意 C语言的语法规定,字 *e或E之前必须要有数字,且 e或 E后面的指数必须为整数,并且在字 *e或 E的前后以及数字之间不得插入空格。选项 C中用双引号括起来表示的字符串 a。选项 D中 011表示用单引号括起来的转义字符八制进数 011。选项 A表示的字符常量是非法的,在用单引号表示的字符常量中只能包含一个字符,而选项 A中包含两个字符。 【知识模块】 C语言基础知识
26、 23 【正确答案】 A 【试题解析】 由题意可知,小写字符 a和大写字符 A的 AsC 代码相差为 32,所以选项 C能将大写字符 C的 ASC 代码 转换为小写字符 c的 ASC 代码:选项D和 C左侧的表达式都是大写字符 C与人写字符 A的差与 a的 ASc 代码的和就是小写字符 c的 ASC 代码。而选项 A中应该是加上 a,而不是减去 a。 【知识模块】 C语言基础知识 24 【正确答案】 C 【试题解析】 每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以 ASC 码的形式存放在变量的内存单元之中的。 【知识模块】 C语言基础知识 25 【正确答案】 C 【试题
27、解析】 在程序中用单引号把一个字符括起来作为字符 常量。转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后跟一个特定的字符,用来代表某一个特定的 ASC 字符,这些字符常量也必须括在一对单引号内,和整型常量一样,字符常量也可以进行关系运算的。 【知识模块】 C语言基础知识 26 【正确答案】 C 【试题解析】 C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。在输出时,允许把字符变量按整型量输出,也允许把整型量按字符量输出。 【知识模块】 C语言基础知识 27 【正确答案】 C 【试题解析】 字符串常量是由双 引号括起来的一串字符。在 C语言中,以一个反斜线开头后跟一个特定的
28、字符,用来代表一个特定的 ASC 字符。利用两个 表示一个反斜杠,因此选项 D的表示无法确认表示几个反斜杠。 【知识模块】 C语言基础知识 28 【正确答案】 C 【试题解析】 这个表达式的计算过程为,首先求出 9除以 2的商等于 4,再把其强制转化为实型数据为 4 0,然后再强制转 4,减去 9对 2求余数 1,得到其结果等于 3。 【知识模块】 C语言基础知识 29 【正确答案】 A 【试题解析】 选项 B中运算符不存在, 选项 C中 double类型不能进行取余( )操作,要求两个运算数必须是整数,选项 D中 x+y=x错误。 【知识模块】 C语言基础知识 30 【正确答案】 B 【试题
29、解析】 要求参与运算的运算量为整型,其他三个运算符对于参与运算的运算量没有直接要求。 【知识模块】 C语言基础知识 31 【正确答案】 A 【试题解析】 在赋值表达式中,赋值符号 ”: ”的左边只能为赋值的变量,不能为表达式,右边可以为常量或者是表达式,故选项 C错误;在取余运算中,运算符 ” ”两边都必须是整型数据,所以选 项 B、 D错误,选项 A是 C语言中的逗号表达式。 【知识模块】 C语言基础知识 32 【正确答案】 D 【试题解析】 选项 D的含义是把关系表达式 y=5的值赋给变量 x。所以这是一条正确的赋值语句。因为赋值运算符左侧的操作数必须是一个变量,而不能是表达式或者常量。因
30、为求余运算符 ” ”两侧的运算对象都应当是整型数据。 【知识模块】 C语言基础知识 33 【正确答案】 B 【试题解析】 对于语句 a/=b/=-4;相当子 a=a/(b=b/-4); a初值为 -11, b的初值为 10,则运算以后 10/-4值为 -2, -11/-2值为 5。 【知识模块】 C语言基础知识 34 【正确答案】 C 【试题解析】 在格式控制字符串中插入其他字符,则在输入的时候应该据实加入到输入流中,不能随意加入空格等,否则无法得到正确的输入结果。 【知识模块】 C语言基础知识 35 【正确答案】 A 【试题解析】 用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形
31、式为:表达式 1,表达式 2, ,表达式 n。最后一个表达式的值就是此逗号表达式的值。所以选项 A为 C语言中的逗号表达式。赋值表达 式的左侧只能是变量,不能是常量或表达式。强制类型转换表达式的形式为: (类型名 )(表达式 ),其中 (类型名 )称为强制类型转换运算符,数据类型两边的圆括号不能省略。 【知识模块】 C语言基础知识 36 【正确答案】 C 【试题解析】 对于语句 c=(a+=+b, b+=4);首先计算 a=a+(+b), ab初值为0,则计算以后 a为 1, b为 1,然后计算 b+=4,得到 b的值为 5,此时表达式b+=4的值为整个逗号表达式的值,因此 c的值为 5。 【
32、知识模块】 C语言基础知识 37 【正确答案】 C 【试题解析】 由于 x为大于 1的奇数,因此 x 2取余的值为 1,和 0不相等。 【知识模块】 C语言基础知识 38 【正确答案】 C 【试题解析】 逻辑运算符两侧的运算对象叮以是任意合法的表达式。逻辑表达式的运算结果或者为 1(“真 ”),或者为 0(“假 ”)。 【知识模块】 C语言基础知识 39 【正确答案】 C 【试题解析】 表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。 【知识模块】 C语言基础知识 40 【正确答案】 B 【试题解析】 若要表示 x大于 等于 y,同时 y大于等于 z,需要用逻辑与表达式连接。 【知识模块】 C语言基础知识 41 【正确答案】 C 【试题解析】 关系表达式和逻辑表达式的结果为非零或者 0,其中 0表示假,而非零表示真,由于 3! =4的结果为 1,而 1 2的结果为假。 【知识模块】 C语言基础知识