版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
二级C语言分类模拟题557(总分57.5,做题时间90分钟)选择题1.
以下正确的字符串常量是______。A
"\\\"B
"abc"C
OlympicGamesD
""
分值:2答案:D[解析]本题考查的知识点是字符串常量。在C语言中,字符串常量是以双引号括起来的字符序列,因此B选项和C选项不正确。字符序列中可包含一些转义字符,转义字符都是以“\”开头的。A选项中包含了3个“\”,前两个(\\)代表了一个“\”字符,后面一个和“"”一起(")被看作一个“"”,所以该字符串缺少一个结束的“"”,因此不正确。D选项的两个“"”之间没有任何字符,代表的是一个空串,是合法的字符串常量,因此D选项正确;B选项的abc应该使用双引号括起来;C选项的字母也应该用双引号。2.
在一个C源程序文件中,定义一个只允许本源文件中所有函数使用的全局变量的存储类别是______。A
externB
staticC
registerD
auto
分值:2答案:B3.
以下关于return语句的叙述中正确的是______。A
没有return语句的自定义函数在执行结束时不能返回到调用处B
一个自定义函数中必须有一条return语句C
定义成void类型的函数中可以有带返回值的return语句D
一个自定义函数中可以根据不同情况设置多条return语句
分值:1答案:D[解析]一个函数可以有多个return语句,所以选择D。4.
设变量x为longint型并已正确赋值,以下表达式中能将x的百位上的数字提取出的是A
x/10%100B
x%10/100C
x%100/10D
x/100%10
分值:2答案:D5.
某系统结构图如下图所示。
该系统结构图的最大扇出数是______。A
.nB
1C
3D
4
分值:1答案:A[解析]扇出指的是由一个模块直接调用的其他模块数。题干中某系统为一个模块,其扇出数目为n(n>3),功能1与功能n模块扇出数均为2,故A选项正确。6.
下列选项中不符合良好程序设计风格的是______。A
源程序要文档化B
数据说明的次序要规范化C
避免滥用goto语句D
模块设计要保证高耦合,高内聚
分值:2答案:D7.
以下数组定义中错误的是______。A
intx[][3]={{1,2,3},{4,5,6}};B
intx[][3]={0};C
intx[2][3]={{1,2},{3,4},{5,6}};D
intx[2][3]={1,2,3,4,5,6};
分值:1答案:C[解析]C选项中x[2][3]定义的是一个2行3列的二维数组,而在给数组元素赋值时却赋成了3行,因此错误。8.
以下关于结构化程序设计的叙述中正确的是______。A
一个结构化程序必须同时由顺序、分支、循环三种结构组成B
结构化程序使用GOTO语句会很便捷C
在C语言中,程序的模块化是利用函数实现的D
由三种基本结构构成的程序只能解决小规模的问题
分值:1答案:C[解析]结构化程序设计是指将待开发的软件系统划分为若干个相互独立的模块,与具体的语句结构无关。goto语句的滥用会导致程序的可读性降低。三种基本结构构成的程序依然可以解决大规模的问题,只是不利于复用。9.
有以下程序,程序中库函数“islower(ch)”用以判断ch中的字母是否为小写字母
#include<stdio.h>
#include<ctype.h>
voidfun(char*P)
{
inti=0;
while(p[i])
{
if(p[i]==""&&islower(p[i-1]))
p[i-1]=p[i-1]-"a"+"A";
i++;
}
}
main()
{
chars1[100]="abcdEFG!";
fun(s1);
printf("%s\n",s1);
}
程序运行后的输出结果是______。A
abcdEFG!B
AbCdEFg!C
aBcDEFG!D
abcdEFg!
分值:1答案:C[解析]fun函数将空格之前的小写字母修改为大写字母,所以答案选C。10.
有以下程序:
#include<stdio.h>
doublefun(intn)
{staticdoublef=1;
f*=n;
returnf;
}
main()
{inti;
doubles=0;
for(i=1;i<6;i++)
s+=fun(i);
printf("%If\n",s);
}
程序计算的是______。A
s=1!+2!+3!+4!+5!B
s=1+2+3+4+5C
s=1*2*3*4*5D
s=1!*2!*3!*4!*5!
分值:1答案:A[解析]函数fun()中的变量f是静态变量,所以只初始化一次,之后每次调用fun(),f的初值就是上一次fun()结束时的值。对于fun()函数,当传入n=1时,f=1,返回值为1;当传入n=2时,f=1×2=2,返回值为2;当传入n=3时,f=2×3=6,返回值为6;当传入n=4时,f=6×4=24,返回值为24。所以每次调用fun()函数时,f变量在上一次fun()函数运行结束时保留值的基础上,再与n相乘,并重新赋值给f,所以可以将f理解为记录当前的累乘值,即当main()函数中i=1时,f=1!=1;当main()函数中i=2时,f=2!=2,当main()函数中i=3时,f=3!=6……另外main()函数中的s记录调用fun()函数的返回值之和,所以s=1!+2!+…+i!,由于i最大值为5,所以s=1!+2!+3!+4!+5!,故答案为A选项。11.
设变量均已正确定义,若要通过
scanf(“%d%c%d%c",&a1,&c1,&a2,&c2);
语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符x和y。以下所示的输入形式中正确的是______。(注:□代表空格字符)A
10□X<回车>20□Y<回车>B
10□X20□YC
10X<回车>20Y<回车>D
10□X□20□Y<回车>
分值:1答案:C[解析]输入数据的格式必须与scanf()的格式控制串完全匹配,如果A、B、C选项中在数字10后面均输入了空格,则会将空格赋给变量c1,而不是把X赋给c1,所以选择C选项。12.
有以下程序
main()
{intx[]={1,3,5,7,2,4,6,0},i,j,k;
for(i=0;i<3;i++)
for(j=2;j>=i;j--)
if(x[j+1]>x[j]){k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<3;i++)
for(j=4;j<7-i;j++)
if(x[j]>x[j+1])
{k=x[j];x[j]=x[j+1];x[j+1]=k;}
for(i=0;i<8;i++)
printf("%d",x[i]);
printf("\n");
}
程序运行后的输出结果是______。A
75310246B
01234567C
76310462D
13570246
分值:1答案:A[解析]在程序中,第一个for循环内部实现的是对数组中前四个元素进行降序排序,第二个for循环内部实现的是对数组后四个元素进行升序排序,因此数组x中的最后结果应该是前四个降序,后四个升序。最终结果为{7,5,3,1,0,2,4,6}。13.
算法的有穷性是指______。A
算法程序的运行时间是有限的B
算法程序所处理的数据量是有限的C
算法程序的长度是有限的D
算法只能被有限的用户使用
分值:2答案:A[解析]算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。14.
有以下程序:
#include<stdio.h>
structtt
{intx;structtt*y;}s[2]={1,0,2,0};
main()
{structtt*p=s;
p->y=s;
printf("%d",++p->x);
}
程序运行后的输出结果是______。A
2B
0C
1D
3
分值:1答案:A[解析]*p=s,可得p指向s[0],p->y指向s[1],现p->y=s,因此p->y指向s[0]。因此p->x=1,++p->x等价于++(p->x),因此打印结果为2。答案为A选项。15.
设有一个商店的数据库,记录客户及其购物情况,由三个关系组成:商品(商品号,商品名,单价,商品类别,供应商),客户(客户号,姓名,地址,电邮,性别,身份证号),购买(客户号,商品号,购买数量),则关系购买的键为______。A
客户号B
商品号C
客户号,商品号D
客户号,商品号,购买数量
分值:1答案:C[解析]候选键(码)是二维表中能唯一标识元组的最小属性集。一个二维表有多个候选码,则选定其中一个作为主键(码)供用户使用。在购买关系中,商品号、客户号、购买数量均不能唯一标识元组,每一个单独的属性集都不能作为键,但商品号与客户号构成的集合与三者构成的集合都可以唯一标识购买关系,而前者为最小属性集,故商品号与客户号构成的集合为候选键,故C选项正确。16.
以下叙述中正确的是______。A
赋值语句是一种执行语句,必须放在函数的可执行部分B
scanf和printf是C语言提供的输入和输出语句C
由printf输出的数据都隐含左对齐D
由printf输出的数据的实际精度是由格式控制中的域宽和小数的域宽来完全决定的
分值:2答案:A[解析]scanf和printf是输入输出函数,不是语句,B错误。printf输出如果有宽度控制,默认是右对齐,C错误。数据的实际精度是由数据存储类型决定的,double精度高于float,D错误。赋值语句需要放在可执行语句,所以A正确。17.
设有下列程序段:
charstr[]="HelloWorld";
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+10)的值为______。A
"\0"B
"0"C
不确定的值D
"0"的地址
分值:2.5答案:A[解析]本题主要考查字符数组和指针,在C语言中,字符型数组在存放字符串时会自动在末尾加上"\0",所以数组str有11个元素;ptr指向数组str的首地址,ptr+10是指向str[10],*(ptr+10)是引用str[10]的值。18.
下列关于栈的叙述正确的是______。A
栈按“先进先出”组织数据B
栈按“先进后出”组织数据C
只能在栈底插入数据D
不能删除数据
分值:1答案:B[解析]栈是按“先进后出”的原则组织数据的,数据的插入和删除都在栈顶进行操作。所以选择B选项。19.
以下程序的输出结果是______。试题程序
#include<stdio.h>
main()
{inta,b,c;
a=10;b=50;c=30;
if(a>b)
a=b,b=c;
c=a;
printf("a=%d,b=%d,c=%d",a,b,c);
}A
a=10,b=50,c=10B
a=10,b=30,c=10C
a=50,b=30,c=10D
a=50,b=30,c=50
分值:1答案:A[解析]本题考查了if语句的执行流程。20.
有嵌套的if语句:
if(a<b)
if(a<c)k=a;
elsek=c;
elseif(b<c)k=b;
elsek=c;
以下选项中与上述if语句等价的语句是______。A
k=(a<b)?((b<c)?a:b):((b>c)?b:c);B
k=(a<b)?((a<c)?a:c):((b<c)?b:c);C
k=(a<b)?a:b;k=(b<c)?b:c;D
k=(a<b)?a:b;k=(a<c)?a:c;
分值:2.5答案:B[解析]题目中嵌套语句的含义是当a<b且a<c成立时,将a的值赋给k,如果a<b成立而a<c不成立,则将c的值赋给k。如果a<b不成立而b<c成立,则将b的值赋给k,如果a<b不成立且b<c也不成立,则将c的值赋给k。判断条件表达式,只有B选项可以表示这个含义。21.
有以下程序:
#include<stdio.h>
#defineSUB(A)(a)-(a)
main()
{inta=2,b=3,c=5,d;
d=SUB(a+b)*c;
printf("%d\n",d);
}
程序运行后的输出结果是______。A
0B
-12C
-20D
10
分值:1答案:C[解析]本题考查宏定义,宏定义只是做简单的替换,所以本题中SUB(a+b)*c=(a+b)-(a+b)*c=-20,所以答案为C选项。22.
有以下程序
#include<stdio.h>
main()
{
inta=2,c=5;
printf("a=%%d,b=%%d\n",a,c);
}
程序的输出结果是______。A
a=2,b=5B
a=%2,b=%5C
a=%d,b=%dD
a=%%d,b=%%d
分值:2答案:C[解析]格式化输出函数两个%会输出一个%,同时即失去了占位符的作用,d也会原样输出,所以答案选择C。23.
下列叙述中正确的是______。A
循环队列有队头和队尾两个指针,因此,循环队列是非线性结构B
在循环队列中,只需要队头指针就能反映队列中元素的动态变化情况C
在循环队列中,只需要队尾指针就能反映队列中元素的动态变化情况D
循环队列中元素的个数是由队头指针和队尾指针共同决定
分值:2.5答案:D[解析]循环队列有队头和队尾两个指针,但是循环队列仍是线性结构,因此A错误;在循环队列中需要队头与队尾两个指针来共同反映队列中元素的动态变化情况,因此B与C错误,故本题答案为D。24.
关系数据模型______。A
只能表示实体间1:1联系B
只能表示实体间1:m联系C
可以表示实体间m:n联系D
能表示实体间1:n联系而不能表示实体间n:1联系
分值:1答案:C[解析]关系模型是目前最常用的数据模型之一,现实世界的实体以及实体间的各种联系均用关系来表示。实体集之间通过联系来建立连接关系分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。故C选项正确。25.
以下叙述中正确的是______。A
C语言源程序即使不编译,也是可以直接运行的B
一个程序要被称为结构化程序,则只能包含循环结构、选择结构、顺序结构C
使用N-S流程图只能描述简单的算法D
复杂算法是指不能分解成子任务的算法
分值:1答案:B[解析]C语言源程序必须经过编译、链接,生成二进制可执行文件,才可以运行,选项A错误;由3种基本结构:即循环结构、选择结构、顺序结构构成的程序称为结构化程序,选项B正确;使用N-S流程图可以描述任何算法,选项C错误;可以将复杂算法分解成多个子任务来解决,这种程序的设计方法称为模块化设计,选项D错误。故本题答案为B选项。26.
若i、j已定义成int型,则下列程序段中内循环体的总执行次数是______。
for(i=6;i>0;i--)
for(j=0;j<4;j++){…}A
20B
24C
25D
30
分值:2.5答案:B[解析]本题考查for循环的使用。对于第1个for循环,任何一个i,内层j的循环都要使j=0到3,j=4时不符合,所以退出j循环;然后i减1,j仍然要从0~3,j=4时退出j循环直到i变成0,退出i循环。第一条for语句执行6次,第二条for语句执行4次,所以内循环体执行6*4=24次。27.
下面不能作为结构化方法软件需求分析工具的是______。A
系统结构图B
数据字典(DD)C
数据流程图(DFD图)D
判定表
分值:1答案:A[解析]结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。28.
下列叙述中正确的是____。A
break语句只能用于switch语句体中B
continue语句的作用是使程序的执行流程跳出包含它的所有循环C
break语句只能用在循环体内和switch语句体内D
在循环体内使用break语句和continue语句的作用相同
分值:2答案:C[解析]只能在循环体内和switch语句体内使用break语句。当break出现在循环体的switch语句体内时,其作用只是跳出该switch语句体,并不能中止循环体的执行。若想强行中止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件,则跳出本层循环体。29.
以下选项中,不正确的实型常量是______。A
123B
1e4C
3.640E-1D
0.35
分值:1答案:A30.
有以下程序:
#include<stdio.h>
main()
{
intsum,pad,pAd;
sum=pad=5;
pAd=++sum,pAd++,++pad;
printf("%d\n",pad);
}
程序运行后的输出结果是______。A
5B
6C
7D
8
分值:1答案:B[解析]C语言区分大小写,pad与pAd是两个不同的变量。首先将5赋值给两个变量,由于赋值运算符的优先级高于逗号运算符,所以计算pAd=++sum,此时pAd为6,sum也为6,然后计算pAd++,pAd的值变为7,++pad,pad的值变为6,所以选择B选项。31.
以下叙述中正确的是______。A
用户自己定义的函数只能调用库函数B
实用的C语言源程序总是由一个或多个函数组成C
不同函数的形式参数不能使用相同名称的标识符D
在C语言的函数内部,可以定义局部嵌套函数
分值:1答案:B[解析]A选项中,“用户自己定义的函数只能调用库函数”描述是不正确的,也可以调用自定义函数;C选项中,对于不同函数的形式参数可以使用相同名称的标识符;D选项中,关于函数的定义不可以嵌套,但函数的调用可以嵌套。B选项正确。32.
下面4个关于C语言的结论中错误的是______。A
可以用do...while语句实现的循环一定可以用while语句实现B
可以用for语句实现的循环一定可以用while语句实现C
可以用while语句实现的循环一定可以用for语句实现D
do...while语句与while语句的区别仅是关键字“while”出现的位置不同
分值:2.5答案:D33.
以下选项中能表示合法常量的是______。A
整数:1,200B
实数:1.5E2.0C
字符斜杠:""D
字符串:"\007"
分值:1答案:D[解析]选项A:整数中不能用逗号分隔,选项B:实数中E后数值必须是整数,选项C:C语言里字符串中的字符“\”需转义,应为“\\”。34.
以下叙述中错误的是______。A
书写风格良好的程序执行效率高B
书写风格良好的程序易读性好C
C程序可以在一行上写多条语句D
C程序允许将一条语句分写在多行上
分值:1答案:A[解析]书写风格良好的程序易读性好,方便团队合作,分模块来完成复杂的程序设计,B选项叙述正确。但是书写风格与程序执行效率无关,程序执行效率与程序的数据结构有关,由算法的时间复杂度和空间复杂度决定,A选项叙述错误。C语言程序书写规范中,良好的书写习惯中一般一行写一条语句,这样方便阅读,但是一行写多条语句是符合C程序编写规则的,C选项叙述正确。C程序允许将一条较长的语句分写在多行,D选项叙述正确。叙述中错误的是A选项,故选择A选项。35.
以下程序的输出结果是()。
structHAR
{intx,y;structHAR*p;}h[2];
main()
{h[0].x=1;h[0].y=2;
h[1].x=3;h[1].y=4;
h[0].p=&h[1];h[1].p=h;
printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);
}A
12B
23C
14D
32
分值:1答案:D[解析]本题考查的是C语言中结构体与链表。本题中是一个含有两个结点的循环链表。C语言中结构体的定义为:
struct结构体类型名
{
成员项表;
);36.
某二叉树有5个度为2的节点,则该二叉树中的叶子节点数是______。A
10B
8C
6D
4
分值:1答案:C[解析]根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子节点的个数总是比度为2的节点个数多一个,所以本题中是5+1=6(个)。37.
有以下程序:
#include<stdio.h>
main()
{intx;
scanf("%d",&x);
if(x<=0);else
if(x!=5)printf("%d\n",x);
}
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论