【总】二级C语言试题-2019.6

发布于 2019-05-08 15:35  编辑:simi
0
计算机等级考试题库 扫码微信刷题


二级C语言试题.jpg


计算机等级考试过不过?根源不在于题目难不难,而是在于你刷计算机等级考试题库努不努力!赶紧努力复习以下的二级C语言试题


二级C语言试题

1

1.以下不能正确表示代数式4cd/abC语言表达式县(  ).

A.4*c*d/a/b

B.c*d/a/b*4

C.c/a/b*d*4

D.4*c*d/a*b

收藏本题

参考答案:D

参考解析:

c语言中算术运算符的结合性均为自左向右。选项D中表达式计算结果是4cdb/a,和题目要求的代数式不一致,因此选项D不能正确表示题目所给代数式的内容。

 

2.已有定义:char c;,程序前面已在命令行中包含ctype.h文件,不能用于判断e中的字符是否为大写字母的表达式是(  )

A.isupper(c)

B.'A' <= c <= 'Z'

C.'A'<= c&&c <= 'Z'

D.c <= ('z' - 32)&&('a' - 32) <= c

参考答案:B

参考解析:

解析:在本题中,选项B,实际是先计算关系表达式“‘A <= c’” 的值是0还是1,再比较该值与字符‘Z’之间的大小关系,显然不能实现题目所要求的功能,而选项 A,C,D都可以。

 

3.有以下定义:int a;long b;double xy;则以下选项中正确的表达式是(  )

A.a%(int)(x-y)

B.a=x!=y;

C.(a*y)%b

D.y=x+y=x

参考答案:B

参考解析:

选项中如果xY的值相等那么取余时就会有除数为0的情况。C)选项中取余的两个数据都应为整数,不能有一方为实型变量,而a*y的结果为double型。 D)选项表达式本身就错误,不能给表达式赋值。所以,本题答案为B)

 

4.设有定义:int x=3;,以下表达式中,值不为l2的是(  )

A.x*=x+1

B.x++3*x

C.x*=(1+x)

D.2*x.x+=6

参考答案:D

参考解析:

本题考查逗号运算符的运算方式,逗号运算符的作用是将若干表达式连接起来,它的优先级别在所有运算符中是最低的,结合方向为”自左至右”。A)选项和c)选项的结果是一样的,可展开为:x=x*(x+1)=3*4=12;B)选项中先执行x++,因为++

 

5.下面程序的运行结果是(  )

main()

{

int y = 5, x = 14 ; y = ((x=3*y,x+6),x-1);

printf("x = %d,y = %d",x,y);

}

A.x=27y=27

B.x=12y=13

C.x=15y=14

D.x=y=27

参考答案:C

参考解析:本题考查的是逗号表达式。逗号表达式的求解步骤是先求解表达式1,然后依次求解表达式2,直到表达式N的值。整个逗号表达式的值就是最后一个表达式N的值。表达式(x=3 * yx+6)中,x=15。表达式y=x1=14

 

