admin 管理员组

文章数量: 887021


2024年1月25日发(作者:insert语句实现什么功能)

国家二级C语言机试(选择题)模拟试卷151

(题后含答案及解析)

题型有:1.

1. 设int类型的数据长度为2个字节,则unsigned int类型数据的取值范围是( )。

A.0~255

B.0~65535

C.-32768~32767

D.-256~255

正确答案:B

解析:整型数据分为signed和unsigned两种,设int类型的数据长度为2个字节,则无符号整数表示的范围为0~65535。 知识模块:C语言的基本知识

2. 下列对于线性链表的描述中正确的是

A.存储空间不一定连续,且各元素的存储顺序是任意的

B.存储空间不一定连续,且前件元素一定存储在后件元素的前面

C.存储空间必须连续,且前件元素一定存储在后件元素的前面

D.存储空间必须连续,且各元素的存储顺序是任意的

正确答案:A

解析:一般来说,在线性表的链式存储结构中,各数据结点的存储序号是不连续的,并且各结点在存储空间中的位置关系与逻辑关系也不一致。在线性链表中,各数据元素之间的前后件关系是由各结点的指针域来指示的,指向线性表中第一个结点的指针head称为头指针,当head=NULL(或0)时称为空表。 知识模块:公共基础知识

3. 以下选项中,不合法的C语言用户标识符是

A.AaBc

B.a-b

C.a_b

D._1

正确答案:B

解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项B中出现了非法的字符“-”。 知识模块:C语言基础知识

4. 在深度为7的满二叉树中,度为2的结点个数为

A.64

B.63

C.32

D.31

正确答案:B

解析:因为在任意的二叉树中,度为0的结点(即叶子结点)总比度为2的结点的个数多1个,而度为0的结点数n0=2m-1(其中m为二叉树的深度)。本题的度为0的结点个数n0=27-1=26=64。因此,度为2的结点数n2=n0-1=63。所以选项B正确。 知识模块:数据结构与运算

5. 下列叙述中正确的是( )。

A.数据库的数据项之间无联系

B.数据库中任意两个表之间一定不存在联系

C.数据库的数据项之间存在联系

D.数据库的数据项之间以及两个表之间都不存在联系

正确答案:C

解析:数据库的数据项之间以及表之间都存在联系。 知识模块:公共基础知识

6. 下面不属于软件设计原则的是

A.抽象

B.模块化

C.自底向上

D.信息隐藏

正确答案:C

解析:软件设计的基本原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。 知识模块:软件工程基础

7. 有以下程序段intj;floaty;charname[50];scanf(‘‘%2d%f%s’’,&j,&y,name);当执行上述程序段,从键盘上输入555667777abc后,y的值为

A.55566.0

B.7777.0

C.566.0

D.566777

正确答案:C

解析:因为在输入格式控制符中指定变量j的输入格式控制符为”%2d”,即变量i所占的宽度为2,所以变量j只接收输入数据的前两位,从第三位开始直到空格之间的输入整数都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项C。 知识模块:C语言程序设计

8. 以下程序的输出结果是( )。main( ){int x=1,y=0;if(!x)y++;else

if(x==0)if(x)y+=2;else y+=3;printf(‘‘%d\n’’,y);}

A.一1

B.0

C.1

D.2

正确答案:B

解析:如果不满足if语句的条件,函数将不执行本题中x=1,if和else if的条件都不满足,故y值不改变输出。 知识模块:C语言程序设计

9. 以下叙述中正确的是

A.C程序中的每一行只能写一条语句

B.简单C语句必须以分号结束

C.C语言程序中的注释必须与语句写在同一行

D.C语句必须在一行内写完

正确答案:B

解析:C语言的书写格式自由,一行可写多条语句,一条语句也可写在不同行上。C语言注释是比较自由的,可以写在一行或者多行。C语言规定每条语句和数据定义的最后必须有一个分号,分号是c语句的必要组成部分。 知识模块:C语言基础知识

10. 有以下程序:#include<stdio.h>int add(int a,int

b){return(a+b);}main( ){int k,(*f)( ),a=5,b=10;f=add;…}则以下函数调用语句错误的是( )。

A.k=f(a,b);

B.k=add(a,b);

C.k=(*f)(a,b);

D.k=*f(a,b);

正确答案:D

解析:D选项中,*f(a,b)表示调用后返回一个指向整型数据的地址指针,即该函数的返回值为指针类型,所以不能将其赋值给整形变量k。 知识模块:指针

11. 设有定义: int x[2][3];则以下关于二维数组X的叙述错误的是

A.数组x可以看作是由x[0]和x[1]两个元素组成的一维数组

B.可以用x[0]=0;的形式为数组所有元素赋初值0

C.元素x[0]可看作是由3个整型元素组成的一维数组

D.x[0]和x[1]是数组名,分别代表一个地址常量

正确答案:B

解析:二维数组的元素在内存中占一系列连续的存储单元。数组元素在内存中的排列顺序是先存放第0行的元素,再存放第1行的元素……称这种存放顺序为按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含

有若干个元素的一维数组。另外在给二维数组赋初值时可以不用含花括号对。例如,inta[4][3]={1,2,4,5};在编译时,系统将按a数组元素在内存中排列的顺序,将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自动补初值0。以上将给a数组第一行的元素和第二行的第一个元素依次赋予1、2、4、5,其他元素的初值都为0。 知识模块:函数和数组

12. 当变量c的值不为2、4、6时,值为”真”的表达式是( )。

A.(c>=2 && c<=6) || (c!=3) || (c!=5)

B.(c==2)||(c==4)||(c==6)

C.(c>=2 && c<=6)&& !(c%2)

D.(c>=2 && c<=6)&&(c%2!=1)

正确答案:A

解析:逻辑或运算符的两个运算对象中,只要有一个值为真,整个逻辑表达式的值就为真;逻辑与运算符的两个运算对象的值均为真,整个逻辑表达式的值才为真。选项A)中,只要c的值不为3或者不为5或者在2和6之间,这个表达式就为真,所以答案选A)。 知识模块:数据类型、运算符与表达式

13. 以下选项中,不合法的C语言用户标识符是

A.AaBc

B.a-b

C.a_b

D._1

正确答案:B

解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项B中出现了非法的字符“-”。 知识模块:C语言基础知识

14. 有以下程序#include<stdio.h>#defineSQR(x)x*xmain( ){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf(‘‘%dn’’,a);)程序的输出结果是

A.0

B.1

C.9

D.10412文件包含

正确答案:B

解析:SQR(k+m)宏展开以后为k+m*k+m,值为5,表达式a/=sQR(k+m)/SQR(k+m)为a=a/(5+5),表达式值为1。 知识模块:编译预处理和指针

15. 关于文件操作的叙述中正确的是( )。

A.在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据

B.C语言中的文件是流式文件,因此只能顺序存取数据

C.打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖

D.当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失

正确答案:D

解析:在C语言中,有两种对文件的存取方式:顺序存取和直接存取。如果以“a”的方式对一个已打开的文件进行写操作后,则原有文件中内容将保存,新的数据写在原有内容之后。如果以“a+”的方式为读和写而打开一个文件,则既可以对文件进行读,也可以对文件进行写,而且在读和写操作之间不必关闭文件,可以从头开始读。当对文件的读(写)操作完成之后,必须将它关闭。 知识模块:结构体及文件操作

16. 以下关于结构化程序设计的叙述中正确的是( )。

A.在C语言中,程序的模块化是利用函数实现的

B.结构化程序使用goto语句会很便捷

C.一个结构化程序必须同时由顺序、分支、循环三种结构组成

D.由三种基本结构构成的程序只能解决小规模的问题

正确答案:A

解析:goto语句会导致程序结构混乱,所以结构化程序中限制使用goto语句,选项B)错;一个结构化的程序可以依据该程序要实现的功能选用顺序、分支、循环这三种基本结构中的某几种或者全部使用,不是必须都用上,选项C)错;已经证明,由这三种基本结构组成的算法可以解决任何复杂的问题,选项D)错;程序的模块化是指把程序要解决的总目标分解为若干目标,再进一步分解为具体的小目标,每个小目标即为一个模块,而函数是C语言的基本模块,实现某一模块的具体功能。答案选A)。 知识模块:循环结构程序设计

17. 若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf(“*\n”);下面关于语句执行情况的叙述中正确的是

A.循环体执行两次

B.循环体执行一次

C.循环体一次也不能执行

D.构成无限循环

正确答案:D

解析:本题考查for循环。本题的for循环初始条件为i=0,k=-1;循环结束条件为k=1永远为真(k不为0),因此循环不能结束。 知识模块:C语言程序设计

18. 以下叙述中正确的是

A.循环发生嵌套时,最多只能两层

B.三种循环for,while,do-while可以互相嵌套

C.循环嵌套时,如果不进行缩进形式书写代码,则会有编译错误

D.for语句的圆括号中的表达式不能都省略掉

正确答案:B

