1、国家二级 C语言机试(选择题)模拟试卷 12及答案与解析 一、选择题 1 以下叙述中正确的是( )。 ( A) C语言程序总是从 main函数开始执行 ( B) C语言程序总是从最前面的函数开始执行 ( C) C语言程序中 main函数必须放在程序的开始位置 ( D) C语言程序所调用的函数必须放在 main函数的前面 2 以下叙述中正确的是( )。 ( A)每个后缀为 .C的 C语言源程序都可以单独进行编译 ( B)每个后缀为 .C的 C语言源程序都应该包含一个 main函数 ( C)在 C语言程序中, main函数必须放在其 他函数的最前面 ( D)在 C语言程序中,只有 main函数才可
2、单独进行编译 3 以下选项中叙述正确的是( )。 ( A)函数体必须由 开始 ( B) C程序必须由 main语句开始 ( C) C程序中的注释可以嵌套 ( D) C程序中的注释必须在一行完成 4 以下叙述中错误的是( )。 ( A)书写风格良好的程序执行效率高 ( B)书写风格良好的程序易读性好 ( C) C程序可以在一行上写多条语句 ( D) C程序允许将一条语句分写在多行上 5 以下叙述中正确的是( )。 ( A)实用的 C语言源程序总是由 一个或多个函数组成 ( B)用户自己定义的函数只能调用库函数 ( C)不同函数的形式参数不能使用相同名称的标识符 ( D)在 C语言的函数内部,可以
3、定义局部嵌套函数 6 有以下程序 #include main() int x=010, y=10; printf(“%d,%dn“, +x, y-); 程序运行后的输出结果是( )。 ( A) 9,10 ( B) 11,10 ( C) 010,9 ( D) 10,9 7 设有两行定义语句: int scanf; float case; 则以下叙述正确的是( )。 ( A)第 2行语句不合法 ( B)两行定义语句都合法 ( C)第 1行语句不合法 ( D)两行定义语句都不合法 8 以下能正确表述算式 sin(2r+30)的 C语言表达式是( )。 ( A) sin(2*3.14*r+3.14*3
4、0/180.0) ( B) sin(2*r+ 30 ) ( C) sin(2*3.14*r+ 30 ) ( D) sin(2*3.14*r+30*3.14/360.0) 9 设有定义: int x=11,y=12,z=0;,以下表达式值不等于 12的是( )。 ( A) z=(x=y) ( B) (z=x,y) ( C) z=(x,y) ( D) (z,x,y) 10 以下可以将任意一个两位整数 n的个位数与十位数对换的表达式为( )。 ( A) (n-n/10*10)*10+n/10 ( B) n-n/10*10+n/10 ( C) n/10+(n-n/10) ( D) (n-n/10)*1
5、0+(n/10) 11 设有以下程序段 int y; y=rand() % 30+1; 则变量 y的取值范围是( )。 ( A) 0 y30 ( B) 0y30 ( C) 1 y 30 ( D) 1 y30 12 以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。 ( A)可以是任意合法的表达式 ( B)只能是整数 0或非 0整数 ( C)可以是结构体类型的数据 ( D)只能是整数 0或 1 13 有以下程序 #include main() char c1,c2; c1=A+8-4; c2=A+8-5; printf( “%c,%dn“,c1,c2); 已知字母 A的 ASCII码为 65
6、,程序运行后的输出结果是( )。 ( A) E,68 ( B) D,69 ( C) E,D ( D)输出无定值 14 以下选项中,合法的一组 C语言数值常量是( )。 ( A) 12. 0Xa23 4.5e0 ( B) 028 .5e-3 -0xf ( C) .177 4e1.5 0abc ( D) 0x8A 10,000 3.e5 15 以下选项中不合法的标识符是( )。 ( A) int i=0,k=18; 则不符合 C语言规定的赋值语句是( )。 ( A) i=a%11; ( B) i=(a+k) main() int s,t,A=10; double B=6; s=sizeof(A);
7、 t=sizeof(B); printf(“%d,%dn“,s,t); 在 VC6平台上编译运行,程序运行后的输出结果是( )。 ( A) 4,8 ( B) 4,4 ( C) 2,4 ( D) 10,6 18 以下选项中,能用作数据常量 的是( )。 ( A) 115L ( B) 0118 ( C) 1.5e1.5 ( D) o115 19 按照 C语言规定的用户标识符命名规则,不能出现在标识符中的是( )。 ( A)连接符 ( B)大写字母 ( C)数字字符 ( D)下划线 20 设变量已正确定义并赋值,以下正确的表达式是( )。 ( A) x=y+z+5, +y ( B) int(15.8
8、%5) ( C) x=y*5=x+z ( D) x=25%5.0 21 设有定义: int x=2; 以下表达式中,值不为 6的是( )。 ( A) 2*x, x+=2 ( B) x+,2*x ( C) x*=(1+x) ( D) x*=x+1 22 有以下程序 #include main() int x, 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 23 C源程序中不能表示的数制是( )。 ( A)二进制 ( B)
9、八进制 ( C)十进制 ( D)十六进 制 24 以下选项中,能用作用户标识符的是( )。 ( A) _0_ ( B) 8_8 ( C) void ( D) unsigned 25 若有定义语句: int x=10; 则表达式 x-=x+x的值为( )。 ( A) -10 ( B) -20 ( C) 0 ( D) 10 26 以下选项中能表示合法常量的是( )。 ( A) 007 ( B) 1.5E2.0 ( C) ( D) 1,200 27 以下定义语句中正确的是( )。 ( A) char A=65+1,b=b; ( B) int a=b=0; ( C) float a=1,*b= ( D
10、) double a=0.0; b=1.1; 28 若变量 x、 y已正确定义并赋值,以下符合 C语言语法的表达式是( )。 ( A) +x,y=x- ( B) x+1=y ( C) x=x+10=x+y ( D) double(x)/10 29 以下选项中可用作 C程序合法实数的是( )。 ( A) .1e0 ( B) 3.0e0.2 ( C) E9 ( D) 9.12E 30 下列定义变量的语句中错误的是( )。 ( A) float US$; ( B) double int_; ( C) char For; ( D) int _int; 31 表达式: (int)(double)9/2)
11、- 9%2 的值是( )。 ( A) 3 ( B) 0 ( C) 4 ( D) 5 32 以下选项中关于 C语言常量的叙述错误的是( )。 ( A)经常被使用的变量可以定义成常量 ( B)常量分为整型常量、实型常量、字符常量和字符串常量 ( C)常量可分为数值型常量和非数值型常量 ( D)所谓常量,是指在程序运行过程中,其值不能被改变的量 33 以下选项中,不合法的 C语言用 户标识符是( )。 ( A) a-b ( B) AaBc ( C) a_b ( D) _1 34 若变量均已正确定义并赋值,以下合法的 C语言赋值语句是( )。 ( A) x=y=5; ( B) x=n%2.5; ( C
12、) x+n=i; ( D) x=5=4+1; 35 以下不合法的数值常量是( )。 ( A) 8.0E0.5 ( B) 1e1 ( C) 011 ( D) 0xabcd 36 以下关于 C语言数据类型使用的叙述中错误的是( )。 ( A)若只处理 “真 “和 “假 “两种逻辑值,应使用逻辑类型 ( B)若要保存 带有多位小数的数据,可使用双精度类型 ( C)若要处理如 “人员信息 “等含有不同类型的相关数据,应自定义结构体类型 ( D)整数类型表示的自然数是准确无误差的 37 设有定义: int k=0; 以下选项的四个表达式中与其他三个表达式的值不相同的是( )。 ( A) k+ ( B)
13、k+=1 ( C) +k ( D) k+1 38 以下叙述中错误的是( )。 ( A) C程序在运行过程中所有计算都以十进制方式进行 ( B) C程序在运行过程中所有计算都以二进制方式进行 ( C)所有 C程序都需要编译链接无误后才 能运行 ( D) C程序中字符变量存放的是字符的 ASCII值 39 以下关于 C语言的叙述中正确的是( )。 ( A) C语言中的注释不可以夹在变量名或关键字的中间 ( B) C语言中的变量可以在使用之前的任何位置进行定义 ( C)在 C语言算术表达式的书写中,运算符两侧的运算数类型必须一致 ( D) C语言的数值常量中夹带空格不影响常量值的正确表示 40 以下
14、不合法的字符常量是( )。 ( A) 018 ( B) “ ( C) ( D) xcc 国家二级 C语言机试(选择题)模拟试卷 12答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 C语言中 main函数的位置可以任意,而且不管 main函数放在哪里,程序的执行总是从 main函数开始,并在 main函数结束,答案选 A。 【知识模块】 C语言概述 2 【正确答案】 A 【试题解析】 每个 C程序可以包含多个源程序文件,源程序文件的扩展名为 .c,且可以单独进行编译。每个 C程序有且只能有一个 main函数, main函数的位置可以任意,而且不管 main函数位置怎么变化,程序都会以
15、 main函数作为入口,所以答案选 A。 【知识模块】 C语言概述 3 【正确答案】 A 【试题解析】 编写函数的时候需要用 “将其函数体括起来表示是该函数的一部分,所以函数体必须由 “开始,选项 A正确; C程序必须由 main函数开始,而不是 main语句,选项 B)错误; C程序中的注释有单行注释 “/“和多行注释“/*/“ ,多行注释以 “/*“开始,直到遇到 “*/“结束,只是寻找配套,而不能嵌套,选项 C)、 D)错误;答案选 A)。 【知识模块】 C语言概述 4 【正确答案】 A 【试题解析】 程序的执行效率和程序的 时间复杂度和空间复杂度有关,而良好的书写风格仅能增加程序的可读
16、性,所以答案选 A。 【知识模块】 C语言概述 5 【正确答案】 A 【试题解析】 一个 C程序可以有一个或多个程序文件,所以也可以有一个或多个函数,选项 A)正确;除了 main函数不能被其他函数调用之外,用户自定义函数可以调用其他任意函数,选项 B)错误;函数是一个独立的模块,不同函数之间的定义相互没有影响,所以标识符可以相同,选项 C)错误;函数体内部只可以调用但是不可以定义其他函数,选项 D)错误;答案选 A)。 【知识模块】 C语 言概述 6 【正确答案】 A 【试题解析】 八进制整常数以数字 “0“作为前缀,格式控制符为 “%d“表示按照十进制输出,而且自加自减运算中, +x和 -
17、x都是先计算后使用该变量,而 x+和 x-是先使用该变量再计算,所以在输出的时候输出的是 x自加 1之后的十进制数字,即 9,还有 y自减之前的十进制数字,即 10,所以答案选 A 7 【正确答案】 A 【试题解析】 本题考查用户标识符,用户自己定义的标识符不能与关键字相同,并且尽量避免和预定义标识符相同。本题中 scanf为预定义标识符,可以作为用户标 识符 ;case为关键字,不能作为用户标识符,故而答案选 A。 【知识模块】 数据类型、运算符与表达式 8 【正确答案】 A 【试题解析】 考查算术表达式的写法, C中没有 ,需要用数值 3.14代替, C中sin函数的参数为弧度,角度 30
18、转成弧度应为 3.14*30/180。故而选 A。 【知识模块】 数据类型、运算符与表达式 9 【正确答案】 A 【试题解析】 考查运算符与表达式, A)中先计算 (x=y),为 0,将 0赋值给 z,表达式值为 0, A)错;选项 B)、 C)、 D)均涉及到逗号表达式,整个逗号表达式的值为最后一个表达式的值,所以均为 12。选 A)。 【知识模块】 数据类型、运算符与表达式 10 【正确答案】 A 【试题解析】 考查运算符与表达式,方法是想办法得到个位数字和十位数字,然后个位数字 *10+十位数字即可将个位数和十位数对换。 A)中, n/10*10将整数中的十位部分提取出来,然后用 n-n
19、/10*10即得该整数的个位数字, n/10得到十位数字, (n-n/10*10)*10+n/10即完成对换, A)正确。同时易得选项 B)、 C)、 D)三个选项都不正确,答案选 A)。 【知识模块】 数据类型、运算符与表达式 11 【正确答案】 A 【试题解析】 考查运算符与表达式, rand()%30求得范围在 0-29之间的数据,+1后的取值范围为 1-30( 1、 30也包括在内),答案选 A。 【知识模块】 数据类型、运算符与表达式 12 【正确答案】 A 【试题解析】 逻辑运算符两侧的运算对象可以任意合法的表达式,最终会根 据两侧表达式计算出的数值来判定该逻辑表达式为真( 1)或
20、假( 0)。答案选 A。 【知识模块】 数据类型、运算符与表达式 13 【正确答案】 A 【试题解析】 考查字符型数据。字符常量与其 ASCII码值一一对应,在计算的时候,一般是字符数据对应的 ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者 ASCII码。本题中, 8- 4结果为 4, A+4的结果为 69即 E,所以 c1=E,对应 ASCII码为 69。 8- 5为 3, A+3的结果为 68,即 D,所以c2=D,对应 ASCII码为 68。故而输出结果为 A)。 【知识模块】 数据类型、运算符与表达式 14 【正确答案】 A 【试题解析】 考查整型常量、实型常量。选项
21、B)的 “028“错,以 0开头表示为八进制整常数,不能出现数字 8;选项 C)的 “4e1.5“错, e后面应为整数, “0abc“错,八进制整常数只能由 07构成;选项 D)的 “10,000“错, C语言没有千分号,所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 15 【正确答案】 A 【试题解析】 考查标识符的概念。 C语言规定 ,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线。符号 ?将 x、 y初始化为1,逗号表达式 z=x+,y+,+y;中先计算 z=x+,得到 x=2, z=1,计算 y+,得y=2,再计算
22、+y,得 y=3。所以最终结果为 x=2, y=3, z=1,答案选 A。 【知识模块】 数据类型、运算符与表达式 23 【正确答案】 A 【试题解析】 C语言中,能表示的数制有八进制、十六进制和十进制三种,没有二进制,答案选 A。 【知识模块】 数据类型、运算符与表达式 24 【正确答案】 A 【试题解析】 考查用户标识符。 C语言规定,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线。用户自定义的标识符不能与关键字相同,而且尽量避免与预定义标识符相同。选项B)不能以数字开始;选项 C)、 D)为 C语言关键字,不能作为用户标识符。答案
23、选 A)。 【知识模块】 数据类型、运算符 与表达式 25 【正确答案】 A 【试题解析】 考查复合赋值运算符。 x-=x+x与 x=x-(x+x)等价,所以输出结果为A)。 【知识模块】 数据类型、运算符与表达式 26 【正确答案】 A 【试题解析】 考查常量。科学计数法中 E后应为整数,选项 B)错;要表示反斜杠,应写作 ,选项 C)错; C语言没有千分号,选项 D)错。选项 A)表示的是八进制数 007所代表的字符串。答案选 A)。 【知识模块】 数据类型、运算符与表达式 27 【正确答案】 A 【试题解析】 定义变 量时不能连续赋值,选项 B)错;保存指针变量的地址应使用指向指针的指针
24、,选项 C)变量 c应为指向指针的指针,写作 *c; C语言中,分号为一个语句的结束标记,语句到 a=0.0;遇到分号该语句已经结束,所以变量 b定义时没有类型说明符,可以改作 double a=0.0,b=1.1;或者 double a=0.0;double b=1.1;选项 D)错;每个字符常量都有唯一一个 ASCII码与其对应,计算时,可以使用该字符常量也可以使用该字符常量对应的 ASCII码,选项 A)正确。 【知识模块】 数据类型、运算符与表达 式 28 【正确答案】 A 【试题解析】 考查运算符与表达式。赋值运算符左侧只能为变量,不能为表达式,所以选项 B)、 C)错。强制类型转换
25、时,数据类型两侧的圆括号不能省,选项 D)错,应写作 (double)x/10。选项 A)为逗号表达式,符合 C语言语法。答案选 A)。 【知识模块】 数据类型、运算符与表达式 29 【正确答案】 A 【试题解析】 考查实型常量的科学计数法。科学计数法中, e/E前后必须有数字并且后面的数字必须为整数,所以答案选 A。 【知识模块】 数据类型、运算符与表达 式 30 【正确答案】 A 【试题解析】 考查标识符。定义的变量名要符合表示符的命名规则: C语言规定,标识符由字母( AZ, az)、数字( 09)或者下划线( _)组成,并且第一个字符必须为字母或者下划线,由此答案选 A。 【知识模块】
26、 数据类型、运算符与表达式 31 【正确答案】 A 【试题解析】 考查运算符与表达式。表达式 (int)(double)9/2)- 9%2先计算(double)9/2,结果为 4.5。然后被强制转换成 int型,结果为 4。接着计算 9%2,结果为 1,最后计算 4-1,结果为 3,。所以答案选 A。 【知识模块】 数据类型、运算符与表达式 32 【正确答案】 A 【试题解析】 常量是指在程序运行过程中其值不发生改变的量,和使用次数无关,所以答案选 A。 【知识模块】 数据类型、运算符与表达式 33 【正确答案】 A 【试题解析】 考查用户标识符的命名规则。合法的标识符由字母、数字、下划线组成
27、并且第一个字符不能为数字,由此选项 A)不合法。答案选 A)。 【知识模块】 数据类型、运算符与表达式 34 【正确答案】 A 【试题解析 】 考查运算符与表达式。求余运算符 “% “要求参与运算的量均为整型,所以选项 B)错误;赋值运算符的左侧必须为变量而不能是表达式或者常量,选项 C)、 D)错;选项 A)中的语句 x=y=5;先判定关系表达式 y=5的值,然后把计算得到的值赋值给 x所以答案选 A)。 【知识模块】 数据类型、运算符与表达式 35 【正确答案】 A 【试题解析】 科学计数法中, e/E前后必须有数字并且后面的数字必须为整数,所以答案选 A。 【知识模块】 数据类型、运算符
28、与表达式 36 【正确答案】 A 【试 题解析】 C语言数据类型中没有逻辑类型,选项 A)叙述错误,所以答案选A)。 【知识模块】 数据类型、运算符与表达式 37 【正确答案】 A 【试题解析】 表达式 “k+“表示先取得变量 k的值作为整个表达式的值,然后变量 k再自加。所以除了选项 A)的表达式的值为 0外,其他几个选项的表达式的值均为 1,故而答案选 A)。 【知识模块】 数据类型、运算符与表达式 38 【正确答案】 A 【试题解析】 C语言中可以用八进制、十进制和十六进制表示整型数据,但是在编译时会将每条可执行语句都转换 为二进制的机器指令,所以 C程序运行过程中的所有计算都是以二进制
29、的方式进行的。 C程序经过编译链接成功后才能生成可执行程序,选项 C)表述正确;字符变量是字符数据在内存中的存储形式,存放的是字符的 ASCII值,选项 D)表述正确。故而答案选 A)。 【知识模块】 数据类型、运算符与表达式 39 【正确答案】 A 【试题解析】 2 2 C语言中的注释 “/*/“或者 “/“可以放在程序中的任何位置,但是不可以加在变量名或者关键字中间,会导致该变量名和关键字不被 C语言识别,选项 A)正确; C语言中变量的定义 必须在变量使用之前,而且定义时该变量的作用域一定要能涵盖该变量的使用,所以定义的位置不是任意的,选项 B)错误;算术运算符两侧的运算数类型可以不一致,如加减乘除运算符都没有对运算数类型进行限制,如果不一致,系统会对其进行相应的数据类型转换,选项C)错误;空格一般作为分隔符使用,数值常量中夹带空格就会把该数值常量分作两部分: 123和 12 3是不一样的,选项 D)错误;答案选 A)。 【知识模块】 数据类型、运算符与表达式 40 【正确答案】 A 【试题解析】 ddd表示 13位八进制数代表的字符 ,不能出现 8,所以选项 A)错误; 表示双引号符,选项 B)正确; 表示反斜线符 ,选项 C)正确;xcc表示由两位十六进制数 cc所代表的字符,选项 D)正确,所以答案选 A)。 【知识模块】 数据类型、运算符与表达式