6.执行语句X=(a=10b=a--.后,xab的值依次为(  )

A.10109

B.1099

C.9109

D.10910

参考答案:D

参考解析:

表达式a一一的值为10a的值递减为9,所以b=10x的值为逗号表达式的值,x=10。因此x=10a=9.b=10

 

7.表示关系M<=N<=PC语言表达式为(  )

A.(M<=N.AND(N<=P.

B.(M<=N.&&(N<=P.

C.(M<=N<=P.

D.(M<=N.&(N<=P.

参考答案:B

参考解析:

M<=NN<=P是逻辑与的关系,应使用运算符&&

 

8.x=4y=5,则x&y的结果是(  )

A.0

B.4

C.3

D.5

参考答案:B

参考解析:

本题主要考查按位与运算的知识点。按位与足对两个运算最相应的位进行逻辑与, &”的规则与逻辑与“&&”相同。x=4的二进制为00000100y=5的二进制为00000101x&y=00000100,转化为十进制即为4

 

9.若运行时给变量X输入12,则以下程序的运行结果是(  )

main()

{

int x,y;

scanf("%d",&x);

y=x>12?x+10:x-12;

printf("%d\n",y);

}

A.0

B.22

C.12

D.10

参考答案:A

参考解析:

本题考查三目运算符“?:”。表达式“x>127x+10x.12”即,如果x>12成立,则x+10的值即为此表达式的值,否则x.12即为此表达式的值。因为x=12,所以x>12不成立,所以执行y=x-12=0

 

 

 

 

2

1.以下定义语句中正确的是

A.int a =b =0;

B.char A = 65 + 1,b='b';

C.float a = 1,*b=&a,*c=&b;

D.double a = 0.0;b=1.1;

参考答案:B

参考解析:

A选项中定义时赋值不能用连等。C选项中变量C&b的类型不匹配。D选项中变量b前是分号,所以变量b没有类型,即未定义。B为变量定义时赋值的正确表达形式

 

2.以下选项中正确的定义语句是 (  )

A.doublea;b;

B.doublea=b=7;

C.doublea=7b=7;

D.doubleab;

参考答案:C

参考解析:

C语言中语句定义的一般格式为:类型说明符变量1,变量2,…,变量n;变量在定义时初始化赋值语句的定义格式为j类型说明符变量1=表达式,变量2一表达式,…,变量n一表达式;

 

3.已知char a;int b;float C;double d;则表达式a-b+c-d结果为(  )型。

A.double

B.float

C.int

D.char

参考答案:A

参考解析:

C语言中允许进行不同数据类型的混合运算,但在实际运算时,要先将不同类型的数据转化成同一类型再进行运算。类型转换的一般规则是:①运算中将所有char型转换成int型,float型转换成double;②低级类型服从高级类型,并进行相应的转换,数据类型由低到高的顺序为:char->int->unsigned->long.>float->double;③赋值运算中最终结果的类型,以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应转换。

 

4.有以下程序段

int j; float y; char name[50];

scanf("-%f%s"&j&yname);

当执行上述程序段,从键盘上输入55566 7777abc后,y的值为( )

A.55566

B.566

C.7777

D.566777

参考答案:B

参考解析:

因为在输入格式控制符中指定变量j的输入格式控制符为“%2d”,即变量j所占的宽度为2,所以变量i 只接收输入数据的前两位,从第3位开始直到空格之间的输入整数都会被保存到变量Y中,因为Y为浮点型数据,所以输出结果为选 B)

 

5.设有定义 int a; float b; 执行 scanf("-%f",&a,&b);语句时,若从键盘输入876<空格> 854.0<回车>a b 的值分别是( )

A.876543.000000

B.876.000000

C.87543.000000

D.76543.000000

参考答案:B

参考解析:

seanf()函数用空格区分不同字符串的输入,因此876543.0被看作两段输入。-只选取了第一个输人中的前两位,%f选取随后的数字作为浮点数,因此输出结果为876.000000

 

6.下列程序的输出结果是(  )

main()

{

double d = 3.2;int x,y;

x=1.2;y=(x+3.8)/5.0;

printf("%d\n",d*y);

}

A.3

B.3.2

C.0

D.3.07

参考答案:C

参考解析:本题考查复合的赋值表达式。本题中,程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型的常量l.2转换为int型,即取整为1,然后将l赋值给变量x。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量x的值l转换为double1.0,然后与3.8进行加法运算,得到中间结果4.8。接着进行除法运算4.8/5.0,其结果小于l.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边变量Y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的值为0d * y的值也为0

 

7.以下叙述中错误的是(  )

A.C语言的可执行程序是由一系列机器指令构成的

B.C语言编写的源程序不能直接在计算机上运行

C.通过编译得到的二进制目标程序需要连接才可以运行

D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

参考答案:D

参考解析:c语言的可执行程序是由一系列机器指令组成的。用C语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离c语言集成开发环境。故答案为D)

 

8.以下4个选项中,不能看作一条语句的是(  )

A.;

B.a=5,b=2.5,c=3.6;

C.if(b!=5)x=2;y=6;

D.return j;

参考答案:C

参考解析:c语言规定每个语句以;(分号)结束,因此选项c)为两条语句。

 

9.下面程序段的输出为(  )

#include "stdio.h"

main()

{

printf("%d\n",12<<2);

}

A.0

B.47

C.48

D.24

参考答案:C

参考解析:本题考查位运算的运算原理。<<为左移运算符,运算符的左边是移位对象;右边是整型表达式,代表左移的位数,左移时,右端(低位)0;左端(高位)移出的部分舍弃。

 

10.以下叙述中正确的是( )

A.C程序中注释部分只能放在程序最后

B.花括号“{“和”}”可以作为函数体的定界符,也可以作为复合语句的定界符

C.构成C程序的基本单位是函数,所有函数名都可以由用户命名

D.分号不是语句的一部分,是C语句之间的分隔符

参考答案:B 参考解析:花括号可以作为函数体的定界符,也可以作为复合语句的定界符。函数是c程序的基本单位,用户可以命名自定义函数,而库函数名是固定的。c语句以分号结尾,分号是语句的一部分。

 

11.若有说明,double*mn;则能通过sCanf语句正确给输入项读人数据的程序段是( )

A.*m = &n;scanf("%lf",m);

B.m = (double * ) malloc(10);scanf("%f",m);

C.m = &n;scanf("%lf",n);

D.m = &n;scanf("%le",m);

参考答案:D

参考解析:解析:选项A*m = &n 错误。选项B,输入 double型,要用%lf %le,否则数据不能正常输入。

选项Cn是变量,不是指针,scanf("%if",n)错误。

 

 

 

3

1[单选题] 8位无符号二进制数能表示的最大十进制数为( )

A.127

B.128

C.255

D.256

参考答案:C

参考解析:2^8-1=256-1=255

 

2[单选题] 若有以下程序段(n所赋的是八进制数)

int m=32767,n=032767

printf("%d,%o/n",m,n);

执行后输出结果是( )

A.3276732767

B.32767032767

C.3276777777

D.32767077777

参考答案:A

 

3[单选题] 有以下程序

main()

{ char *s[]={"one","two","three"},*p;

p=s[1];

printf("%c,%s\n",*(p+1),s[0]);

}

执行后输出结果是( )

A.n,two

B.t,one

C.w,one

D.o,two

参考答案:C

 

4[单选题] 以下定义语句中正确的是

A.int a =b =0;

B.char A = 65 + 1,b='b';

C.float a = 1,*b=&a,*c=&b;

D.double a = 0.0;b=1.1;

参考答案:B

参考解析:A选项中定义时赋值不能用连等。C选项中变量C&b的类型不匹配。D选项中变量b前是分号,所以变量b没有类型,即未定义。B为变量定义时赋值的正确表达形式

 

5[单选题] 设有定义:int x=2;以下表达式中,值不为6的是 (  )

A.x*=x+1

B.x++=2*X

C.X*=(1 X)

D.2*XX+=2

参考答案:D

参考解析:选项AC很容易看出结果是6。选项BD是逗号表达式,逗号表达式是从左到右顺序求子表达式的值,整体的逗号表达式的值取最后一个子表达式的值,很容易判断出答案D错误。

 

6[单选题] 若有以下定义(int类型变量占2个字节)

int i=8,j=9;

则以下语句:

printf("i=%%d,j=%%%d\n",i,j);

输出结果是( )

A.i=8d=9

B.i=%dj=%8

C.i=%dj=%d

D.8,9

参考答案:B

参考解析:本题考查printf函数的格式。printf函数中格式说明符之前插入的任何字符都按原样输出。对于printf函数,有两个%说明;第一个%后面的内容要按原样输出。

 

7[单选题] C语言中,合法的长整型常数是(  )

A.0.123456

B.4962717

C.9L

D.5.321e2

参考答案:C

参考解析:选项A)D)是实型而非整型。

 

8[单选题] 以下关于longintshort类型数据占用内存大小的叙述中正确的是(  )

A.均占4个字节

B.根据数据的大小来决定所占内存的字节数

C.由用户自己定义

D.C语言编译系统决定

参考答案:D

参考解析:不同的编译系统或计算机系统对几类整型数所占用的字节数有不同的规定。longintshort类型数据占用内存大小是由选择何种C编译系统决定的。

 

9[单选题] ab均为int型变量,且a=6b=11c=3,则能使值为3的表达式是(  )

A.b%(c%4)

B.b%(c-a%5)

C.b%a-a%5

D.(b%a)-(a%4)

参考答案:D

参考解析:选项D)括号内的运算分别是b%a=11%6=5a%c=6%4=2,最后得到5-2=3

 

10[单选题] 若函数中有定义语句:int a;,则(  )

A.系统将自动给a赋初值0

B.这时a中的值是和随机数

C.系统将自动给a赋初值-1

D.a中无任何值

参考答案:B

参考解析:本题考查变量赋值基本概念。在声明一个变量后,如果未显式的对其进行赋值,则它的值是一个随机值。

 

 

4

1.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是(  )

A.-369

B.369

C.0.369

D.整数集合{12345}

参考答案:B

参考解析:UInt表示的是无符号整数类,所以它的每个实例都是一个无符号整数,所以排除选项A)和选项c),选项D)是整数集合,所以也排除。

 