解析:在一个循环体内又完整包含了另一个循环,称为循环嵌套。循环的嵌套可以多层,但每一层循环在逻辑上必须是完整的。for循环、while循环、do-while循环可以互相嵌套,但每层循环在逻辑上必须完整。而在for语句中,for语句中的表达式可以部分或全部省略,但两个“:”不可省略。 知识模块:C语言程序设计

19. 程序中若有如下说明和定义语句 char fun(char*); main( )

{char*s=“one”,a[5]={0},(*f1)( )=fun,ch; } 以下选项中对函数fun的正确调用语句是

A.(*f1)(a);

B.*f1(*s);

C.fun(a);

D.ch=*f1(s);

正确答案:A

解析:本题主要考查函数调用和函数指针的使用。根据定义f1是一个函数指针,且指向fun函数,因此可以使用函数指针来调用函数。使用函数指针调用函数的时候使用.运算符,即*f1和fun是一样的,fun函数有参数,通过f1调用fun函数写法为:(*f1)(a),括号是必须的,这样才能保证各部分正确结合。 知识模块:函数和数组

20. 不能正确表示数学式的表达式是

A.a/c*b

B.a*b/c

C.a/ b* c

D.a*(b/c)

正确答案:C

解析:/号和*号的优先级处于平级,结合性都是自左至右?所以选择C,C式子表示的是。

21. 若有以下程序struct stu{char*name,gender;int score;};main( ){struct

stu a={NULL,’m’,290},b;a.name=(char*)malloc(10);strcpy(a.name,”Zhao”);b=a;b.gender=‘f’;b.score=350;strcpy(b.name,”Qian”);printf(“%s,%c,%d,”,a.name,a.gender,a.score);printf(“%s,%c,%d\n”,b.

A.Zhao,m,290,Qian,f,350

B.Qian,f,350,Qian,f,350

C.Zhao,m,290,Zhao,e350

D.Qian,m,290,Qian,f,350

正确答案:D

解析:主函数中定义结构体类型struct stu,有三个成员,第一个成员为字符指针变量。主函数中为stu类型变量a赋值,首先为a.name成员分配存储空间,存入数据。b=a;语句执行完毕以后,a和b的各个成员值相同,需要注意的是b.name和a.name成员都保存了同一段内存的地址,因此当为变量b赋值的时候,同样更改了a的name成员,而其他成员由于有单独的存储空间而不会发生改变。 知识模块:结构体、共用体、位运算及文件操作

22. 下面选项中关于位运算的叙述正确的是

A.位运算符都需要两个操作数

B.左移运算的结果总是原操作数据2倍

C.右移运算时,高位总是补0

D.位运算的对象只能是整型或字符型数据

正确答案:D

解析:位运算则是以位(bit)一级进行的运算,位运算符中除 “~”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的2倍。

知识模块:C语言程序设计

23. 下面选项中关于位运算的叙述正确的是

A.位运算符都需要两个操作数

B.左移运算的结果总是原操作数据2倍

C.右移运算时,高位总是补0

D.位运算的对象只能是整型或字符型数据

正确答案:D

解析:位运算则是以位(bit)一级进行的运算,位运算符中除“~”以外,均为二元运算符,即要求两侧各有一个运算量,运算量只能是整型或字符型的数据,不能为实型数据。其中右移时,右端(低位)移出的二进制数舍弃,左端(高位)移入的二进制数分两种情况:对于无符号整数和正整数,高位补0;对于负整数,高位补1。而左移运算在没有溢出的前提下每移动一位,相当于原数据的2倍。

知识模块:结构体、共用体、位运算及文件操作

24. 一间宿舍可住多个学生,则实体宿舍和学生之间的联系是( )。

A.一对一

B.一对多

C.多对一

D.多对多

正确答案:B

解析:因为一间宿舍可以住多个学生即多个学生住在一个宿舍中,但一个学

生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。

25. 若有以下程序#include<stdio.h>main( ){inta=1,b=2,c=3,d=4;if((a=2)||(b=1))c=2;if((c==3)&&(d=-1))a=5;printf(“%d,%d,%d,%dn”,a,b,c,d);}则程序的输出结果是

A.1,2,3,4

B.2,1,2,-1

C.5,1,2,-1

D.2,2,2,4

正确答案:D

解析:第一个if语句的判断条件中是逻辑或表达式,所以只要有一个运算对象为真结果就为真,且如果前面的已经为真,后面的表达式不再进行执行判断。执行第一个if判断条件时a的值为2,整个表达式的值为真,b的值不变,c的值为2。判断第二个if条件为逻辑与表达式,只有两个运算对象均非零,才为真,第一个表达式c==3,不成立,不再判断第二个运算对象,所以不执行d=-1操作和a=5操作。所以结果为选项D。


本文标签: 数据 模块 知识