




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试
卷第1套
一、选择题(本题共25题,每题1.0分,共25分。)
1、以下叙述中正确的是
A、每个后缀为.c的C语言源程序都应该包含一个main函数
B、在C语言程序中,main函数必须放在其他函数的最前面
C、每个后缀为.c的C语言源程序都可以单独进行编译
D、在C语言程序中,只有main函数才可单独进行编译
标准答案:C
知识点解析:每一个C语言的文件或函数都可以单独编译,但只有main函数的才
可以执行。
2、下列链表中,其逻辑结构属于非线性结构的是()。
A、二叉链表
B、循环链表
C、双向链表
D、带链的栈
标准答案:A
知识点解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这
样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲
的存储节点,是线性表。在单链表中的节点中增加一个指针域指向它的直接前件,
这样的链表就称为双向链表(一个节点中含有两个指针),也是线性链表。循环链表
具有单链表的特征,但又不需要增加额外的存储空间,仅对表的链接方式稍做改
变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实
现,是一种存储结构,不属于线性结构。答案为A选项。
3、若有定义语句:chara=,\82,:则变量a
A、包含1个字符
B、说明不合法
C、包含2个字符
D、包含3个字符
标准答案:B
知识点解析:转义字符以一个反斜线开头后跟一个特定的字符,可以利用‘\ddd,3
位八进制数代表的一个ASCII字符,也可以,\xhh'2位十六进制数代表的一个
ASCII字符。选项A)中的八进制表示出现字符8,非法。
4、下列结构中属于非线性结构的是
A、二叉链表
B、二维数组
C、循环队列
D、双向链表
标准答案:A
知识点解析:线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,
栈,队列,双队列,数组,串;常见的非线性结构有:二维数组,多维数组,广义
表,树(二叉树等),图。循环队列、双向链表和二维数组都是线性结构,而二叉链
表是非线性结构。
5、学校的数据库中有表示系和学生的关系:系(系编号,系名称,系主任,电话,
地点),学生(学号,姓名,性别,入学日期,专业,系编号),则关系学生中的主键
和外键分别是()。
A、学号,无
B、学号,专业
C、学号,姓名
D、学号,系编号
标准答案:D
知识点解析:一个属性(即一列),在某张表中不是主键(主码),但在其他表中是主
键(主码),则它是第一张表的外键(外码)。在“系”表中,“系编号”为主键;在“学生”
表中,“学号”是主键,“系编号”不是主键,则“系编号”是表“学生”的外键。
6、软件(程序)调试的任务是
A、诊断和改正程序中的错误
B、尽可能多地发现程序中的错误
C、发现并改正程序中的所有错误
D、确定程序中错误的忤质
标准答案:A
知识点解析:在对程序进行了成功的测试之后将进入程序调试(通常称.Debug,即
排错)。程序调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测
试是尽可能多地发现软件中的错误。先要发现软件的错误,然后借助于一定的调试
工具去执行并找出错误的具体位置。软件测试贯穿整个软件生命期,调试主要在开
发阶段。
7、有以下程序main。{inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%
M
d*%d=%d",i,j,i*j);printf("\n);)}
A、1*1=11*2=21*3=32*1=22*2=43*1=3
B、1*1=1I*2=22*2=41*3=32*3=63*3=9
C、1*1=11*2=21*3=32*2=42*3=63*3=9
D、1*1=12*1=22*2=43*1=33*2=63*3=9
标准答案:C
知识点解析:外层for循环的自变量i从1开始,每次循环后增1,直到i等于3结
束。对于外层循环自变量i的每一个值,内层循环的自变量j每次从i开始,每次
循环后增1,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打
印评1=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。
8、以下选项中非法的C语言字符常量是
A、\b,
B、\007'
C、aa'
D、\xaa7
标准答案:C
知识点解析:一个宁符常量代表ASCH字符集中的一个字符,在程序中用单引号
把一个字符括起来作为字符常量。
9、有以下程序#definePT3.5;#defineS(x)PT*x*x;main(){inta=l,b=2;
print=fC%4.lf\n'\S(a+b));}程序运行后的输出结果是
A、31.5
B、7.5
C、程序有错无输出结果
D、14.0
标准答案:C
知识点解析:本题考查宏定义。预处理语句后面不能加分号,因此程序有错。如果
没力口分号的话S(a+b尸PT%+b*a+b=3.5*1+2*1+2=7.5。
10^有以下程序,程序运行后的输出结果是#includemain(){in【x,y,z;x=y=
1:z=x*,y*,*y:printf("%d,%d,%d\n”,x,y,z);)
A、2,3,1
B、2,3,2
C、2,3,3
D、2,2,1
标准答案:A
知识点解析:在程序中,整型变量x、y的初值都为1,赋值语句2=*++,y+
+,++y右边的“x++,y++,++y”是一个逗号表达式,所以逗号表达式的
值为++y的值。执行逗号表达式“x++,y++,++y”后,x的值为2,y的值
为3,z取逗号表达式的值,为1。
11、一个工作人员可使用多台计算机,而一台计算机被多个人使用,则实体工作人
员与实体计算机之间的联系是
A、一对一
B、一对多
C、多对多
D、多对一
标准答案:c
知识点露析:如果一个工作人员只能使用一台计算机且一台计算机只能被一个工作
人员使用,则关系为一对一;如果一个工作人员可以使用多台计算机,但是一台计
算机只能被一个工作人员使用,则关系为一对多;如果一个工作人员可以使用多台
计算机,一台计算机也可以被多个工作人员使用,则关系为多对多。
12、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确
定义,以下正确的程序段是
A、while(ch=getchar()=,N,)printfi(',%c",ch);
13、whilc(ch=gctchar(尸二"N")pfn】tt("%c”,ch);
C、while((ch=getchar())!=,N,)printf(',//oc",ch);
D^while((ch=getchar())==,N,)printf(,"%c",ch);
标准答案:C
知识点解析:while循环的执行过程如下:①计算while后面圆括号中表达式的
值,当值为非0时,执行步骤②;当值为。时,执行步骤④;②执行循环体一
次;③转去执行步骤①:④退出循环。在选项。中,表达式(ch=getchar())!=,N,表
示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入
的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。
13、以下叙述中正确的是
A、函数的类型不能是指针类型
B、函数的形参类型不能是指针类型
C、基类型不同的指针变量可以相互混用
D、设有指针变量为double*p,则p+1将指针P移动8个字节
标准答案:D
知识点解析:在对指针进行加、减算*运算时,数字I表示1个1竽储单元的长
度,而double类型数据在内存中占8个字节,因此移动一次移动8个字节。其他
二个都不正确c
14、以下叙述中正确的是
A、字符变量在定义时不能赋初值
B、同一英文字母的大写和小写形式代表的是同一个字符常量
C、字符常量可以参与任何整数运算
D、转义字符用@符号开头
标准答案:C
知识点解析:一个字符常量代表ASCH字符集中的一个字符,在C程序中,字符
常量可参与任何整数运算,转义字符以一个反斜线开头后跟一个特定的字符。
15、有以下程序voidfunl(char木p){char*q;q=p;while(*q!='\O'){(*q)++;
q++;)}main(){chara|]=l1Program"),*p;p=&a|3J;funl(p);printf("%s\n",
a);}程序执行后的输巴结果是
A、Prphsbn
B、Prohsbn
C^Progsbn
D^Program
标准答案:B
知识点解析:在函数voidfunl(char*p)中,语句(*q)++的功能是q所指的字符加1,
变成其后面的字符;q++就是指针q指向下一个字符的位置。所以在主函数中,语
句p=&a[3]的作用是使指针p指向宁符数组a[]中的第四个宁符的位置,即p指向字
符它;然后调用函数funl(p)后,字符‘g‘变成力"字符T变成字符3变
成E,字符,m,变成因而字符数组a[]中的内容就成“Prohsbn”。
16、有如下程序#includemain(){inti,k;intarray[4][2]={{1,2),{4,9},{6}};for
(i=0;i<2;i++)for(k=0;k<4;k++){printf(n%d,u,array[k][i]);}printf(H\n");}程序运行
后的输出结果是()。
A、1,4,6,029,0,0,
B、124,9,6,
C、2,9,0,0,146,0,
D、2,9,6,14
标准答案:A
知识点解析:定义语句"intairay[4][2]={{1,2},{4,9},{6}};"的作用是使
array[0][0]=l,array[0][l]=2,array[l][0]=4,array[l][l]=9,array[2][0]=6,其余元
素均为0,所以按列输巴结果为答案A)。
17N有以下程序main。{inti,j;for(i=l;i<4;i++){for(j=i;j<4;j++)
printR"%d*%d=%d'',i,j,i*j);printf("\n");)}
A、1*1=11*2=21*3=32*1=22*2=43*1=3
B、1*1=11*2=22*2=41*3=32*3=63*3=9
C、1*1=11*2=21*3=32*2=42*3=63*3=9
D、1*1=12*1=22*2=43*1=33*2=63*3=9
标准答案:C
知识点解析:外层for循环自变量i从1开始,每次循环后增1,直到i等于3结
束。对于外层循环自变量i的每一个值,内层循环的自变量i每次从i开始,每次
循环后增1,直到j等于3结束。所以往每次外循环开始后,内层循环在一行先打
印i*j=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。
18、avg函数的功能是求整型数组中的前若干个元素的平均值,设数组元素个数最
多不超过10,则下列函数说明语句错误的是
A、intavg(int*a,intn);
B、intavg(inta[10],intn);
C、intavg(inta|],intn);
D、intavg(inta,intn);
标准答案:D
知识点解析:本题考查函数的定义。题目要求计算数组的平均值,因此函数必须获
取数组的地址(指针),即函数必须要有一个指针类型的参数,选项D)中函数参数都
是整型,错误。
19、在函数调用过程中,如果函数如funA调用函数funB,函数funB又调用了函
数如funA,则
A、称为函数的直接递归调用
B、称为函数的间接递归调用
C、称为函数的循环调用
D、C语言中不允许这样的递归调用
标准答案:B
知识点解析:本题考查递归的概念,C语言中函数可以直接或间接调用自身,称为
递归调用。本题中funA调用funB,然后funB又谎用funA,即funA间接调用了
自身。
20>若有以下程序#includeVstdio.h>intk=7;voidf(int**s)(int*t=&k:*s=t;
printf("%d,%d,%d,”,k,*t,**s);}main(){inti=3,*p=&i,**r=&p;
f(r);printf(H%d,%d,%d\n”,i,*p,**r);}贝J程序的输出结果是
A、3,7,7,7,7,7
B、7,7,7,3,3,3
C、3,3,3,7,7,7
D、7,7,7,3,7,7
标准答案:D
知识点解析:本题考查r二级指针,二级指针可以保存一级指针的地址。主函数中
p指向i,r指向p。函数调用后s指向p,在f函数中t指向全局变量k=7,s指向
t,同时.s保存了实参p的地址,此时p也指向3输出三个7,流程转到主函数,i
的值为3,p以及r的值为7。
21>有以下程序:#include<stdio.h>voidfun(char*c){while(*c){if(*c>
='a'&&*cV='z')*c=*c-('a'・'A>c++;))voidmain(){chars[81J;gets(s);
fun(s);puts(s);}当执行程序时从键盘上输入HelbBeijing<回车>,则程序的输
出结果是
A、HELLOBEIJING
B、HelloBeijing
C^helloBeijing
D、hELLOBeijing
标准答案:A
知识点解析:子函数fun的功能是把小写字母转换成大写字母,所以程序的输出结
果为选项A)o
22、设有定义语句:(±&「*@@出={匕桎金,180};则以下叙述正确的是
A、aa[0]存放了字符串“abed”的首地址
B、aa数组的两个元素只能存放含有4个字符的一维数组的首地址
C、aa数组的值分别是字符串“abed”和“ABCD”
D、aa是指针变量,它指向含有两个元素的字符型数组
标准答案:A
知识点解析:本题中定义了一个指针数组,数组中存放的是字符指针,aa数组的
两个元素分别包含了5个字符,所以可以存放5个字符的一维数组的首地址,所以
B选项错误。aa数组的值是指向那两个字符串的字符指针,而不是那两个字符串,
所以C选项错误。aa本身是一个指向两个字符指针的指针,所以D选项错误。
23、以下涉及字符串数组、字符指针的程序段,不会产生编译错误的是()。
A、char*str,name[10];str="HelloWorld";
char*str,name[10];name="HelloWorld";
C、charstrl[10]="prog.c",str2[10];str2=strl;
D、charhead_line[];headline="=============";
标准答案:A
知识点解析:数组名表示该数组的首地址,是一个地址常量,不能对它重新赋值,
选项B)、C)、D)错误,答案选A)。
24,有下列程序:#include<stdio.h>main()(FILE*fp;intk,n,a[6]={1,2,
3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a|0],
a[l],a[2]);fprintf(fp,”%d%d%d\n",a[3],a[4],a[5]);fclose(fp);
fp=fopen("d2.dat”,T);fscanf(fp,"%d%d”,&k,&n);printf("%d%d\n",
k,n);fclose(fp);}程序运行后的输出结果是
A、14
B、123456
C、1234
D、12
标准答案:R
知识点解析:用文件函数fopen打开d2.dat文件并把数组a[6]中的元素分两行写
入到d2.da【文件中,关闭文件。然后再次打开文件d2.dat,用Ncanf()函数读取
文件d2.dat中的数据,因为每行没有分隔符,所以每一行会被认为是一个完整的
数,并存入到变量k和n中,输出变量k和n的值为123456。
25、数据库应用系统中的核心问题是()。
A、数据库设计
B、数据库系统设计
C、数据库维护
D、数据库管理员培训
标准答案:A
知识点解析:数据库应用系统中的核心问题是数据库的设计。
国家二级C语言机试(选择题)模拟试
卷第2套
一、选择题(本题共40题,每题1.0分,共40分。)
1、深度为7的二叉树共有127个结点,则下列说法中错误的是()。
A、该二叉树是满二叉树
B、该二叉树有一个度为1的结点
C、该二叉树是完全二叉树
D、该二叉树有64个叶子结点
标准答案:B
知识点解析:满二叉树满足深度为m的二叉树最多有2由-1个结点,本题中二叉树
深度为7且有127个结点,满足2乙1=127,达到最大值,故此二叉树为满二叉树,
也是完全二叉树。满二叉树第k层上有2匕1结点,则该二叉树的叶子结点数为21
匕64个。满二叉树不存在度为1的结点。
2、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是
A、10
B、8
C、6
D、4
标准答案:C
知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总
是比度为2的结点多一个。
3、有以下程序#includevoidmain。{intn=2,k=-l;while(!(k>0IIn++));
prinlf("%d%d\n”,k,n);}程序运行后的输出结果是()。
A、02
B、13
C、57
D、12
标准答案:D
知识点解析:在程序中整型变量n的初始值等于2,整型变量k的初始值等于1,
在执行while语句时,由于表达式k的值大于0为真,所以不再需要判断是
否为真,”(k>0||n++)”表达式的值为真。"!(k>0||n++『表达式的值为假,所以while
语句中的条件不满足,循环语句不会执行,变量n的值也不会加1,所在输出变量
k和n的值是1和2o
4、下面不属于需求分析阶段任务的是
A、确定软件系统的功能需求
B、确定软件系统的性能需求
C、需求规格说明书评审
D、制定软件集成测试计划
标准答案:D
知识点解析:需求分析阶段的工作可分为4个阶段:需求获取、需求分析、编写需
求规格说明书、需求评审。
5、if语句的基本形式是:计(表达式)语句,以下关于、,表达式”值的叙述中正确的是
A、必须是整数值
B、必须是正数
C、可以是任意合法的数值
D、必须是逻辑值
标准答案:C
知识点解析:在if语句中,表达式可以是任意合法的数值。当其值为非零时,执
行if语句,为0时执行else语句。
6,在带链队列中,经过一系列正常的操作后,如果frontrear,则队列中的元素个
数为
A、0或1
B、0
C、1
D、队列满
标准答案:A
知识点解析:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端
(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是
一种操作受限制的线件表C进行插入操作的端称为队尾.进行删除操作的端称为队
头。队列的链式存储也祢为链队列。为了便于操作,可给链队列添加1个头结点,
并令头指针指向头结点。队列为空的判断条件是头指针和尾指针的值相同,且均指
向头结点。当队列为空(0)或1时,front=rear。
7、以下叙述中正确的是
A、if语句只能嵌套一层
不能在else子句中再嵌套if语句
C、if子句和else子句中可以是任意的合法的C语句
D、改变if-else语句的缩进格式,会改变程序的执行流程
标准答案:C
知识点解析:含else子句的if语句的格武为if(表达式)语句1else语句2其中if和
else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句
只允许为一条语句,若需要多条语句时,则应该使用复合语句,对于if和else语
句的嵌会原则是比较自由的。
8、对于现实世界中事物的特征,在实体一联系模型中使用()。
A、属性描述
B、关键字描述
C、二维表格描述
D、实体描述
标准答案:A
知识点解析:在实体■联系模型中,用属性来描述现实世界中对象的属性所表示的
对象的性质、特征和行为。
9、设有定义:mtk=U;,以下选项的4个表达式中与其他3个表达式的值不相同
的是()。
A、++k
B、k+=l
C、k++
D、k+1
标准答案:C
知识点解析:++k,先使得k的值自增1后再使用,k++是先取得k的值再将k的
值自增1,所以C选项中表达式的值为0,而其他3个表达式的值均为1,所以选
择C选项。
10、有以下程序:#includemain(){inti,array[6]=(1,5,0,4);for(i=0;i<5;
i++)printfC%d,\array[i]);printf("\n"):}程序运行后的输出结果是()。
A、04040
B、15040
C、15540
D、12120
标准答案:B
知识点解析:本题主要考查一维数组的输出c由十数组中有6个元素,但初始化数
组的时候只给出4个元素,所以array|5|二0,array[6]=0,前面几位元素依次输出,
不够位数补0,所以选项B正确。
11、有以下程序main。{inia=l,b=2:for(:a<8;a++){b+=a;a+=2;)
pr2ntf(M%d,%d\n",a,b);}程序运行后的输出结果是
A、8,11
B、10,14
C、7,II
D、9,18
标准答案:B
知识点解析:在这段程序中变量a的初值等于1,变量b的初值等于2。第1次执
行for循环语句后,变量a的值等于3,变量b的值等于3。第2次执行for循环
后,变量a等于6,变量b的值等于7。第3次执行for循环后,变量a等于9,变
量b的值等于14。第4次执行for循环后,变量a等于10,这时退出for循环,此
时变量b的值等于14。因而程序输出变量a,b的值分别为10,14。
12>设有如下程序:#includcchars[20]=<€Beijing,\*P;P=s:则执行P=s;语句
后,以下叙述正确的是()。
A、s和P都是指针变量
B、s数组中元素的个数和P所指字符串长度相等
C、可以用*P表示s[0]
D、数组s中的内容和指针变量P中的内容相同
标准答案:C
知识点器析:程序定义了字符数组s和字符型指针变量p,并且使得p指向数组,
执行p=s;语句后,*p即表示s[0];s数组中元素的个数和p所指字符串长度不相
等,因为s数组中元素的个数包括字符串结束标志“\0”,而p所指字符串长度不
包括“\0”;s是字符型数组,p是指针变量,数组s中的内容和指针变量p中的内
容不相同,数组中存放的是字符串,而指针变量p存放的是数组的首地址,因此C
选项正确。
13、若intx=12;doubley=3.141593;则printf(''%d%8.6f\x,y);的输出结
果是().
A、123.141593
B、123.1415930
C、12,3.141593
D、123.1415930
标准答案:A
知识点解析:本题考查格式化输出函数printf,在printf函数调用里面首先输入整
型变量x的值12.然后按照"%8.6广格式输出double类型变量y的值,一%
8.6L表示输出8位,小数点后输出6位,这里的8位是指输出的总长度。
14、以下关于C语言的叙述中正确的是()。
A、预处理命令通常位于函数体外面,但也可以位于函数体中间
B、C语言中的变量定义须在其他语句之前
C、在C语言程序的书写中,一个语句必须单占一行
D、一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的
main函数
标准答案:A
知识点解析:源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中
的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句可以
位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以
由一个或多个源文件组成,但仅可以有一个main函数。
15^有以下程序#includeinifun(inta,intb){if(b==O)returna;elsereturn(fun(—
a,-b));}main(){PrintfC'%d\n",fun(4,2));}程序的运行结果是
A、I
B、2
C、3
D、4
标准答案:B
知识点解析:由程序可知函数fun(inta,intb)是一个递归函数。所以当t函数中调
用fun(4,2)时,其执行过程如下:fun(4,2)->fun(3,l)->fun(2,0),其返回值为
2o
16、已定义以下函数tun(int*P){rctum*P;}tun函数的返回值是()。
A、一个整数
B、不确定的值
C、形参P中存放的值
D、形参P的地址值
标准答案:A
知识点解析:返回值为由针变量指向的数据,该数据已被定义为整型,因此A选
项正确。
17、以下程序的输出结果是()“#includemain(){inta=8,b=6,m=l:switch(a%
4){case0:m++;break;case1:m++;switch(b%3){default:m++;case0:
m++;break;}}prinlf('%d\n",m);)
A、1
B、2
C、3
D、4
标准答案:B
知识点解析:本题考查switch语句。因为a=8,a%4=0,所以执行case0后面的语
句,将m加1.遇到break语句跳出switch«
18、以下关于return语句的叙述中正确的是
A、一个自定义函数中必须有一条return语句
B、一个自定义函数中可以根据不同情况设置多条return语句
C、定义成void类型的函数中可以有带返回值的return语句
D、没有return语句的自定义函数在执行结束时不能返回到调用处
标准答案:B
知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据
不同的情况设置多条return语句返回函数的值。
19、以下选项中,不合法的C语言用户标识符是
A、AaBc
B、a-b
C>ab
D、_1
标准答案:B
知识点解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第
一个字符必须是字母或下划线,在选项A)中出现了非法的字符
20、以下选项中合法的变量是
A^5a
B、A%
C、_10_
D、sizcot
标准答案:C
知识点解析:对于变量的命名要利用标识符命名,所谓标识符就是C语言中的变
量名、函数名、数组名、文件名、类型名等。其中标识符构成如下:①标识符由
字母、数字和下划线组成;②第一个字符必须为字母或下划线;因此选项A)中
数字开头,选项B)出现了非法字符%,而选项D)中sizeof为关键字,不能为变量
命名。
21、以下叙述中正确的是
A、continue语句的作用是:使程序的执行流程跳出包含它的所有循环
B、break语句只能用在循环体内和switch语句体内
C、在循环体内使用break语句和continue语句的作用相同
D、break语句只能用于switch语句体中
标准答案:B
知识点解析:只能在循环体内和switch语句体内使用break语句。continue语句的
作用是结束本次循环,即跳过本次循环体中continue语句后面的语句,立刻进行下
一次的循环条件判断,可以理解为仅结束本次循环。而break语句可以使程序流程
跳出switch语句体,也可用break语句在循环结构中终止循环体。
22、关于字符数组的定义中有语法错误的是()。
A、charstr[3][10J;str[l]=''guest”;
B、charstr[][10]={,,guesf,};
C^char*str[3];str[1]=,>guest
D、char*str[]={,,guest,,(;
标准答案:A
知识点解析:本题考查字符数组的定义和使用。选项A定义了一个二维字符数
组,第二句是直接给字符数组赋值,错误。C语言中不能直接给字符数组赋值;选
项,B、C和D都是正确的。
23、以下选项中关于程序模块化的叙述错误的是
A、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块
B、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序
C、把程序分成若干相对独立的模块,可便于编码和调试
D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序
标准答案:B
知识点解析:如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步
细化的设计方法把若干独立模块组装成所要求的程序。
24、有以下程序:#include<stdio.h>main(){F]LE*fp;charstr[10];
fp=fopen("myfile.dat","w");fputs(nabcn»fp);felose(fp);
fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,
"%s",str);puts(str);felose(fp);}程序的运行结果是()。
A、abc
B、28c
C、ad9c28
D、因类型不一致而出错
标准答案:C
知识点解析:本题考查文件操作函数:fprintf()函数。fprintf()函数向文件输出,将
输出的内容输出到硬盘上的文件,或是相当于在文件的设备上执行两次fprintf
后,文件中有abc28,所以C选项正确。
25,设变量均已正确定义并赋值,以下与其他三组输出结果不同的一组语句是
A、x++;printf("%d\n",x);
B、++x;printf(u%d\n",x);
C^n=x++:printf("%d\n",n);
D、n=++x;printf("%d\n",n);
标准答案:C
知识点解析:本题考查自增运算符。++在前表示先自增然后使用,++在后面表示
先使用然后自增。选项A中首先执行x++,执行完后x自增1,然后printf输出的
是x自增后的值;选项B首先执行++x,x的值增加1,接着输出x的值:选项C
中++在x的后面.因此n的值是x自增前的值.printf输出的是x自增前的值:选
项D中++在x的前面,因此x首先自增,然后再赋值给n,n的值是x自增后的
值,输出的也是x自增后的值。
26、以下选项中正确的定义语句是
A、doublea=b=7;
B、doublea:b;
C、double,a,b:
D、doublea=7,b=7;
标准答案:D
知识点解析:在C语言中,可以用一条语句同时定义几个同类型的变量,变量之
间用逗号隔开。
27、已知字符,A,的ASCH代码值是65,字符变量字的值是'ASc2的值是,D\
则执行语句printf(”%d,%d”,cl,c2-2);的输出结果是
A、A,68
B、A,B
C、65,66
D、65,68
标准答案:c
知识点解析:在C语言中,字符常量在内存中占一个字节,存放的是字符的ASCII
码值。所有的字符常量都作为整型量来处理。在本题中输出语句用整型格式输出字
符时,输出的是其ASCH码值。因为字符,A,和,。的ASCII码倩分别为65和68,
所以c2-2=68-2=66«
28、设有定义:doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输
入形式如下(注:此处口代表一个空格)口口1.0口口2.0口口3.0则能进行正确输入的
语句是
A、scanfC%lf%lf%ir,a,b,c);
B、scantf(n%f%f%f,&a,&b,&c);
C、scanf(”%lf%lf%lF,&a,&b,&c);
D、scanfC%5.llf%5.Ilf,&a,&b,&c);
标准答案:C
知识点解析:输入格式scanf(格式控制,输入项1,输入项2,…),其中在scanf
函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数
指定小数位的宽度。输入double型数据,格式控制必须用%厅(或%le)。否则,数
据不能正确输入。由于瑜入是一个字符流,scanf函数从这个字符流中按照格式控
制指定的格式解析出相应数据,送到指定地址的变量中。
29、以下关于函数的叙述中正确的是
A、每个函数都可以被其他函数调用(包括main函数)
B、每个函数都可以被单独编译
C、每个函数都可以单独运行
D、在一个函数内部可以定义另一个函数
标准答案:B
知识点解析:本题主要考查函数的定义和使用。选项A错误,main函数可以调用
其他函数,但是其他函数不能调用main函数;选项B正确;选项C错误,只有
main函数可以单独运行,其他函数只能被调用;选项D错误,C语言中不能在函
数内部定义函数。
30、有以下程序main(){inta[5]={2,4,6,8,10},*p,**k;p=a;k=&p;
printf(H%d",*(p++));printf("%d\n”,**k);}程序运行后的输出结果是
A、44
B、24
C、22
D、46
标准答案:B
知识点解析:主函数中有针变量p指向数组a中下标为0的元素,k指向p,那么
*(p++)的值为2,p指向数组中下标为1的元素,k指向p,所以**k的值为4。
31、设变量已正确定义并赋值,以下正确的表达式是
A、x=y+z+5,++y
B、int(15.8%5)
C^x=y*5=x+z
D、x=25%5.0
标准答案:A
知识点解析:在赋值表达式中,赋值符号'、="的左边只能为赋值的变量,不能为表
达式,右边可以为常量或者是表达式,故选项C错误;在取余运算中,运算符“%”
两边都必须是整型数据,所以选项B、D错误,选项A是C语言中的逗号表达
式。
32、设有定义:intx=2;以下表达式中,值不为6的是
A、2*x,x+=2
B、x++,2*x
C、x*=(l+x)
D、x*=x+l
标准答案:C
知识点解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,
再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A中值为4;
选项B中,值为6。选项C中x*=x+l等价于x=x*(x+1),所以等于6;选项D
与选项C等价,结果也为6。
33、有三个关系R、S和T如下:区由关系R和S通过运算得到关系T,贝]所
使用的运算为。
A、笛卡尔积
B、交
C、并
D、自然连接
标准答案:D
知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量
必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据T关系中的
有序组可知R与S进行的是自然连接操作。
34、有以卜程序外includemain()(doublex=2.0,y;if(x<0.0)y=0.0;elseif((x<5.0)
&&(!x))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\ny);}
程序运行后的输出结果是
A、0.000000
B、0.250000
C、0.500000
D、1.000000
标准答案:C
知识点解析:本题重点考察if语句,变量x和y均为double类型,由于变量x赋
值为2.0,因此执行if((x<5.0)&&(!x)),即条件为0,继续执行if(xvl0.0),条件为
1,即执行y=L0/x;。依据printf()函数输出类型中f是以小数形式输出单、双精
度实数。因此C选项正确。
35、以下程序用来统计文件中字符的个数(函数feof用以检查文件是否结束,结
束时返回非零)#mcludcmain(){FILE叶p;longnum=。;tp=topcn("fnamc.dat","r"j;
while(){fgetc(fp);num++;)printf("num=%d\n,\num);fclose(fp);}F面选项
中,填入横线处不能得到正确结果的是
A、fcof(fp)==NULL
B、!feof(fp)
C^feof(fp)
D、fcof(fp)==0
标准答案:c
知识点.析:本题考查文件的定位,feof函数的用法是从输入流读取数据,如果到
达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,while判断条件应
是如果没有到达文件末尾,所以选项C不能得到正确的结果。
36、设有定义:chars[8l];inti=0;以下不能将一行(不超过80个字符)带有空格
的字符串正确读入的语句或语句组是
A、while((s[i-H-]=getchar())!=,\n5);s[i]='\0';
B、scantf("%su,s);
C、gets(s);
D、do{scanf("%c",&s[i]);}while(s[i++]!='\n');s[i]='\0';
标准答案:R
知识点解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入
的字符读入字符串s,直到遇到回车。而scanf()函数接收字符串时的结束标志为回
车或者空格。
37、有以下函数intfun(char*x,char*y){intn=0;while((*x=*y)&&*x!=\0')
{x++;y++;n++;}returnn;)函数的功能是()。
A、统计x和y所指字符串中最前面连续相同的字符个数
B、查找x和y所指字符串中是否有,(T
C、将y所指字符串赋给x所指存储空间
D、统计x和y所指字符串中相同的字符个数
标准答案:A
知识点解析:循环判定条件"(*x==*y)&&*x!=?\0?”是如果字符指针x与y指向的
字符相等并且字符指针x没有到达字符串尾部,则让指针x、y后移一位并让n自
加1,所以n统计的是x和y所指字符串中最前面连续相同的字符个数,答案选
Ao
38、以下选项中正确的语句组是()。
A、char*s;s=nBOOK!H;
B、char*s;s={"BOOK!w);
C、chars[10];s=nBOOK!M;
D、chars[];s="BOOK!";
标准答案:A
知识点解析:将字符串赋值给指针变量时不需要写大括号,选项B)错误;字符数
组存放字符串的时候只有在定义数组的时候可以直接把字符串常量赋值给字符数
组,其他情况则不可以,选项C)、D)错误;答案选A)。
39、设有定义charstr[]="Hello";则语句printf("%d%d",sizeof(str),strlcn(str));的输
出结果是
A、66
B、65
C、55
D、56
标准答案:B
知识点解析:sizeof主要用于测试变量所占的实际内存,而sirlen函数主要测试字
符串中实际字符的个数,字符串“Hello”占有内存6个字节,而字符串中共有5个字
符。
40设fp已定义,执行语句fp=fbpen(“file","w”);后,以下针对文本文件file操
作叙述的选项中正确的是
A、写操作结束后可以从头开始读
B、只能写不能读
C>可以在原有内容后追加写
D、可以随意读和写
标准答案:B
知识点解析•:本题考查文件操作。fopen的mode参数有多种类型:r以只读方式打
开文件、「+以可读写方式打开文件、rb+以读写方式打开一个二进制文件、w以只
写方式打开文件、w+以读写方式打开文件、wb+以读写方式打开二进制文件。
国家二级C语言机试(选择题)模拟试
卷第3套
一、选择题(本题共25题,每题1.0分,共25分。)
1、以下叙述中正确的是
A、在C语言程序设计中,所有函数必须保存在一个源文件中
B、在算法设计时,可以把复杂任务分解成一些简单的子任务
C、只要包含了三种基本结构的算法就是结构化程序
D、结构化程序必须包含所有的三种基本结构,缺一不可
标准答案:B
知识点解析:模块化设计思想,就是把复杂的任务分成简单的子任务,用函数或者
过秤描述子任务,C语言中一个程序可以包括多个源文件,每个源文件可以有若干
个函数,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成,不一
定全要包括这三种结构,而算法不等于程序。
2、下面叙述中正确的是
A、线性表是线性结构
B、栈与队列是非线性结构
C、线性链表是非线性结构
D、二叉树是线性结构
标准答案:A
知识点解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采
用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非
线性结构,二叉树是树的一种。
3、以下叙述中正确的是
A、C程序中的每一行只能写一条语句
B、简单C语句必须以分号结束
C、C语言程序中的注释必须与语句写在同一行
D、C语句必须在一行内写完
标准答案:B
知识点解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同
行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和
数据定义的最后必须有一个分号,分号是C语句的必要组成部分。
4、以下选项中作为C语言合法常量的是
A、-80
B、-080
C、-8el.0
D、-80.0e
标准答案:A
知识点解析:本题考查C语言中的常量,C语言中字母e或E之前必须有数字,且
e或E后面的指数必须为整数。选项A表示负数-80;选项B中以数字。开始表示
的是八进制数,八进制数数字范围是从0-7,不包括8;选项C是一个指数浮点,
字母e后面应该是整型指数:选项D中字母e后面没有整数,不满足C规范。
5、以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序void
sort(inta[],intn){intj,t;for(i=0;i
A、1,2,3,4,5,6,7,8,9,10,
B、10,9,8,7,6,5,4,3,2,1,
C、1,2,3,8,7,6,5,4,9,10,
D、1,2,10,9,8,7,6,5,4,3,
标准答案:C
知识点解析:程序中sori函数的功能是对数组中的数据进行从大到小的排序。主函
数main中调用函数“so「(&aa[3],5);”,使得数组aa中从第4个元素开始的5个
元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,
10o并输出这些元素。
6、结构化程序听要求的基本结构不包括
A、顺序结构
B、GOTO跳转
C、选择(分支)结构
D、重复(循环)结构
标准答案:B
知识点解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有
GOTO跳转结构。
7、以下叙述中正确的是
a表示一个字符常量
B、,\(T表示字符0
C、表达式:匕的结果是“假”
D、是非法的
标准答案:c
知识点0析:字符常量可以参加关系运算,按照其存储的ASCH码值进行比
较。不成立,值为假。而、(F表示NULL,ASCII码值为0。
8、设顺序表的长度为n。下列算法中,最坏情况下比较次数等于n(n-l)/2的是
A、快速排序
B、堆排序
C、顺序查找
D、寻找最人项
标准答案:A
知识点解析:假设线性表的长度为n,则在最坏情况下,快速排序法的最坏情况比
较次数也是n(n-1)/2;堆排序,无论是否最坏都是匕较O(nlog2n)次,所以选项A
正确。
9、耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是
A、提高耦合性降低内聚性有利于提高模块的独立性
B、降低耦合性提高内聚性有利于提高模块的独立性
C、耦合性是指一个模块内部各个元素间彼此结合RJ紧密程度
D、内聚性是指模块问互相连接的紧密程度
标准答案:B
知识点解析:耦合性是反映模块间互相连接的紧密程度,内聚性是指一个模块内部
各个元素间彼此接合的紧密程序。提高模块的内聚性,降低模块的耦合性是有利于
模块的独立性。
10、检查软件产品是否符合需求定义的过程称为
A、确认测试
B、集成测试
C、验证测试
D、验收测试
标准答案:A
知识点解析:确定测试是验证软件的功能和性能及其他特性是否满足了需求规格说
明书中确定的各种需求以及软件配置是否完全、正确。
11、有以下程序:#include<stdio.h>main(){inta=l,b=3,C=5;int*pl=&a,
*p2=&b,*p=&c;*p=*pl*(*p2);prinl「("%d\n",c);}程序的运行结果是()。
A、1
B、2
C、3
D、4
标准答案:C
知识点解析:该程序中int*pl=&a,*p2=&b,*p=&c;指定义3个指针变量,并赋
值,即使pl指向a:p2指向h:p指向以*p=*p1*(*p2):语句是给p所指的存储
单元c赋值,就是pl所指的存储单元的值,即a的值,与p2所指的存储单元b的
值相乘,也就是c=a*b,等价于c=l*3=3,因此C选项正确。
12^有以下函数:intfun(char*x,char*y){intn=0;while((*x==*y)&&*x!='\
O'){x++;y++;n++:)returnn;}函数的功能是()。
A、将y所指字符串赋给x所指存储空间
B、查找x和y所指字符串中是否有、(T
C、统计x和y所指字符串中最前面连续相同的字符个数
D、统计x和y所指字符串中相同的字符个数
标准答案:C
知识点解析:本题中由循环条件可知,遇到'\0'或x与y所指的字符的值不等中
的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符
个数。
13、若有以卜程序#includemain。{charcl,c2;cl='C'+'8'-'3';c2='9'-'O';
printf("%c%d\n”,cl,c2);}则程序的输出结果是()。
A、H9
B、表达式不合法输出无定值
C、F9'
D、H,9'
标准答案:A
知识点解析:字符常量与其ASCII码值一一对应,在计算的时候,一般是字符数
据对应的ASCII码参与运算,输出时会根据格式控制符输出对应的字符或者ASCII
码。本题中,8-3结果为5,C+5的结果为72即,卬,所以cl=,Hl为9,
所以c2=9。故而输出结果为选项A)。
14、以下叙述中正确的是
A、在包含文件中,不得再包含其他文件
B、include命令行不能出现在程序文件的中间
C、在一个程序中,允许使用任意数量的#includc命令行
D、虽然包含文件被修改了,包含该文件的源程序也可以不重新进行编译和连接
标准答案:C
知识点解析:include文件包含命令,使用时应注意以下5个规则:①包含文件
的#何日11<1«命令行通常应书写在所用源程序文件的开头,故有时也把包含文件称作
“头文件”。头文件名可以由用户指定,其后缀不一定用“.h"。②包含文件中,
般包含有一些公用的#dcfinc命令行、外部说明或对(库)函数的原型说明。③当包
含文件修改后,对包含咳文件的源程序必须重新进行编译连接。④在一个程序
中,允许有任意多j#inckide命令行。⑤在包含文件中还可以包含其他文件。
15、关于位运算的叙述中正确的是()。
A、右移运算时,高位总是补0
R、左移运算的结果总是原操作数据2倍
C、位运算符都需要两个操作数
D、位运算的对象只能是整型或字符型数据
标准答案:D
知识点解析:C语言中的位运算则是以位(bit)级进行的运算,位运算符中除“一”以
外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的
数据,不能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高
位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整
数,高位补1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的2
倍。
16、以下正确的字符串常量是
A、,abc,
B、OlympicGames
Cmi
D、"\\\"
标准答案:C
知识点解析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反
斜线开头后跟一个特定的字符,用来代表一个特定的ASCII字符。利用两个,\\,
表示一个反斜杠,因此选项D)的表示无法确认表示几个反斜杠。
17>有以下程序main(){inta=-2,b=0;while(a++&&++b);printf("%d,%d\
n\a,b);}程序运行后输出结果是
A、0,3
B、1,2
C、1,3
D、0,2
标准答案:B
知识点解析:循环体为空,共执行2次。第一次变量a初值为-2,b初值为o,表
达式a++&&++b值为1,同时a的值为-1,b的值为1。第二次循环条件判断以
后,a的值为0,b的值2,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论