2.若有定义语句:int a=10;double b=3.14;,则表达式'A'+a+b值的类型是(  )

A.char

B.int

C.double

D.float

参考答案:C

参考解析:在c语言中不同类型的数据进行运算时,除了强制数据类型转换外,都要进行默认的数据类型转换,通常转换为精度较高的数据类型。对于本题来说,字符型数据'A'与整型a相加转换为整型数据,其和再与双精度型数据b相加,要转换为双精度型数据。

 

3.关于C语言中数的表示,以下叙述正确的是(  )

A.只有整型数在允许范围内能精确无误的表示,实型数会有误差

B.只要在在允许范围内整型和实型都能精确表示

C.只有实型数在允许范围内能精确无误的表示,整型数会有误差

D.只有八进制表示的数在不会有误差

参考答案:A

参考解析:实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有24位二进制尾数。而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过尾数的存储长度,从而导致有效数字丢失而产生误差。

 

4.若有定义和语句:int a,b; scanf("%d,%d",&a,&b); 以下选项中的输入数据,不能把值3 赋给变量a5 给变量b 的是

A.3,5,

B.3,5,4

C.3 ,5

D.3,5

参考答案:C

参考解析:题目中用scanf 函数以整数的形式输入a,b 的值。选项C)整型数字3 后面有一个空格,当输入空格时,scanf 函数输入就会终止。

 

