二级C语言分类模拟题535.docx
- 文档编号:26613967
- 上传时间:2023-06-20
- 格式:DOCX
- 页数:17
- 大小:23.48KB
二级C语言分类模拟题535.docx
《二级C语言分类模拟题535.docx》由会员分享,可在线阅读,更多相关《二级C语言分类模拟题535.docx(17页珍藏版)》请在冰豆网上搜索。
二级C语言分类模拟题535
二级C语言分类模拟题535
(总分:
48.50,做题时间:
90分钟)
一、选择题(总题数:
35,分数:
48.50)
1.有以下程序段:
intx;
for(x=3;x<6;x++)
printf((x%2)?
("**%d"):
("##%d/n"),x);
程序段的输出结果是
(分数:
2.00)
A.**3##4**5
B.##3**4##5
C.##3**4##5.
D.**3##4**5 √
解析:
2.设x和y都是int类型,且x=1,y=2,则printf("%d%d",x,y,(x,y))的输出结果是____。
(分数:
1.00)
A.12 √
B.122
C.1,2
D.输出值不确定
解析:
[解析]本题考查printf函数的格式和逗号表达式。
printf函数在输出时,是根据格式说明符的个数输出的,如果函数中有有多余的项将不予输出;如果有输出项少于格式说明符,则出错,不能输出正确的结果。
本题中逗号表达式(x,y)只返回y的值。
此时格式说明的个数是2,而输出项的个数是3,因此printf函数只输出前两项。
3.若有以下说明和定义:
#include<stdio.h>
main()
{int(*a)(int*),*b(),w[10],c;
}
intfun(int*c){…}
则以下选项中能正确调用fun函数是
(分数:
1.00)
A.a=fun;a(w);
B.a=fun;(*a)(&c); √
C.b=fun;*b(w);
D.fun(b);
解析:
4.若变量已正确定义,在if(W)printf("%d/n",k);中,以下不可替代W的是______。
(分数:
1.00)
A.a==b+c
B.ch=getchar()
C.a<>b+c √
D.a++
解析:
[解析]选项C是非法的表达式,C语言中没有“<>”运算符。
5.阅读以下程序:
#include<stdio.h>
main()
{intcase;floatprintF;
printf("请输入2个数:
");
scanf("%d%f",&case,&printF);
printf("%d%f/n",case,printF);
}
该程序在编译时产生错误,其出错原因是______。
(分数:
1.00)
A.定义语句出错,case是关键字,不能用作用户自定义标识符 √
B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
解析:
[解析]本题中定义了整形变量case,但case是关键字,关键字不能用作标识符。
单精度printF不是关键字,因为标识符区分大小写。
所以选项A不正确。
6.有以下程序:
#include<stdio.h>
main()
{chara,b,c;
b="1";c="A";
for(a=0;a<6;a++)
{if(a%2)putchar(b+a);
elseputchar(c+a);
}
}
程序运行后的输出结果是______。
(分数:
1.00)
A.1B3D5F
B.ABCDEF
C.A2C4E6 √
D.123456
解析:
[解析]本题考查putchar输出语句,当a=0时,a%2=0,执行else语句,所以第一次输出A;当a=1时,a%2=1,执行if语句,所以第二次输出2,依次类推,所以答案选择C。
7.下面对软件特点描述不正确的是______。
(分数:
1.00)
A.软件是一种逻辑实体,具有抽象性
B.软件开发、运行对计算机系统具有依赖性
C.软件开发涉及软件知识产权、法律及心理等社会因素
D.软件运行存在磨损和老化问题 √
解析:
[解析]与硬件不同,软件在运行、使用期间不存在磨损、老化问题。
8.下列叙述中正确的是______。
(分数:
1.00)
A.存储空间不连续的所有链表一定是非线性结构
B.节点中有多个指针域的所有链表一定是非线性结构
C.能顺序存储的数据结构一定是线性结构
D.带链的栈与队列是线性结构 √
解析:
[解析]一个非空的数据结构如果满足以下两个条件:
有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,称为线性结构,也称为线性表,可以采用顺序存储和链式存储,其中链式存储空间不连续,所以A选项错误。
双向链表节点有两个指针域指向前一个节点的指针和指向后一个节点的指针,也是线性结构,敞B选项错误。
顺序存储结构中可能根节点不唯一,故可能不是线性结构,所以C选项错误。
栈是所有的插入与删除都限定在表的同一端进行的线性表;队列是允许在一端进行插入,而在另一端进行删除的线性表。
故D选项正确。
9.设有宏定义:
#defineIsDIV(k,n)((k%n==1)?
1:
0)
且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&&IsDIV(m,7)
为真时所要表达的是______。
(分数:
2.50)
A.判断m是否能被5和7整除
B.判断m被5和7整除是否都余1 √
C.判断m被5或者7整除是否余1
D.判断m是否能被5或者7整除
解析:
[解析]本题考查逻辑运算符的相关概念。
逻辑与若要为真,那么两边都要为真,需要m能被5和7整除,且都余1,所以选项B正确。
10.按照C语言规定的用户标识符命名规则,不能出现在标识符中的是______。
(分数:
1.00)
A.连接符 √
B.大写字母
C.数字字符
D.下划线
解析:
[解析]C语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。
因此A选项中的连接符不合法。
11.设有宏定义:
#defineIsDIV(k,n)((k%n==1)?
1:
0)
且变量m已正确定义并赋值,则宏调用:
IsDIV(m,5)&&IsDIV(m,7)
为真时所要表达的是______。
(分数:
1.00)
A.判断m是否能被5和7整除
B.判断m被5和7整除是否都余1 √
C.判断m被5或者7整除是否余1
D.判断m是否能被5或者7整除
解析:
[解析]本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,即m都能被5和7整除都余1,所以选项B正确。
12.有以下程序
#include<stdio.h>
voidswap(int*a,int*b)
{intt,*tp;
t=*a;*a=*b;*b=t;
tp=a;a=b;b=tp;
printf("%d,%d,",*a,*b);
}
main()
{inti=3,j=7,*p=&i,*q=&j;
swap(p,q);
printf("%d,%d,%d,%d",i,j,*p,*q);
程序执行后的输出结果是______。
(分数:
1.00)
A.3,7,3,7,3,7
B.7,3,7,3,7,3
C.3,7,3,7,7,3
D.3,7,7,3,7,3 √
解析:
[解析]main()函数中,首先定义两个整型变量i和j,初值为3和7,并将i的地址赋给p,j的地址赋给q,传给swap()函数,swap()函数接收两个整型指针变量a,b,然后使用整型变量t交换a、b所指向的值并输出,通过指针变量,这次交换改变了实参i、j的值,使得i=7,j=3;指针变量tp交换a和b的值,由于a、b的值是p,q值的拷贝,所以这次交换只改变了形参a,b的值,对实参p,q的值没有改变,所以此时a指向j,b指向i,函数最后输出*a和*b,所以输出3,7;由于swap()函数改变了p和q指向的值,但未改变p,q的值,所以main()函数输出i的值为7,j的值为3,*p的值为i,*q的值为j,所以程序输出:
3,7,7,3,7,3,本题答案为D。
13.以下程序段给数组所有元素输入数据:
#include<stdio.h>
main()
{inta[10],i=0;
while(i<10)scanf("%d",______);
}
应在下划线处填入的是
(分数:
1.00)
A.a+(i++) √
B.&a[i+1]
C.a+i
D.&a[++i]
解析:
14.有如下定义:
structst
{charname[12];intage;charsex;}std[10],*p=std;
以下语句错误的是______。
(分数:
1.00)
A.scanf("%d",p->age); √
B.scanf("%s",std[0].name);
C.scanf("%d",&std[1].age);
D.scanf("%c",&(p->sex));
解析:
[解析]A选项中,p->age是结构指针访问结构成员的方式,如果为结构体内变量进行赋值,应该对指针地址指向的单元进行赋值,因此在p->age前面应该加入取地址符&,A选项语句错误,答案为A选项。
15.若有以下程序段:
charstr[4][12]={"aaa","bbbb","ccccc","dddddd"},*strp[4];
inti;
for(i=0;i<4;i++)strp[i]=str[i];
则以下错误引用字符串的选项是(其中0≤k<4)______。
(分数:
1.00)
A.*strp
B.str[k]
C.strp[k]
D.strp √
解析:
[解析]程序定义了二维数组str,指针数组strp。
A项正确,*strp引用数组str的第一行字符串”aaa”;B项正确,str[k]引用数组str的第k行字符串;C项正确,strp[k]引用数组str的第k行字符串;D项错误,strp不能引用字符串。
16.有以下程序段:
intj;floaty;charname[50];
scanf("%2d%f%s",&j,&y,name);
当执行上述程序段,从键盘上输入555667777abc后,y的值为______。
(分数:
2.00)
A.55566.0
B.566.0 √
C.7777.0
D.566777.0
解析:
[解析]本题考查通过scanf函数输入数据时的格式控制问题。
变量j的格式控制为“%2d”,即只接收输入数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B。
17.程序流程图中带有箭头的线段表示的是______。
(分数:
1.00)
A.图元关系
B.数据流
C.控制流 √
D.调用关系
解析:
[解析]在数据流图中,用标有名字的箭头表示数据流。
在程序流程图中,用标有名字的箭头表示控制流。
所以选择C选项。
18.已定义以下函数
intfun(int*P)
{return*P;}
fun函数返回值是______。
(分数:
1.00)
A.一个整数 √
B.不确定的值
C.形参p中存放的值
D.形参p的地址值
解析:
[解析]本题考查的是指针的概念。
在C语言中,指针是一种特殊的变量,它存放的值是一个内存地址。
所以一个指针变量涉及三个值:
指针变量所指内容的值、指针变量中存放的值、指针变量的地址值。
它们可以分别用表达式*p、p、&p来表示。
题目中fun()函数的返回表达式是*p,所以选项C、D不为所选,而应该是形参p所指内容的值,因为p为int型指针,所以该值是一个整数。
故应该选择A。
19.软件测试的目的是______。
(分数:
2.50)
A.评估软件可靠性
B.发现并改正程序中的错误
C.改正程序中的错误
D.发现程序中的错误 √
解析:
[解析]软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为D。
20.若有定义:
floatx=1.5;inta=1,b=3,c=2;,则正确的switch语句是______。
(分数:
2.50)
A.switch(a+b){case1:
printf("*/n");case2+1:
printf("**/n");} √
B.switch((int)x);{case1:
printf("*/n");case2:
printf("**/n");}
C.switch(x){case1.0:
printf("*/n");case2.0:
printf("**/n");}
D.switch(a+b){case1:
printf("*/n");casec:
printf("**/n");}
解析:
[解析]B选项中switch((int)x);语句中不应该有最后的分号。
switch(expr1)中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C选项错误。
case后面必须为常量表达式,所以D选项错误。
21.下面程序的运行结果是______。
#include<stdio.h>
voiddel(char*s)
{inti,j;
char*a;
a=s;
for(i=0,j=0;a[i]!
="/0";i++)
{if(a[i]>="0"&&a[i]<="9")
{s[j]=a[i];
j++;
}
s[j]="/0";
}
}
main()
{chars[]="aa89gggh";
del(s);
printf("/n%s",s);
}
(分数:
2.00)
A.aa
B.89 √
C.gggh
D.aa89gggh
解析:
22.以下选项中表示一个合法的常量是(说明:
符号□表示空格)______。
(分数:
1.00)
A.9□9□9
B.0Xab √
C.123E0.2
D.2.7e
解析:
[解析]当用指数形式表示浮点数据时,E的前后都要有数据,并且E的后面数要为整数。
23.有以下程序:
#include
#defineS(x)(x)*x*2
main()
{intk=5,j-2;
printf("%d,",S(k+j));printf("%d/n",S((k-j)));
}
程序运行后的输出结果是。
∙A.98,18
∙B.39,11
∙C.39,18
∙D.98,11
ABCD
C
[解析]由#define的定义知,x是在预编译阶段替换参数值,即第一个s(k+j)替换成(k+j)*k+j*2,带入数值得39;第二个s((k-j))替换成((k-j)*(k-j)*2,带入数值得18。
故选C)。
(分数:
2.00)
A.98,18
B.39,11
C.39,18 √
D.98,11
解析:
[解析]由#define的定义知,x是在预编译阶段替换参数值,即第一个s(k+j)替换成(k+j)*k+j*2,带入数值得39;第二个s((k-j))替换成((k-j)*(k-j)*2,带入数值得18。
故选C)。
24.若有以下程序段:
intr=8;
print("%d/n",r>>1);
输出结果是______。
(分数:
1.00)
A.16
B.8
C.4 √
D.2
解析:
[解析]本题考查移位运算。
将8转为二进制数为1000,右移一位不足补0,结果为0100,转化为十进制结果为4。
25.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是____。
(分数:
1.00)
A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n); √
D.voidfun(n,x);
解析:
[解析]本题考查函数调用。
函数调用时,实参前不需加类型说明,选项A)错误;题目中的函数没有返回值,所以选项B)错误;函数调用前不需要加类型说明,选项D)错误。
26.下列叙述中正确的是______。
(分数:
1.00)
A.存储空间连续的数据结构一定是线性结构
B.存储空间不连续的数据结构一定是非线性结构
C.没有根节点的非空数据结构一定是线性结构
D.具有两个根节点的数据结构一定是非线性结构 √
解析:
[解析]一个非空的数据结构如果满足以下两个条件:
有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,称为线性结构,也称为线性表,可以采用顺序存储和链式存储,其中顺序存储的空间连续而链式存储空间不连续。
非线性结构是指不满足以上两个条件的数据结构,非线性结构主要是指树形结构和网状结构。
数据结构线性与否与存储空间是否连续没有直接关系,如二叉树可以用一片连续的空间来存储,但其为非线性结构,A选项错误。
线性表的链式存储结构可以用不连续的空间来存储,但其为线性结构,B选项错误。
没有根节点的非空数据结构一定不是线性结构,C选项错误。
具有两个根节点的结构一定是非线性结构,故D选项正确。
27.以下选项中,能够正确利用随机函数rand(),产生一个英文字母的表达式是______。
(分数:
1.00)
A.rand()%2==0?
rand()%"A":
rand()%"a"
B.rand()%26+"A"||rand()%26+"a"
C.rand()%26+"A"&&rand()%26+"a"
D.rand()%2==0?
rand()%26+"A":
rand()%26+"a" √
解析:
[解析]rand()函数是产生随机数的函数,它可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX是stdlib.h中定义的一个整数。
通常如果我们需要随机0~N-1之间的一个随机数,需要使用rand()的结果对N求模即可。
选项A中,rand()%2只有两个值0或1,所以当rand()%2的结果为0时,整个表达式的值是rand()%"A",这里"A"要转换成ASCII码值65,所以结果为0~64之间的一个随机数,当rand()%2的结果为1时,整个表达式的值是rand()%"a","a"的ASCII码值为97,所以结果是0~96之间的一个随机数,可见选项A错误;逻辑或运算符||或逻辑与运算符&&的结果都只能是0或非0,所以选项B、C也是错误的;选项D中,如果rand()%2的结果为0,那么整个表达式的值为rand()%26+"A",0~25之间任一个数与"A"的和都是一个大写字母;如果rand()%2的值为1,整个表达式的值为:
rand()%26+"a",0~25之间任一个数与"a"的和都是一个小写字母,所以选项D正确;本题答案为D。
28.下面不属于对象主要特征的是______。
(分数:
1.00)
A.唯一性
B.多态性
C.可复用性 √
D.封装性
解析:
[解析]对象的基本特点如下表所示。
特点
描述
标识唯一性
一个对象通常可由对象名、属性和操作三部分组成
分类性
指可以将具有相同属性和操作的对象抽象成类
多态性
指同一个操作可以是不同对象的行为,不同对象执行同一操作产生不同的结果
封装性
从外面看只能看到对象的外部特性,对象的内部对外是不可见的
模块独立性好
由于完成对象功能所需的元素都被封装在对象内部,所以模块独立性好
可知C选项正确。
29.设有定义:
char*c;
以下选项中能够使c正确指向一个字符串的是______。
(分数:
1.00)
A.charstr[]="string";c=str; √
B.scanf("%s",c);
C.c=getchar();
D.*c="string";
解析:
[解析]选项A定义字符数组str,然后将str赋值给c,c便指向字符串str,符合题意,所以选择A。
30.C语言中运算对象必须是整型的运算符是______。
(分数:
2.50)
A.% √
B./
C.!
D.**
解析:
[解析]%既然求余数,运算对象必须是整数。
31.在结构化分析方法中,数据字典的作用是______。
(分数:
2.50)
A.存放所有需要处理的原始数据
B.存放所有处理的结果
C.存放所有程序文件
D.描述系统中所用到的全部数据和文件的有关信息 √
解析:
[解析]在C语言中,结构化分析方法中的数据字典的作用是描述系统中所用到的全部数据和文件的有关信息。
32.有以下程序:
#include<stdio.h>
main()
{chara[30],b[30];
scanf("%s",a);
gets(b);
printf("%s%s",a,b);
}
程序运行时若输入:
howareyou?
Iamfine<回车>
则输出结果是______。
(分数:
2.00)
A.howareyou?
Iamfine
B.howareyou?
Iamfine
C.howareyou?
Iamfine √
D.howareyou?
解析:
[解析]这道题主要考查的是scanf函数和gets函数在输入字符串时的差别。
scanf函数在以格式字符s输入字符串时,当遇到字符“/0”时,表示输入字符串结束。
而函数gets(b)是从键盘读入一行字符串放入字符数组b中,所以当从键盘输入howareyou?
Iamfine<回车>时,把字符串how存入字符数组a中,把其余的字符存入字符数组b中,因而正确答案为选项C。
33.以下结构体类型说明和变量定义中正确的是______。
(分数:
2.00)
A.typedefstruct{intn;charc;}REC;RECt1,t2; √
B.structREC;{intn;charc;);RECt1,t2;
C.typedefstructREC;{intn=0;charc="A";}t1,t2;
D.struct{intn;charc;}REC;RECt1,t2;
解析:
[解析]B选项和C选项中,REC后不应加分号,D选项,没有typedef,REC不能作为类型名。
所以答案选择A。
34.有下列程序:
intfun(intx[],intn)
{staticintsum=0,i;
for(i=0;i<n;i++)sum+=x[i];
returnsum;
}
main()
{inta[]={1,2,3,4,5},b[]={6,7,8,9},s=0;
s=fun(a,5)+fun(b,4);printf("%d/n",s);
}
程序执行后的输出结果是______。
(分数:
1.00)
A.45
B.50
C.60 √
D.55
解析:
[解析]在函数intfun(intx[],intn)的定义中,变量sum为一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 分类 模拟 535
![提示](https://static.bdocx.com/images/bang_tan.gif)