版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2024年3月全国打算机等伍培弑二怒C语言再题
一、选择题
1、下列叙述中正确的是:
1A、循环队列是队列的一种依次存储结构B、循环队列是队列的一种链式存储结构
C、循环队列是非线性结构D、循环队列是始终逻辑结构
(1)【答案】A
【解析】为了充分利用存储空间,可以把依次队列看成一个环状空间,即把依次队列的
头尾指针相连,这样的队列称之为循环队列。它是对依次队列的改进,故循环队列是队列的
一种依次存储结构
2、下列叙述中正确的是
A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表
C、栈和队列都是非线性结构ID、以上三种说法都不对
(2)LD]
【解析】栈是一种后进先出的线性表,队列是一种先进先出的线性表,二者均是线性结
构,故选项A)、B)、C)均不对,答案为选项D)。
3、一棵二叉树共有25个节点,其中5个时子节点,那么度为1的节点数为
As4B、6C、10ID、16
(3)[D]
【解析】由二叉树的性质n0=n2+l可知,度为0的结点数(即叶子结点数)二度为2
的结点数+1,依据题意得知,度为2的结点数为4个,那么25-5-4=16即为度为1的结
点数,选项D)正确
4、在下列模式中,能够给出数据库物理存储结构与物理存取方法的是
1A、内模式B、外模式C、概念模式D、逻辑模式
(4)、【答案】A
【解析】内模式也称存储模式,它是数据物理结构和存储方式的描述,是数据在数据库
内部的表示方式,对应于物理级,它是数据库中全体数据的内部表示或底层描述,是数据库
最低一级的逻辑描述。所以选项A)正确。
5、在满意实体完整性约束的条件下
A、一个关系中可以没有候选关键词
B、一个关系中只能有一个候选关键词
C、一个关系中必需有多个候选关键词
D、一个关系中应当有一个或者多个候选关键词1
(5)【答案】D
【解析】在关系R中如记录完全函数依靠于属性(组)X,则称X为关系R中的一个候
选关键字。在一个关系中,候选关键字可以有多个且在任何关系中至少有一个关键字。所以
在满意数据完整性约束的条件下,一个关系应当有一个或多个候选关键字,所以选项D)正
确。
6、有三个关系R、S和T如下:
ABCS
a12ABC
b21
c31
则由关系R和S得到关系T的操作是属于R但不属于S为差
A、自然连接B、并1C、差D、交
(6)【答案】C
【解析】R和S的差是由属于R但不属于S的元组组成的集合,运算符为记为
T=R-S。依据本题关系R和关系S运算前后的变更,瓦以看出此处进行的是关系运算的差
运算
7、软件生命周期中的活动不包括
A、软件维护1B、市场调研C、软件测试D、需求分析
(7)【答案】B
【解析】通常把软件产品从提出、实现、运用、维护到停止运用(退役)的过程称为软件
生命周期。可以将软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。软件生
命周期的主要活动阶段是可行性探讨与安排制定、需求分析、软件设计、软件实现、软件测
试、运行和维护。软件生命周期不包括市场调研。
8、下面不属于需求分析阶段任务的是
A、确定软件系统的功能需求B、确定软件系统的系统的系能需求
1C、制定软件集成测试安排D、需求规格说明书审评
(8)【答案】C
【解析】需求分析是对待开发软件提出的需求进行分析并给出具体的定义。主要工作是
编写软件需求规格说明书及用户手册。需求分析的任务是导出目标系统的逻辑模型,解决''做
什么〃的问题。制定软件集成测试安排是软件设计阶段须要完成的任务
9、在黑盒测试方式中,设计测试用例的主要依据是
A、程序外部功能B、程序内部逻辑
C、程序数据结构D、程序流程图
(9)【答案】A
【解析】黑盒测试也称功能测试或数据驱动测试,设计测试用例着眼于程序外部结构、
不考虑内部逻辑结构,主要针对软件界面和软件功能进行测试。
1()、在软件设计中不运用的工具是
A、系统结构图B、程序流程图C、PAD图D、数据流图(DFD图)
(10)【答案】D
【解析】软件设计包括概要设计和具体设计,软件概要设计中,面对数据流的设计方法
有变换型系统结构图和事务型数据流两种。软件具体设计,程序流程图(PDF)和PAD(问题
分析图)是过程设计的常用工具。数据流图(DFD图)是软件定义阶段结构化分析方法常用的
工具。
11、针对简洁程序设计,以下叙述的实施步骤正确的是
A、确定算法和数据结构、编码、调试、整理文档
B、编码、确定算法和数据结构、调试、整理文档
C、整理文档、确定算法和数据结构、编码、调试
D、确定算法和数据结构、调试、编码、整理文档
(11)【答案】A)
【解析】简洁程序设计的步骤是首先要确定算法和数据结构,然胡编码、调试,最终整
理相关文档。
12、关于C语言中数的表示,以下叙述正确的是
A、只有整型数在允许范围内能精确无误的表示,实型数会有误差
B、只要在在允许范围内整型和实型都能精确表示
C、只有实型数在允许范围内能精确无误的表示,整型数会有误差
D、只有八进制表示的数在不会有误差
(12)【答案】A)
【解析】实型数据在内存中存储的二进制位数是有限的,例如float型数据在内存中有
24位二进制尾数。而一个十进制实数转化为二进制实数时,其有效数字位数有可能会超过
尾数的存储长度,从而导致有效数字丢失而产生误差。
13、以下关于算法叙述错误的是
A、算法可以用伪代码、流程图等多种形式来描述
B、一个正确的算法必需有输入
C、一个正确的算法必需有输出
D、用流程图可以描述的算法可以用任何一种计算机高级语言编写成程序代码
(13)【答案】B)
【解析】一个正确的算法可以有零个或者多个输入,必需有一个或者多个输出。
14、以下叙述错误的是
A、一个C程序可以包含多个不同名的函数
B、一个C程序只能有一个主函数
C、C程序在书写时,有严格的缩进要求,否则不能编译通过
D、C程序的主函数必需月main作为函数名
(14)【答案】C)
【解析】一个C程序有且只有一个主函数main。。一个C程序可以包含多个不同名
字的子函数。C程序在书写时没有严格的缩进要求。
15、设有以下语句
Charchl,ch2,scanf(',%c%c,\&ch1,&ch2);
若要为变量chi和ch2分别输入字符A和R,正确的输入形式应当是
A、A和B之间用逗号间隔B、A和B之间不能有任何间隔符
C、A和B之间可以用回车间隔D、A和B之间用空格间隔
(15)【答案】B)
【解析】考察C语言中输入格式,因为在输入格式中定义好了〃%c%c〃,其中没有任何
符号,所以中间不能加任诃字符,包含不能加逗号、回车和空格,因为这些也算是字符。所
以在输入时也不行以有任何间隔符号。
16、以下选项中非法的字符常量是
A、,\102,B、'\65'C、'\xff'D、'\019'
(16)【答案】D)
【解析】字符常量有两种表示方法:
一种是用该字符的图形符号,如七‘,,','*;另外还可以用字符的ASCH码表示,
即用反斜符(\)开头,后跟字符的ASCH码,这种方法也称为转义序列表示法,具体方法是:
有两种形式:一种是用字符的八进制ASCH码,表示为:\odd.这里,ddd是八进制值(o
可以省略)。另一种运用字符的十六进制ASCII码值,表示为\0xhh或OXhh这里hh
是两位十六进制值。
本题中D)选项、\019’运用是八进制表示,不应当出现9,所以错误。
17、有以下程序
#includc<sthio.h>
Main()
(
IntA=O,B=O,C=O;
C=(A-=A-5);(A=B,B+=4);
Printf(u%d,%d.%d\n”,A,B,C)
)
程序运行后输出的结果是
A0,4,5B4.4,5C4,4,4D0,0.0
(17)【答案】A)
【解析】考察C语言关于赋值的应用,首先执行a-=a-5,即己=次(3・5),使得a的
值为5,然后执行c=(a-=a-5),即将a的值5赋给变量c,使得c的值也为5。然后执行
下句逗号表达式中的a=b,把b的值。赋给a,此时a的值为0,然后执行b=b+4,使
得b的值为4。最终打印输出。
18、设变量均已正确定义并且赋值,以下与其他三组输出结构不同的一组语句是
A、x++;printf(("%d\n”,x);B、n=++x;printf(("%d\n”,n);
C>++x;printf((u%d\n,,,x);D、n=x++;printf(("%d\n”,n);
(18)【答案】D)
【解析】本题考察自增运算符,++X表示先将x值加1后再用,x++表示先运月x
值,用后加L所以本题中ABC选项都会输出x+1的值,只有D选项会输出x值。
19、以下选项中,能表示逻辑值"假''的是
A1B0.000()01C0D100.0
(19)【答案】C)
【解析】在C语言中非0的值表示真,。表示假。
20、有以下程序
#include<sthio.h>
Main()
{inta:
Scanf("%d”,&a);
If(a++<9)printf((u%d\n,,,a);
Elseprintf((<<%d\nM,a");
)
程序运行时键盘输入9〈叵车〉,则输出的结构是
A、10BIIC9D8
(20)【答案】A)
【解析】考察if语句和自增自减运算符,推断条件中if(a++v9)是先用后加,即a的
值为9,所以条件不成立,但是a已经进行了自增1操作,a的值此时为10。执行else
语句时,因为打印a--,是先用后减,所以先输出10,然后a的值变为9。
21、有以下程序
#includc<sthio.h>
Main()
{ints=0,n;
For(n=0;n<3;n<++)
{switch(s)
{case0;
CaseI;s+=1;
Case2;s+=2;break;
Case3;s+3;
Case4;s+=4;
)
printf(("%d\n”,s);
)
I
程序运行后的结果是
A1,2,4B1,3,6C3,10,14D3,6,10
(21)【答案】C)
【解析】本题考察switch语句的应用,case分支后面假如没有break,那么就会依
次执行下面的case,直到遇到break跳出。所以第一次循环后s的值为3打印输出。其次
次s的值为:s=s+3,s=s+4,即为10,打印输出。第三次没有匹配胜利干脆执行default
语句,s=s+4,所以s的值为14,打印输出。
22、若k是int类型变量,且有以下for语句
For(k=-1;k<0;k++)
下面关于语句执行状况的叙述中正确的是
A、循环体执行一次B、循环体执行两次
C、循环体一次也不执行D、构成无限循环
(22)【答案】A)
【解析】考察fo「循环语句,本题中k初始值为执行一次循环体,执行完后k值
为0,不满意k<0条件,推出循环,所以执行了一次。
23、有以下程序
#include<sthio.h>
Main()
{charA,B,C;
B=T;C='A'
For(A=0;A<6;A++)
{if(A%2)putchar(B+A;;
Elseputchar(C+A);
I
)
程序运行后输出的结果是
A1B3D5FBABCDFECA2C4E6D123456
(23)【答案】C)
【解析】考察for语句和if语句,第一次循环a的值为0,a%2也为0,条件不满
意所以打印的是(c+a)即变量c的值'、A〃。其次次a的值为1,条件a%2的值为L条件
满意打印字符(b+a)即字符、'2〃。第三次a的值为2,条件不满意,打印(a+c)即字符〃C〃。
同理打印后续字符为''4E6〃°
24、设有如下定义语句
Intm[]={2A6,8},*k=m;
以下选项中,表达式的值为6的是
A*(k+2)Bk+2C*k+2D*k+=2
(24)【答案】A)
【解析】考察数组和指针的概念,本题中*k指向数组m的首地址。*(k+2)现将指针
后移两个元素,即为m[2]的首地址,然后取出m[2]的值6,所以选择A选项。选项B的
值是一个地址无意义。选项C的值为4。选项D使得m[0]的值为4。
25、fun函数的功能是:通过键盘输入给x所指的整型数组全部元素赋值。在下列划线处应
当填写的是
#include<sthio.h>
#defineN5
Viodfun(intx[N])
{inim;
For(m=N-l:m>0;m-)scanf("%d\n”,
}
A&xl++m]B&x[m+l]Cx+(m++)Dx+m
(25)【答案】D)
【解析】考察指针的概念和应用,数组名本身就是地址,所以不须要在用&符号。C选
项不能对全部元素赋值而是反复再给一个数值赋值且是死循环。
26、若有函数
Viodfun(doublea[],int*n)
以下叙述中正确的是
A、调用fun函数时只有数组执行按值传送,其他实参和形参之间执行按地址传送
8、形参a和n都是指针变量
C、形参a是一个数组名,n是指针变量
D、调用fun函数时将把double型实参数组元素一一对应地传送给形参a数组
(26)【答案】B)
【解析】函数中的形参矶]已经退化为一个指针,所以AC都不时,D选项中只是传入
一个指针,并没有把数组的元素挨个赋值,正确选项为B。
27、有以下程序
#include<sthio.h>
Main()
{inta,b,k,iii,*pl,*p2;
k=l,m=8;
pl=&k,p2=&m;
a=/*pl-m;b=*pl+*p2+6;
printf(44%d",a);printff4%d\n,\b);
)
编译时编译器提示错误信息,你认为出错的语句是
A、a=/*pl-mB、b=*pl+*p2+6
C、k=l,m=8;D、pl=&k,p2=&m;
(27)【答案】A)
【解析】选项A中a=表示方式不正确,未能正确表示出含义。
28、以下选项中有语法错误的是
Achar*str[]={"guest");B、charstr[IO]={ttguesf,};
C、char*str[3]*str[l]={uguesr};D、charstr[3][10];str[l]={"guest"};
(28)【答案】D)
【解析】考察指针数组的概念,D选项中str为二维字符数组,不能够干脆把一个字符
串赋值到一维数组的某一行中。
29、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最多不超过
10,则下列函数说明语句错误的是
A、intavg(int*a,intn);B、intavg(inta[10],intn);
C、intavg(inta,intn);D、intavg(inta[],intn);
(29)【答案】C)
【解析】考察函数声明基本用法,C选项中函数的第一形参没有指名是数组,代表的是
一个整型数,声明不正确,
30、有以下函数
#include<sthio.h>
#include<string.h>
main()
{printfr%d\n,,,stnen,,ATS\nO12\1);}
程序运行后的输出结果是
A3B8C4D9
(30)【答案】B)
【解析】考察转义字符的用法,strlen函数的作用是求得字符串长度,\n与\1均是反
义字符各表示一个字符所以打印值为8。
31、有以下函数
#include<sthio.h>
main()
{chara|20|,b|20|,c|20|;
scanf(,,%s%s,,,a,b);
get(c);
printf(',%s%s\n,,,a.b.c);
)
程序运行时从第•行起先输入thisisacat!〈回车〉,则输出结果是
A(hisisacat!BthisisaCthisisacat!Dthisisacal!
(31)【答案】C)
【解析】考察scanf和gets输入字符串的区分,scanf语句接收字符时遇到空格就作
为一个字符串的结束,所以a数组中为this,b数组中为is,但是getchar函数见到回车
才认为结束所以c数组为acat!。所以打印结果如选项C,
32、有以下函数
#include<sthio.h>
viodfun(charc)
{if(c>'x')fun(c-l);
printf(44%c,\c);
}
main()
{fun”z”;}
程序运行输出结果是
AxyzBwxyzCzyxwDzyx
(32)【答案】A)
【解析】考察函数的嵌套调用,当运行fun('z'),调用fun('y'),然后嵌套调用funfx'),
输出结果为先输出x,然后输出y,最终输出z。
33、有以下函数
#inckide<sthio.h>
viodfunc(intn)
{inti;
fbr(i=O;i<=n;i++)prinlfp*");
printf("#”);
main()
{func(3);printR'?"?");tunc(4);printf(、、\n");}
程序运行输出结果是
A****#”?’>***#B***#”?,)*****#
Q**#”?•?*****#D*本木木木木*木木#
(33)【答案】D)
【解析】考察for循环函数调用,执行fun(3)是输出****,然后输出#,执行fun(4)
时输出*****,然后输出#,所以选项D)正确。
34、有以下函数
#include<sthio.h>
viodfun(int*s)
{staicintj=0;
do{s[j]=s(jl+s[j+l];}wihle(++j<2);
)
main()
{intk,a[10]={L2,3,4,5);
for(K+l;k<3;k++)fun(a);
for(K+l;k<5;k++)prinif("%d”,a[k]);
printf("\rT);
程序运行输出结果是
A12345B23445C34756D35745
(34)【答案】D)
【解析】考察静态局部变量,静态局部变量属于静态存储方式,它具有以下特点:
(1)静态局部变量在函数内定义,它的生存期为整个源程序。
(2)静态局部变量只能在定义该变量的函数内运用该变量。退出该函数后,尽管该变量
还接着存在,但不能运用它。
(3)允许对构造类静态局部量赋初值。若未赋以初值,则由系统自动赋以。值。
(4)依据静态局部变量的特点,可以看出它是一种生存期为整个源文件的量。虽然离
开定义它的函数后不能运用,但如再次调用定义它的函数时,它乂可接着运用,而且保存了
前次被调用后留下的值。
依据这个特点,函数第一次调用时,会将数组a变为35345,当其次次调用时,函数
内的j值为2,所以会将数组a的第三个元素更改为7,所以最终结果为35745,选项D)
正确。
35、有以下函数
#includc<sthio.h>
#defineS(x)(x)*x*2
main()
{intk=5,j=2;
primf("%d,”,S[k+j]);prinif("%d\n”,S(k-j)));
}
程序运行输出结果是
A98,18B39.llC39J8D98,ll
(35)【答案】B)
【解析】考察宏定义的运用,依据该宏的定义,
S(k+j)=(k+j)*k+j*2=39z
S(k・j)=(k・j)*k・j*2=ll,所以答案为39,11选项B)正确。
36、有以下函数
#include<sthio.h>
Viodexch(intt[])
ltl0]=t[5];)
{intx[10]={1,2,34,5,6,7,8,9,10},i=0;
While(i<=4){exch(&x[i]),i++;)
fbr(i=0;i<5;i++)printfi(“%d”,x[i]);
printR"\n");
)
程序运行输出结果是
A246810B13579CI2345D678910
(36)【答案】D)
【解析】通过分析代码,可以看出来,函数的作用就是把数组某个元素的变为这个元素
位置加5后对用的元素值,所以执行完之后输出数组x的前五个元素的值,其实就是数组x
的后五个元素的值,即678910。
37、设有以下程序段
StructMP3
{charname[20];
Charcolor;
Floatprice;
)std,*ptr;
ptr=&std;
若要引用结构体变量std中的color成员,写法错误的是
Astd.colorBptr->colorCstd->colorD(*ptr).color
(37)【答案】C)
【解析】考察结构体的用法,在引用结构体中的成员变量时,可以运用'''来引用,当指
针指向结构体时,可以运用来指向结构体重的成员,C选项引用错误。
38、有以下函数
#include<sthio.h>
structstu
{intmun;charname[10];intage;};
viodfun(structstu*p)
{printf(t4%s\n,\p->nanie);}
mian()
{structstux[3]={{01;,zhang,\20},{02Jwang”,19},{03,"zhao”,18});
tun(x+2);
程序运行输出结果是
AzhangBzhaoCwangD19
(38)【答案】B)
【解析】考察结构体的用法,结构体数组存储了三个人的信息,x+2代表了指向第三
个元素,所以输出name为Zhao。
39、有以下函数
#includc<sthio.h>
mian()
{inta=l2,c;
c=(a«2)«l;
prinlf(tt%d\n,,,c):
程序运行输出结果是
A3B50C2D96
(39)【答案】D)
【解析】考察移位操作,执行c=(avv2)vvl语句时,首先是a左移两位,其等效
于将a乘以4,得到48,然后将48左移一位,相当于是乘以2,所以结果为c=96,选项
D正确。
40、以下函数不能用于向文件写入数据的是
AftcllBfwriteCfputcDfprintf
(40)【答案】A)
【解析】考察文件的操作,函数ftell()用于得到文件位置指针当前位置相对于文件首
的偏移字节数。在随机方式;存取文件时,由于文件位置常见的前后移动,程序不简洁确定文
件的当前位置调用函数ftell()就能特别简洁地确定文件的当前位置。不能写入数据,其他
三个选项都可以向文件中写入。
—、填空题
1「将长4为n的依次存储在线性表中删除一个元素,最坏状况下须要移动表中的元素个数
为()。
2、设循环队列的存储空间为Q(l:3),初始状态为front=rear=30。现经过一系列入队与退队运
算后,front=16,rear=15,则循环队列中有()个元素。
3、数据库管理系统供应的数据语言中,负责数据的增、删、改和查询的是()o
(1)【答案】[1]n-1
【解析】在依次表中删除一个元素,最坏状况是删除第一个元素,后面的(n-1)个元素
均要向前移动,所以此处填n・l。
(2)【答案】[2]29
【解析】通过题干的描述可知此循环队列共30个空间,另外队尾指针rear的值小于
队头指针front的值,所以利用公式(rear-front+30)%30=29,可知此循环队列的元素
个数为29。
(3)【答案】【3】数据操纵语言
【解析】数据操纵语言DMI(DataManipulationIanguage),用户通过它可以实现
对数据库的基本操作。例如,对表中数据的杳询、插入、删除和修改。在DML中,应用
程序可以对数据库作插、刑、改、排、检等五种操作.
4、在将E-R图转换到关系模式时,实体和联系都可以表示成()。
5、常见的软件工程方法有结构化方法和面对对象方法,类、继承以及多态性等概念属于
()。
6、设变量a和b已定义为int类型,若要通过scanf(,,a=%d,b=%d,\&a,&b);语句分别给a
和b输入1和2,则正确的数据输入内容是(
(4)【答案】【4】关系
【解析】关系数据库逻辑设计的主要工作是将E-R图转换成指定RDBMS中的关系模
式,这种转换是比较干脆的,实体与联系都可以表示成关系。
(5)【答案】【5】面对对象方法
【解析】面对对象方法是一种基于对象模型的程序设计方法,包括面对对象分析、面对
对象设计、面对对象编程,是目前应用范围最广的设计方法。其中对象模型包括六个要素:
封装、抽象、模块化、层次结构、类、并发性。面对对象方法的主要特征是封装、继承和多
态性,所以此空应填面对对象方法。
(6)【答案】a=l,b=2
【解析】scanf。函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息、,
其调用格式为:scanf(”v格式化字符串>”,v地址表>),scanf("a=%d,b=%d",&a,&b)
中a=%d,b=%d之间有逗号,在输入数据时也要加逗号,假如去掉逗号,输入时就不用
逗号,而用空格,tab键或回车键将各个数据隔开。
7、以下程序的输出结果是()。
#include<sthio.h>
mian()
{inta=37;
a+=a%=9;printf("%d\n”,a);
)
8、设a、b、c都是整型变量,假如a的值为1,b的值为2,则执行c=a++||b++;语句后,
变量b的值是().
9、有以下程序段
s=1.0;
for(k=l,k<=n;k++)s=s+I.O(k*(k+1));
printf("%An”,s);
请填空,使以下程序段的功能与上面的程序段完全相同。
s=1.U;k=l;
while()
{s=s+l.O(k*(k+l));k=k+l;|
printf(u%f\nv,s);
(7)【答案】2
【解析】a+=a%=9;其中a%=9等价于a=a%9;结果为1,所以a+=a%=9等
价于a=a+l,故答案为2.
(8)【答案】2
【解析】a||b若a力都为假,则a||b为假,其他都为真.假如a为真时,则对b不进行
真假,所以对于c=a++1|b++,因为a++时为真,所以b++不进行推断,b的值保持不变,
故b=2。
(9)【答案】k<=n【解析】for和while都是循环语句,可以实现相同的功能
10、以下程序段的输出结果是()
#include<sthio.h>
mian()
{chara,b;
for(a=0;a<20;a+=7){b=a%10;putchar(b+,O,);}
I
11、以下程序段的输出结果是()
#include<sthio.h>
mian()
{char*ch[4]={“red”,"green","blue"};
Inti=U;
While(ch[i]);
{putchar(ch[i][OJ;i++;}
I
12、有以下程序
#include<sthio.h>
mian()
{intarr[]={1,3,5,7,2,4.6,8{,i,start;
Scanf("%d”,&s(arl);
For(i=0,i<3,i++)
printf(tt%d,\arr[(start+i)%8D;
I
若在程序运行时输入整数10〈回车〉,则输出结果为(
(10)【答案】074【解析】本题第一次循环时a的值为0,b的值为0所以打印字
符'0'。其次次循环时a的值为7,b的值为7,所以打印字符'7'。第三次a的值为14,b
的值为4,打印字符'41
(11)【答案】rgb
【解析】char*ch[4]是指针数组,数组元素全为char■类型指针,由于数组元素均为
指针,因此ch[i]是指第i个字符串的指针,ch[i][O]为指向第i个字符串的首地址。
(12)【答案】572
【解析】第一次循环打印arr[10%8]HParr[2]的值,为5。其次次循环打印arr[ll%8]
即的值,为7。第三次循环打印a「r[12%8]即arr[4]的值,为2。
13、以下程序的功能是输出a数组中的仝部字符串,请填空
#include<sthio.h>
mian()
{char*a卜{“ABC",''DEFGH",“IJ","KLMNOP"};
Inti=0;
For(;i<4;i++)prinlf(tt%s\nM,);
)
14、以下程序的输出结果是()。
#include<sthio.h>
#include<sthio.h>
#include<string.h>
mian()
{char*p,*q,*r;
p=q=r=(char*)malloc(sizeof(char)*20);
strcpy(p,"attaboy,welcome!”);
printf(u%c%c%c\n,,,p[11],q[31,r[4]);
free(p);
I
15、设文件tcst.txt中原已写入字符串Begin,执行以下程序后,文件中的内容为
()。
#includc<string.h>
mian()
{file*fp;
fp二fopen("test.txt","w+”);
fputs(Htesf\fjp);
fclose(fp);
(13)【答案】a[i]【解.析】char*a[]为指针数组,a[i]为指向第i个字符串的指针。
(14)【答案】cab【解析】p=q=r=(char*)malloc(sizeof(char)*20);等价于
r=(char*)malloc(sizeof(char)*20);q=r;p=q,所以p,q,r,指向相同的地灰。
(15)【答案】test
【解析】fopen函数功能是打开一个文件,函数原型FILE*fopen(constchar*
path,constchar*mode);当mode为w+,若文件存在则文柞长度清为零,即该文件
内容会消逝。若文件不存在则建立该文件,fputs将字符串写入到fp中,所以文件内容为
teste
2024年3月全国计算机等级考试二级C语言笔试真题
一、选择题
(1)下列关于栈叙述正确的是
A)栈顶元素最先能被删除B)枝顶元素最终才能被删除
C)栈底元素恒久不能被删除D)以上三种说法都不对
(2)下列叙述中正确的是
A)有一个以上根结点的数据结构不肯定是非线性结沟
B)只有一个根结点的数据结构不肯定是线性结构
C)循环链表是#线性结构
D)双向链表是非线性结构
(3)某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第
1层)
A)3B)4C)6D)7
(4)在软件开发中,需求分析阶段产生的主要文档是
A)软件集成测试安排B)软件具体设计说明书
。用户手册D)软件需求规格说明书
(5)结构化程序所要求的基本结构不包括
A)依次结构B)GOTO跳转
C)选择(分支)结构D)重复(循环)结构
(6)下面描述中错误的是
A)系统总体结构图支持软件系统的具体设计
B)软件设计是将软件需求转换为软件表示的过程
C)数据结构与数据库设计是软件设计的任务之一
D)PAD图是软件具体设计的表示工具
(7)负货数据库中查询操作的数据库语言是
A)数据定义语言B)数据管理语言
C)数据操纵语言D)数据限制语言
(8)一个老师可讲授多门课程,一门课程可由多个老师讲授。则实体老师和课程间的联系是
A)l:l联系B)l:m联系C)m:l联系D)m:n联系
(9)有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是
A)自然连接B)交。除D)并
(10)定义无符号整数类为Uln1,下面可以作为类Hint实例化值的是
A)-369B)369C)0.369D)整数集合{1,2,34,5}
(11)计算机高级语言程序的运行方法有编译执行和说明执行两种,以下叙述中正确的是
A)C语言程序仅可以编译执行
B)C语言程序仅可以说明执行
C)C语言程序既可以编译执行又可以说明执行
D)以上说法都不对
(12)以下叙述中错误的是
A)C语言的可执行程序是由一系列机器指令构成的
B)用C语言编写的源程序不能干脆在计算机上运行
C)通过编译得到的一进制目标程序须要连接才可以运行
D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exc文件
(13)以下选项中不能用作C程序合法常量的是
A)1,234B)'\123'C)123D)u\x7G"
(14)以下选项中可用作C程序合法实数的是
A).leOB)3.0e0.2C)E9D)9.12E
(15)若有定义语句:inta=3,b=2.c=l;,以下选项中错误的赋值表达式是
A)a=(b=4)=3;B)a=b=c+1;
C)a=(b=4)+c;D)a=l+(b=c=4);
(16)有以下程序段
charname[20J;
intnum;
scanf("name=%snum=%d",name;&num);
当执行上述程序段,并从键盘输入:namc=Lilinum=10()l〈回车,后,name的值为
A)LiliB)name=Lili
C)Lilinum=D)name=Lilinuni=l()()l
(17)if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是
A)必需是逻辑值B)必需是整数值
C)必需是正数D)可以是随意合法的数值
(18)有以下程序
#include
main()
{intx=OII;
printf("%d\n",++x);
}
程序运行后的输出结果是
A)12B)11C)IOD)9
(19)有以下程序
#include<stdio.h>
main()
{ints;
scanf("%d",&s);
while(s>0)
{switch(s)
{case1:printf("%d",s+5);
case2:printf("%d",s+4);break;
case3:printf("%d",s+3);
default:printf("%d",s+l);break;
)
scanf("%d",&s);
)
I
运行时,若输入123450〈回车〉,则输出结果是
A)6566456B)66656066666D)6666656
(20)有以下程序段
inti,n;
for(i=0;i<8;i++)
{n=rand()%5;
switch(n)
{case1:
case3:pnntf("%d\n",n);break;
case2:
case4:printf("%d\n",n);continue;
case0:exit(0);
)
printf("%d\n",n);
I
以下关于程序段执行状况的叙述,正确的是
A)for循环语句固定执行8次
B)当产生的随机数n为4时结束循环操作
C)当产生的随机数n为1和2时不做任何操作
D)当产生的随机数n为0时结束程序运行
(21)有以下程序
#include<stdio.h>
niain()
{charsn="012xy\08s3414w2";
inti,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>=,0,&&sli]<=(9,)n++;
printf("%d\n".n);
)
程序运行后的输出结果是
A)0R)3C)7D)8
(22)若i和k都是ini类型变量,有以下foi■语句
for(i=0,k=-1;k=1;k++)printf("*****\n");
下面关于语句执行状况的叙述中正确的是
A)循环体执行两次B)循环体执行一次
C)循环体一次也不执行D)构成无限循环
(23)有以下程序
#include<stdio.h>
main。
{charb,c;inti;
b='af;c='A';
for(i=0;i<6;i++)
{if(i%2)putchar(i+b);
elseputchar(i+c);
)
printf("\n");
)
程序运行后的输出结果是
A)ABCDEFB)AbCdEfOaBcDeFD)abcdef
(24)设有定义:doublex[10],*p=x;,以下能给数组x下标为6的元素读入数据的正确语句是
A)scanf("%f;&x[6]);R)scanf("%ir,*(x+6));
C)scanf("%lf',p+6);D)scanf("%lf',p[6]);
(25)有以下程序(说明:字母A的ASCII码值是65)
#inckide<stdio.h>
voidfun(char*s)
{while(*s)
{if(*s%2)printf("%cn,*s);
s++;
main()
{chara[]='BYTE";
fun(a);
printf("\n");
I
程序运行后的输出结果是
A)BYB)BTC)YTD)YE
(26)有以下程序段
#include<stdio.h>
main()
{…
while(getchar()!=,\n,);
)
以下叙述中正确的是
A)此while语句将无限循环
B)gelchar。不行以出现在while语句的条件表达式中
C)当执行此while语句时,只有按回车键程序才能接着执行
D)当执行此while语句时,按随意键程序就能接着执行
(27)有以下程序
#include<stdio.h>
niain()
{intx=1,y=0:
if(!x)y++;
elseif(x==O)
if(x)y+=2;
elsey+=3;
printf("%d\n",y);
)
程序运行后的输出结果是
A)3B)2C)1D)0
(28)若有定义语句:chars[3][10],(*k)[3],*p;,则以下赋值语句正确的是
A)p=s;B)p=k;C)p=s[O];D)k=s;
(29)有以下程序
#include<stdio.h>
voidfun(char*c)
{while(*c)
{if(*c>-a'&&*c<-z')*c=*c-('a'-'A');
C++;
)
I
main()
{chars[81];
gets(s);
fun(s);
puts(s);
)
当执行程序时从键盘上输入HelloBeijingv同车>,则程序的输出结果是
A)hellobeijingB)HelloBeijing
OHELLOBEIJINGD)hELLOBeijing
(30)以下函数的功能是:通过键盘输入数据,为数组中的全部元素赋值。
#include<stdio.h>
#dcfincN10
voidfun(intx[N])
{inti=0;
while(i<N)scanf(<<%d>,,);
}
在程序中下划线处应填入的是
A)x+iB)&x[i+1]C)x+(i++)D)&x[++i]
(31)有以下程序
#include<sldio.h>
main()
{chara[3OLb[3O];
scanf("%sM,a);
gets(b);
pnntf("%s\n%s\n”,a,b);
)
程序运行时若输入:
howareyou?Iamfine<回车,
则输出结果是
A)howarcyou?B)how
Iamfineareyou?Iamfine
C)howareyou?IamfineD)howareyou?
(32)设有如下函数定义
intfun(intk)
{if(k<1)return0;
elseif(k==l)return1;
elsereturnfun(k-l)+l;
I
若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是
A)2B)3C)4D)5
(33)有以下程序
#include<stdio.h>
inifun(intx,inty)
{if(x!=y)return((x+y)/2);
elsereturn(x);
}
main()
{in(a=4,b=5,c=6;
printf("%d\n",fun(2*a,fun(b.c)));
)
程序运行后的输出结果是
A)3B)6C)8D)12
(34)有以下程序
#include<stdio.h>
intfun()
{staticintx=l;
x*=2;
returnx;
)
main()
{inti,s=l;
for(i=l;i<=3;i++)s*=fun();
printf("%d\n';s);
I
程序运行后的输出结果是
A)0B)10C)30D)64
(35)有以卜.程序
#includc<stdio.h>
#defineS(x)4*(x)*x+l
main()
{intk=5,j=2;
printf("%d\n",S(k+j));
I
程序运行后的输出结果是
A)197B)143C)33D)28
(36)设有定义:struct{charmark[12];intnuml;doublcnum2;}若变量均已正确赋初值,
则以下语句中错误的是
A)tI=t2;B)t2.numI=tI.numI;
C)t2.mark=tl.mark;D)t2.num2=t1.num2;
(37)有以下程序
#include<stdio.h>
structord
{intx,y;}dt[21={l,2,3,4);
niain()
{
structord*p=dt;
printf("%d,,,,++(p->x));printf("%d\n",++(p->y));
}
程序运行后的输出结果是
A)1,2B)4JC)3,4D)2,3
(38)有以下程序
#include<stdio.h>
structS
{inta,b;}data[2]={10,100,20,200};
main()
{structSp=data[l];
printf(M%d\n",++(p.a));
)
程序运行后的输出结果是
A)10B)llC)20D)21
(39)有以下程序
#include<sldio.h>
main()
{unsignedchara=8,c;
c=a»3;
printf("%d\n".c);
)
程序运行后的输出结果是
A)32R)16C)lD)0
(40)设fp已定义,执行语句fp=fopen(“file","w");后,以下针对文本文件file操作叙述的选项
中正确的是
A)写操作结束后可以从头起先读B)只能写不能读
C)可以在原有内容后追加写D)可以随意读和写
二、填空题
(1)有序线性表能进行二分查找的前提是该线性表必需是【1】存储的。
(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为
[2]。
(3)对■软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】测试。
(4)实体完整性约束要求关系数据库中元组的[4]属性值不能为空。
(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称【5】
是关系A的外码。
⑹以下程序运行后
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度郑上新城集团社会化公开招聘工作人员5人笔试重点试题及答案解析
- 2025湖北荆门市钟祥市国有企业招聘考试考试核心试题及答案解析
- 2025广西河池市南丹县消防救援大队招7人备考核心题库及答案解析
- 2025年中石化芜湖石油分公司招聘笔试重点题库及答案解析
- 2025江苏南京白下人力资源开发服务有限公司招聘劳务派遣人员1人(五十一)考试核心题库及答案解析
- 2025贵州遵义赤水市社会福利院招聘2人笔试重点题库及答案解析
- 2026双流中学九江实验学校(北区)第一批教师招聘4人笔试重点试题及答案解析
- 2025河南对外经济贸易职业学院招聘工作人员10人笔试重点试题及答案解析
- 2025中国海洋大学材料科学与工程学院实验技术人员招聘1人考试核心题库及答案解析
- 2025广州中医药大学第一附属医院重庆医院招聘放疗团队、儿科带头人、病理科带头人笔试重点题库及答案解析
- 妇产科住院总工作汇报
- 特色手工艺品电商营销推广策划方案
- 2025年人社分局考试试题及答案
- 2025年骨干教师考试试题(含答案)
- 肿瘤内科进修汇报
- 《口腔颌面外科学》课程教学质量标准
- 农机操作培训知识内容课件
- 蜀风诗韵复赛题目及答案
- 2025湖北仙桃市城市发展投资集团有限公司招聘拟聘用人员笔试历年参考题库附带答案详解
- 产品管理题库及答案
- 住宅销售团队业绩提成保密及竞业限制协议书
评论
0/150
提交评论