5.若函数中有定义语句:int a;,则(??)

A.系统将自动给a赋初值为0

B.系统将自动给a赋初值-1

C.这时a中的值无意义

D.这时a中无任何值

参考答案:C

参考解析:用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中放任何值,此时变量中的值是无确定的,称变量值”无意义”。因此,本题正确答案为c

 

6.程序段:int x=12;double y=3.141593;printf(%d%8.6f”,xy);的输出结果是(  )

A.123.141593

B.12 3.141593

C.123.141593

D.123.1415930

参考答案:A

参考解析:本题考查prinff函数的输出格式控制符,%m.nf表示指定输出的实型数据的宽度为m(包含小数点),并保留n位小数。当输出数据的小数位大于n时,截去右边多余的小数,并对截去的部分的第一位做四舍五入的处理;当输出数据小数位小于n时,在小数的最右边补0,输出数据的小数部分宽度为n。若给出的总宽度m小于ll加上整数位数和小数点,则自动突破m的限制;反之,数字右对齐,左边补空格。本题中3.141593数值长度为8,小数位数是6,因此左端没有空格,故正确答案为A

 

7.以下叙述不正确的是(  )

A.C程序中,逗号运算符的优先级最低

B.C程序中,APHaph是两个不同的变量

C.ab类型相同,在计算赋值表达式a=b后,b的值将放入a中,而b的值不变

D.当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

参考答案:D

参考解析:在c语言所有的运算符中,逗号运算符的优先级最低。C语言区分大小写,所以APHaph是两个不同的变量。赋值表达式a=b表示将b的值赋予a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)中当从键盘输人数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。

 

8.有以下程序,其中%u表示按无符号整数输出:

main()

{

unsigned int x = 0xFFFF; /* x 的初值为十六进制数*/

printf("%u\n",x);

}

程序运行后的输出结果是(  )

A.-1

B.65535

C.32767

D.0xFFFF

参考答案:B

参考解析:本题考查的是整型无符号数的输出。%U的作用是按无符号的十进制形式输出整型数,整型无符号数的取值范围在065535之间,无符号数不能表示成小于0的负数,十六进制数0xFFFF转换为二进制位其值为l61,代表的整数就是65535

 

9.以下选项中不属于c语言的类型的是(  )

A.unsigned long int

B.long short

C.unsigned int

D.signed short int

参考答案:B

参考解析:c语言中整型变量分为4种,基本型int,短整型short int,长整型long int和无符号型(unsigned intun-signed shortunsigned long)。因此B)选项不属于c语言的类型。

 

 

5

1[单选题] C语言主要是借助以下哪个功能来实现程序模块化

A.定义函数

B.定义常量和外部变量

C.三种基本结构语句

D.丰富的数据类型

参考答案:A

参考解析:C语言用函数实现软件的模块化设计。

 

2[单选题] 以下叙述中错误的是

A.非零的数值型常量有正值和负值的区分

B.常量是在程序运行过程中值不能被改变的量

C.定义符号常量必须用类型名来设定常量的类型

D.用符号名表示的常量叫符号常量

参考答案:C

