2017年计算机二级《C语言》考前试题及答案2

时间:2017-04-27 15:46:00   来源:无忧考网     [字体: ]

(21)有以下程序:

2016年计算机二级C语言考前20天必做题(6)

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

2016年计算机二级C语言考前20天必做题(6)

(22)有以下程序:

2016年计算机二级C语言考前20天必做题(6)

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

A.02356

B.0235

C.235

D.2356

以下关于retllm语句的叙述中正确的是( )。

A.一个自定义函数中必须有一条return语句

B.一个自定义函数中可以根据不同情况设置多条retum语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

(24)已定义以下函数:

2016年计算机二级C语言考前20天必做题(6)

fun函数的返回值是( )。

一个整数

B.不确定的值

C.形参P中存放的值

D.形参P的地址值(25)以下程序段完全正确的是( )。

int * p;scanf(”%d”,&p);

B.int*p;scanf(”%d”,P);

C.int k,* P:&k;scanf(’’%d”,P);

D.int k,*p;*P=&k;scanf(”%d”,P);

(26)设有定义:

double a[10],*s=a;

以下能够代表数组元素a[3]的是( )。

A.($s)[3]

B.}(s+3)

C.*s[3]

D.}s+3

27、有以下程序

2016年计算机二级C语言考前20天必做题(6)

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

A.6,2,3,4,5,

B.2,2,3,4,5,

C.1,2,3,4,5,

D.2,3,4,5,6,

(28)有以下程序:

2016年计算机二级C语言考前20天必做题(6)

2016年计算机二级C语言考前20天必做题(6)

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

A.4

B.34

C.31

D.32

(29)以下选项中正确的语句组是( )。

A.char*s;8={1.BOOK!”}i

B.char*s;8=”BOOK!”;

C.char S[10];S=”BOOK!”;

D.char S[];S=”BOOK!”;(30)若有定义语句:

char}sl=‘’0K”,:It s2=”ok”;

以下选项中,能够输出“OK”的语句是( )。

A.if(strcmp(sl,s2)!=0)puts(s2);

B.if(strcmp(sl,s2)!=0)puts(s1);

C.if(strcmp(sl,s2)==1)puts(s1);

D.if(strcmp(sl,s2)==0)puts(s1);

(31)有以下程序:

2016年计算机二级C语言考前20天必做题(6)

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

A.Afternoon

B.ftemoon

C.Morning

D.oming

(32)有以下程序,程序中库函数islower(ch)用以判断ch中的字母是否为小写字母:

2016年计算机二级C语言考前20天必做题(6)

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

A.ab cd EFg!

B.Ab Cd EFg!

C.ab cd EFG!

D.aB cD EFG!

(33)有以下程序:

2016年计算机二级C语言考前20天必做题(6)

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

A.0

B.9

C.6

D.8

(34)有以下程序:

2016年计算机二级C语言考前20天必做题(6)

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

A.55.

B.50

C.45

D.60

(35)有以下结构体说明、变量定义和赋值语句:

2016年计算机二级C语言考前20天必做题(6)

则以下scanf函数调用语句有错误的是( )。

scanf(”%s”,s[0].name);

B.scanf(”%d”,&s[0].age);

C.scanf(”%c”,&(ps一>sex));

D.scanf(”%d”,ps一>age):

(36)若有以下语句:typedef struct S{int 9;char h;}T;以下叙述中正确的是( )。

A.可用s定义结构体变量

B.可用T定义结构体变量

C.S是struct类型的变量

D.T是struct S类型的变量

2016年计算机二级C语言考前20天必做题(6)

2016年计算机二级C语言考前20天必做题(6)

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

A.1002,ZhangDa,1202.0

B.1002,ChangRon9。1202.0

C.1001,ChangRon9,1098.0

D.1001,ZhangDa,1098.0

(38)设有宏定义:

#define IsDIV(k,n)((k%1"1==1)?1:O)且变量m已正确定义并赋值,则宏调用:

IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是( )。

判断m是否能被5和7整除

B.判断m被5和7整除是否都余l

C.判断m被5或者7整除是否余1

D.判断m是否能被5或者7整除

(39)有以下程序:

2016年计算机二级C语言考前20天必做题(6)

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

A.3

B.1

C.2

D.0

(40)有以下程序:

2016年计算机二级C语言考前20天必做题(6)

2016年计算机二级C语言考前20天必做题(6)

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

A.1 2

B.1 4

C.123 4

D.123 456

 

 

 

(21)B【解析】第一次执行外循环,i的值为3,第一次执行内循环j的值为1,j&1t;=2条件成立,打印i+j的值,即4;第二次执行内循环J的值为2,j&1t;=2条件成立,打印i+j的值,即5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环,i的值为2,内循环的执行同第一次一样,所以打印3和4,打印回车换行,结束内循环。第三次执行外循环i的值为1,同理内循环中打印2和3,打印回车换行符,结束内循环。

(22)C【解析】k的值为5,逐个对caBe语句进行匹配,均不匹配,执行defau1t下的语句n=0;k一一。再执行case2:ca804:后面的语句n+=2;k一一;。执行break语句跳出switch判断,打印n的值,即2。经过第一次循环后,k的值为3,然后进行k>0&&11&1t;5条件判断为真。第二次执行循环体,执行case3:后面的语句n+=1;k一一;。再执行break语句跳出循环,此时打印n的值3,此时k的值为2。第三次执行循环体k的值为2,满足条件,执行case2:case4:后面的语句n+=2;k一一;。执行break语句跳出循环体。打印n的值5。此时n不满足条件k>0&&n&1t;5,所以结束循环。整个程序的打印结果为235。

(23)B【解析】在函数中允许有多个Iett1r11语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,c选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,A、D选项描述错误。因此B选项正确。

(24)A【解析】返回值为指针变量指向的数据,该数据已被定义为整型。因此A选项正确。

(25)C【解析】A选项中错在没有对指针进行初始化,是无效指针,并且在scanf(”%d”,&p)中无需再进行取地址操作;B选项中没有对指针进行初始化,是无效指针;D选项中语句+P=&k;的左端t pt是指针所指内存空间的值,&k是地址,应为P=&k。因此C选项正确。

(26)B【解析】语句·s=a;表示指针变量s指向一维数

组a的首地址。a[3]表示引用数组a的第4个元素,+(s+i)表示引用指针8所指数组a的第i+1个元素,选项A、C、D的表示方法错误,只有B选项正确。

(27)A【解析】本题考查的是函数的地址调用,将数组名作为数组首地址进行传递,然后取首个数组元素值进行加1运算,循环5次。因此A选项正确。

(28)C【解析】本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4.0,这样对应定义fun函数首部有三种形式,这里采用了第一种形式——行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中的那个元素。因此C选项正确。

(29)B【解析】A选项去掉大括号就正确了;c选项和D选项应在定义时赋初值。因此B选项正确。

(30)B【解析】strcmp(s1,s2)是字符串比较函数,比较规则是两个字符串自左向右逐个字符相比(按照ASCI1码值大小),-以第一个不相同的字符的大小作为比较结果。因为。O。&1t;10.,所以strcmp(s1,s2)为负值,只有B选项正确。

(31)A【解析】本题主函数中定义了一个指针数组a,可以将它看成一个以字符指针为元素的一维数组。和一般的一维数组名能赋给同类型指针变量一样,该字符指针数组也可以赋给指向字符指针的指针,所以数组名a可以用做函数fun()的实参。在fun()函数中,++P操作使形参P往后移动一个字符指针的位置,即指针a[1]的位置。故最后通过础nd()函数输出的字符串为“Afternoon”。因此A选项正确。

(32)D【解析】调用缸函数后,实参数组名s1传给形参指针P,P也指向数组s1。m函数的功能是遍历字符数组中的所有字符,如果某一个字符是空格并且前一个字符是小写字母的话,就把前一个字符转换为大写。程序中语句P[i一1]=P[i—1]一ga’+-A‘;即P[i一1]=P[i一1]一32,意思是将P[i一1]中的字符转换为大写。因此D选项正确。

(33)C【解析】主函数中调用f函数,同时将数值3传递给变量x,执行条件不满足条件if(x==0I1X==1);跳过re—turn(3);,直接执行语句Y=X}X—f(x一2);这里f(x一2)为函数的递归调用,再次诃用f函数,此时x=1,判断条件成立,返回3给f(1),Y=3}3—3=6,最后将6返回主函数,并进行输出。因此c选项正确。

(34)D【解析】内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保留着。m(a,5)的值是15,再次调用后Ⅲm=15,所以fun(b,4)=45,s=45+15=60。因此D选项正确。

(35)D【解析】本题考查结构体的相关知识,题目中需要输入一个变量,scanf要求参数为指针,而D选项中ps一>age为一个变量,不是指针,所以错误。

(36)B【解析】本题考查typ1edef重新声明一种结构体类型,那么T为结构体类型,而不是结构体变量,所以B选项正确。

(37)B【解析】本题考查结构体变量的引用以及作为函数参数,题目虽然看似复杂,其实比较容易,f函数的参数是结构体变量,然后对参数重新赋值并返回,所以该题目的答案为B选项。

(38)B【解析1本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,即m都能被5和7整除都余1,所以选项B正确。

(39)A【解析】本愿考查位运算符以及相关运算,‘为按位或,&为按位与,部么a'b为3,再与c按位与仍然为3,所以答案为A选项。

(40)D【解析】fprintf()函数向文本文件输出数据,将输出的内容按格式输出翻硬盘的文本文件中。执行两次fprintf后。文件中的内容为。123 456”,所以D选项正确。