全国计算机二级C语言笔试选择题分类模拟题6Word文档格式.docx
- 文档编号:16796180
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:23
- 大小:35.95KB
全国计算机二级C语言笔试选择题分类模拟题6Word文档格式.docx
《全国计算机二级C语言笔试选择题分类模拟题6Word文档格式.docx》由会员分享,可在线阅读,更多相关《全国计算机二级C语言笔试选择题分类模拟题6Word文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
while((*x==*y)&&*x!
='
\0'
){x++;
y++;
n++;
}
returnn;
函数的功能是______。
A.统计x和y所指字符串中最前面连续相同的字符个数
B.查找x和y所指字符串中是否有'
C.将y所指字符串赋给x所指存储空间
D.统计x和y所指字符串中相同的字符个数
[解答]本题中由循环条件可知,当遇到“\0”或“x与y所指的字符的值不相等”其中的一个条件时就结束循环,因此本题函数的功能是统计x和y所指字符串中最前面连续相同的字符个数。
4.有以下程序
{
charch[]="
uvwxyz"
*pc;
pc=ch;
%c\n"
*(pc+5));
A.z
B.0
C.元素ch[5]的地址
D.字符y的地址
[解答]main函数输出字符串第6个元素对应的数据,所以答案为A。
5.设有如下程序段
chars[20]="
Beijing"
*p;
p=s;
则执行p=s;
语句后,以下叙述正确的是______。
A.可以用*p表示s[0]
B.s数组中元素的个数和p所指字符串长度相等
C.s和p都是指针变量
D.数组s中的内容和指针变量p中的内容相同
[解答]本题主要考查的是字符数组、字符串和字符指针的一些概念。
数组元素个数,是在定义数组的时候确定的,本题的s数组元素个数是20。
而字符串长度,是从该字符串的第1个字符开始,一直到\0字符为止,所历经的字符个数,\0不算在内。
所以本题p所指字符串("
)的长度为7。
因此选项B的叙述不正确。
s是数组名,而不是指针变量,因此选项C不正确。
数组s中除了包含字符串“Beijing”外,还包含其后的20个以内字节的内容,而指针变量p中包含的只是数组s的首地址。
因此选项D的说法也不正确。
6.若有以下程序段
charstr[4][12]={"
aa"
"
bbb"
ccccc"
d"
},*strp[4];
inti;
i<4;
i++)strp[i]=str[i];
不能正确引用字符串的选项是______。
A.strp
B.str[0]
C.strp[3]
D.*strp
[解答]strp是字符串指针数组,不能作为字符串的引用。
7.有以下程序
{inta[5]={2,4,6,8,10},*p,**k;
p=a;
k=&p;
%d"
*(p++));
**k);
A.24
B.44
C.22
D.46
[解答]*(p++),表达式为a[0]的值,为2,执行后p指向a[1],**k为*p实际为a[1],输出4,所以选择A。
8.设有以下函数:
voidfun(intn,char*s)
{……}
则下面对函数指针的定义和赋值均正确的是______。
A.void(*pf)(int,char*);
pf=fun;
B.void*pf();
C.void*pf();
*pf=fun;
D.void(*pf)(int,char;
)pf=&fun;
[解答]赋值给函数指针,需要函数的参数一致,返回值一致,才可以赋值。
选项A正确。
9.以下叙述中正确的是______。
A.在C语言中,预处理命令行都以”#”开头
B.预处理命令行必须位于C源程序的起始位置
C.#include<stdio.h>必须放在C程序的开头
D.C语言的预处理不能实现宏定义和条件编译的功能
[解答]预处理命令行、#include没有必要放在程序的开头部分,C语言可以实现宏定义和条件编译,所以选择A。
10.以下关于宏的叙述中正确的是______。
A.宏替换没有数据类型限制
B.宏定义必须位于源程序中所有语句之前
C.宏名必须用大写字母表示
D.宏调用比函数调用耗费时间
[解答]宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头,因此B选项中宏定义必须位于源程序中所有语句之前是错误的。
宏名一般用大写,但不是必须用大写,因此C选项错误。
宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值),因此D选项错误。
11.若程序中有宏定义行:
#defineN100
则以下叙述中正确的是______。
A.在编译程序对C源程序进行预处理时用100替换标识符N
B.宏定义行中定义了标识符N的值为整数100
C.上述宏定义行实现将100赋给标识符N
D.在运行时用100替换标识符N
[解答]常量定义在编译时替换,所以答案选择A。
12.有以下程序
#defineN2
#defineMN+1
#defineNUM(M+1)*M/2
{printf("
NUM);
A.8
B.4
C.9
D.6
[解答]NUM展开后,(N+1+1)*N+1/2值为8。
13.有以下程序
#definePT3.5;
#defineS(x)PT*x*x;
{inta=1,b=2;
printf("
%4.1f\n"
S(a+b)):
A.程序有错无输出结果
B.31.5
C.7.5
D.14.0
[解答]宏定义不是C语句,末尾不需要有分号。
因此语句"
%4.1fn”,S(a+b));
"
展开后为"
%4.1fn"
3.5;
*a+b*a+b;
,所以程序会出现语法错误。
14.设有宏定义:
#defineIsDIV(k,n)((k%n==1)?
1:
0)
且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&&IsDIV(m,7)
为真时所要表达的是______。
A.判断m被5和7整除是否都余1
B.判断m是否能被5和7整除
C.判断m被5或者7整除是否余1
D.判断m是否能被5或者7整除
[解答]IsDIV(k,n)判断k被n整除是否余1,所以IsDIV(m,5)&&IsDIV(m,7)就是判断m被5和7整除是否都余1。
15.若有以下程序
#defineS(x)x*x
#defineT(x)S(x)*S(x)
{intk=5,j=2;
%d,%d\n"
S(k+j),T(k+j));
则程序的输出结果是______。
A.17,37
B.49,2401
C.17,289
D.49,289
[解答]S(k+j)展开后为5+2*5+2值为17,T(k+j)展开后5+2*5+2*5+2*5+2值为37,所以答案选择A。
16.若有以下程序
#defineS(x)(x)*(x)
#defineT(x)S(x)/S(x)+1
{intk=3,j=2;
A.25,26
B.25,2
C.11,12
D.11,2
[解答]S(k+j)展开后,(3+2)*(3+2)值为25,T(k+j)展开后,(3+2)*(3+2)/(3+2)*(3+2)+1值为26答案选择A。
17.有以下程序
#defineSUB(X,Y)(X+1)*Y
{inta=3,b=4;
SUB(a++,b++));
A.16
B.20
C.12
D.25
[解答]SUB展开后,(a+++1)*b++,a++表达式的值为3,b++表达式的值为4,所以(3+1)*4值为16。
18.下面结构体的定义语句中,错误的是______。
A.structord{intx;
inty;
intz;
}structorda;
B.structord{intx;
};
structorda;
C.structord{intx;
}a;
D.street{intx;
)a;
[解答]A选项structord{intx;
}structorda;
错误,不能在定义结构体的同时,又用结构体类型名定义变量,应该写成B选项或者D选项的格式。
19.以下结构体类型说明和变量定义中正确的是______。
A.typedefstruct
{intn;
charc;
}REC;
RECt1,t2;
B.structREC;
C.typedefstructREC;
{intn=0;
charc='
A'
;
}t1,t2;
D.struct
[解答]B选项和C选项中,REC后不应加分号,D选项,没有typedef,REC不能作为类型名。
所以答案选择A。
20.有以下程序
structSTU{charname[9];
charsex;
doublescore[2];
structSTUa={"
Zhao"
'
m'
85.0,90.0},b={"
Qian"
f'
95.0,92.0};
b=a;
%s,%c,%2.0f,%2.0f\n"
b.name,b.sex,b.score[0],b.score[1]);
程序的运行结果是______。
A.Zhao,m,85,90
B.Qian,m,85,90
C.Zhao,f,95,92
D.Qian,f,95,92
[解答]结构体可以整体传递,b=a,则结构体b里的数据为a的数据,所以选择A。
21.有以下程序
typedefstruct{intb,p;
}A;
voidf(Ac)/*注意:
c是结构变量名*/
{intj;
c.b+=1;
c.p+=2;
{inti;
Aa={1,2};
f(a);
a.b,a.p);
A.1,2
B.2,4
C.1,4
D.2,3
[解答]结构体变量可以作为函数的参数和返回值。
作为函数的实参时,可以实现函数的传值调用。
当使用结构体变量作为函数的形参时,实参也应该是结构体变量名以实现传值调用,实参将拷贝的副本传递给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。
因此本题选择A。
22.有以下定义和语句
structworkers
{intnum;
charname[20];
struct
{intday;
intmonth;
intyear;
}s;
};
structworkersw,*pw;
pw=&w;
能给w中year成员赋1980的语句是______。
A.w.s.year=1980;
B.w.year=1980;
C.pw->year=-1980;
D.*pw.year=1980;
[解答]嵌套的结构体定义,要访问内层的成员,需要一层层用“.”访问,所以答案选择A。
23.设有定义:
struct{charmark[12];
intnum1;
doublenum2;
若变量均已正确赋初值,则以下语句中错误的是______。
A.t2.mark=t1.mark;
B.t2.num1=t1.num1;
C.t1=t2;
D.t2.num2=t1.num2;
[解答]字符数组不能整体赋值,所以A错误。
24.若有以下程序
#include<stdlib.h>
#include<string.h>
typedefstructstu{
char*name,gender;
intscore;
}STU;
voidf(char*p)
p=(char*)malloc(10);
strcpy(p,"
STUa={NULL,'
290},b;
a.name=(char*)malloc(10);
strcpy(a.name,"
f(b.name);
b.gender='
b.score=350;
%s,%c,%d,"
a.name,a.gender,a.score);
%s,%c,%d\n"
b.name,b.gender,b.score);
A.Zhao,m,290,Zhao,f,350
B.Zhao,m,290,Qian,f,350
C.Qian,f,350,Qian,f,350
D.Qian,m,290,Qian,f,350
[解答]f函数在新开辟的空间操作,并没有改变b.name的值,所以答案选择A。
25.有以下程序
structS
{inta,b;
}data[2]={10,100,20,200};
{structSp=data[1];
++(p.a));
A.21
B.11
C.20
D.10
[解答]声明data是结构体型S的数组。
初始化时data[0].a=10;
data[0].b=100;
data[1].a=20;
data[1].b=200。
主函数中p=data[1];
即p.a=data[1].a;
p.b=data[1].b;
执行语句printf("
%dn"
++(p.a));
打印输出时p.a先增1再打印。
即p.a=data[1].a=20,先增1等于21,因此程序运行结果是21。
26.以下叙述中正确的是______。
A.在调用函数时,可以将结构体变量作为实参传给函数
B.函数的返回值不能是结构体类型
C.函数的返回值不能是结构体指针类型
D.结构体数组不能作为参数传给函数
[解答]函数的返回值可以是结构体类型、结构体指针类型,结构体数组可以作为参数传给函数,所以答案选择A。
27.以下叙述中正确的是______。
A.结构体中可以含有指向本结构体的指针成员
B.结构体变量的地址不能作为实参传给函数
C.结构体数组名不能作为实参传给函数
D.即使是同类型的结构体变量,也不能进行整体赋值
[解答]结构体变量的地址、结构体数组名都可以作为函数参数,同类型的结构体变量,可以进行整体赋值,所以答案选择A。
28.有以下程序
structS{intn;
inta[20];
voidf(structS*P)
{inti,j,t;
i<p->n-1;
for(j=i+1;
j<p->n;
j++)
if(p->a[i]>p->a[j]){t=p->a[i];
p->a[i]=p->a[j];
p->a[j]=t;
structSs={10,{2,3,1,6,8,7,5,4,10,9}};
f(&s);
i<s.n;
i++)printf("
%d,"
s.a[i]);
A.1,2,3,4,5,6,7,8,9,10,
B.10,9,8,7,6,5,4,3,2,1,
C.2,3,1,6,8,7,5,4,10,9,
D.10,9,8,7,6,1,2,3,4,5,
[解答]本题的子函数f的功能是对结构体变量s中第二个成员数组中所有的数据进行从小到大的冒泡排序,因此结果是A。
29.有以下程序
typedefstruct{charname[9];
floatscore[2];
}STU;
STUf(STUa)
{STUb={"
85.0,90.0};
inti;
strcpy(a.name,b.name);
a.sex=b.sex;
i<2;
i++)a.seore[i]=b.score[i];
returna;
{STUc={"
f1,95.0,92.0},d;
d=f(c);
d.name,d.sex,d.score[0],d.score[1]);
C.Qian,f,95,92
D.Zhao,f,95,92
[解答]f函数返回的结构体与f函数内定义的b结构体相同,所以答案选择A。
30.若有以下程序
charname[10],gender;
voidf(STUa,STUb)
{b=a;
{STUa={"
290},b={"
350};
f(a,b);
b.name,b.gender,b.score};
A.Zhao,m,290,Qian,f,350
B.Zhao,m,290,Zhao,m,290
D.Zhao,m,290,Zhao,f,350
[解答]f函数将结构体a赋值给b,然后输出,注意这是值传递,不会改变main中结构体b值,所以答案选择A。
31.有以下结构体说明、变量定义和赋值语句
structSTD
{charname[10];
intage;
charsex;
}s[5],*ps;
ps=&s[0];
则以下scanf函数调用语句有错误的是______。
A.scanf("
ps->age);
B.scanf("
&s[0].age);
C.scanf("
%c"
&(ps->sex));
D.scanf("
%s"
s[0].name};
[解答]ps->age不是地址,不能用于scanf函数中。
所以选择A。
32.有以下程序
structord
{intx,y;
}dt[2]={1,2,3,4]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 全国计算机 二级 语言 笔试 选择题 分类 模拟