参考解析:C语言中,常常用一个标识符来代表一个常量,称为符号常量。符号常量在使用之前要先定义,定义格式如下: #define<符号常量名>(常量) 其中,<符号常量名)用标识符,习惯上用大写字母,<常量>可以是数字常量,也可以是字符

 

3[单选题] C语言中char 类型数据占字节数为

A.3

B.4

C.1

D.2

参考答案:C

参考解析:C语言中char 类型数据占字节数为1.

 

4[单选题] 下列叙述中正确的是

A.可以用关系运算符比较字符串的大小

B.空字符串不占用内存,其内存空间大小是0

C.两个连续的单引号是合法的字符常量

D.两个连续的双引号是合法的字符串常量

参考答案:D

参考解析:两个连续的双引号:"",是一个字符串常量,称为“空串”

 

5[单选题] 有以下程序(strcpy 为字符串复制函数,strcat 为字符串连接函数)

#include

#include

main()

{ char a[10]="abc",b[10]="012",c[10]="xyz";

strcpy(a+1,b+2);

puts(strcat(a,c+1));

}

程序运行后的输出结果是

A.a12xyz

B.12yz

C.a2yz

D.bc2yz

参考答案:C

参考解析:程序执行后strcpy(a+1,b+2)后,字符数组a 的值为“a2”,再进行字符串的连接strcat(a,c+1),此时字符数组a 的值为“a2yz”。strcpy(a+1,b+2);//b数组的第3个元素开始到NULL出现为止的字符串复制给a数组第2个元素开始的内存空间 puts(strcat(a,c+1));//打印字符串,该字符串为a数组中的字符串和c数组第2个元素开始的字符串,

strcat()的意义为把c数组第2个元素开始的字符串添加到a数组的结尾。

 

6[单选题] 以下选项中,合法的是

A.char str3[]={'d', 'e', 'b', 'u', 'g', '\0'};

B.char str4; str4="hello world";

C.char name[10]; name="china";

D.char str1[5]= "pass",str2[6]; str2=str1;

参考答案:A

参考解析:选项A)是定义了字符数组str3[],并对其赋初值。

 

7[单选题] 下列可用于C语言用户标识符的一组是(  )

A.void,define,WORD

B.a3_3,_123,Car

C.For,-abc,IF Case

D.2a,DO,sizeof

参考答案:B

参考解析:c语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,排除选项C)D);C语言中还规定标识符不能为C语言的关键字,而选项A)void为关键字,故排除选项A)

 

8[单选题] 以下符合c语言语法的实型常量是(  )

A.8E2

B.3)14)159E

C.E14

D.2)2E0)5

参考答案:A

参考解析:实型常量又称为实数或浮点数,在c语言中可以表示为小数形式和指数形式。其中用”eE+整数”表示以10为底的幂,字母eE之前必须有数字,后面必须是整数。因此正确答案为选项A)

 

9[单选题] 下列是用户自定义标识符的是(  )

A._wl

B.3_xy

C.int

D.LINE-3

参考答案:A

参考解析:c语言规定用户标识符由英文字母、数字和下划线组成,且第一个字符必须是字母或下划线,由此可见选项S)D)是错的;此外,C语言不允许用户将关键字作为标识符,而选项c)中的intc语言的关键字。

 

10[单选题] 执行以下程序时输人1234567,则输出结果是(  )

#include

main()

{

int a =1,b;

scanf("=-",&a,&b);

printf("%d%d\n",a,b);

}

A.12367

B.12346

C.12312

D.12345

参考答案:D

参考解析:scanf函数中的格式控制说明为“%3d%2d”,分别选中输人中的三位和两位,因此a=123b=45。因此正确答案为D)选项。




刷计算机等级考试题库中,慢慢总结、学习、复习以上的二级C语言试题,有效的刷题策略才能事半功倍,考试将至,希望小伙伴们在最后备战的阶段中,精益求精、稳中求进,一次通过!




文章推荐:

全国计算机等级考试可以不考一级直接考二级吗?

2019年全国计算机等级考试题库“二级MS Office 高级应用考试大纲”

全国计算机等级考试报考成功后可以退费吗?(内附计算机等级考试题库)


温馨提示:

考试想拿高分吗?更多计算机等级考试题库二级ms office试题请点击查看>>>二级ms office

想要了解更多的计算机等级考试题库请点击下载>>>计算机等级考试题库

想知道更多关于计算机等级考试题库的近期资讯吗?点击进入>>>计算机等级考试题库资讯


本文网址:http://www.k51.com.cn/info/jsjdjks/1905/0851847.html
选择分享到: