[计算机类试卷]国家二级(C语言)笔试模拟试卷278及答案与解析.doc

上传人:postpastor181 文档编号:503443 上传时间:2018-11-29 格式:DOC 页数:25 大小:80.50KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)笔试模拟试卷278及答案与解析.doc_第1页
第1页 / 共25页
[计算机类试卷]国家二级(C语言)笔试模拟试卷278及答案与解析.doc_第2页
第2页 / 共25页
[计算机类试卷]国家二级(C语言)笔试模拟试卷278及答案与解析.doc_第3页
第3页 / 共25页
[计算机类试卷]国家二级(C语言)笔试模拟试卷278及答案与解析.doc_第4页
第4页 / 共25页
[计算机类试卷]国家二级(C语言)笔试模拟试卷278及答案与解析.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

1、国家二级( C语言)笔试模拟试卷 278 及答案与解析 1 C语言的基本单位是 ( )。 ( A)函数 ( B)过程 ( C)子程序 ( D)子函数 2 设有如下三个关系表 下列操作中正确的是 ( A) T=RS ( B) T=R S ( C) T=RS ( D) T=R/S 3 串的长度是 ( )。 ( A)串中不同字符的个数 ( B)串中不同字母的个数 ( C)串中所含字符的个数且字符个数大于 0 ( D)串中所含字符的个数 4 若进栈序列为 1, 2, 3, 4,进栈过程中可以出栈,则下列不可能的 个出 栈序列是 _。 ( A) 1, 4, 3, 2 ( B) 2, 3, 4, 1 (

2、C) 3, 1, 4, 2 ( D) 3, 4, 2, 1 5 在结构化程序设计思想提出之前,在程序设计中曾强调程序的效率。与程序的效率相比,人们更重视程序的 ( A)安全性 ( B)一致性 ( C)可理解性 ( D)合理性 6 对于 n个结点的单向链表 (无表头结点 ),需要指针单元的个数至少为 _。 ( A) n-1 ( B) n ( C) n+1 ( D) 2n 7 两个或两个以上的模块之间关联的紧密程度称为 _。 ( A)耦合 度 ( B)内聚度 ( C)复杂度 ( D)数据传输特性 8 下列对队列的叙述正确的是 ( A)队列属于非线性表 ( B)队列按 “先进后出 ”原则组织数据 (

3、 C)队列在队尾删除数据 ( D)队列按 “先进先出 ”原则组织数据 9 设有表示学生选课的三张表,学生 S(学号,姓名,性别,年龄,身份证号 ),课程 C(课号,课名 ), Q选课 SC(学号,课号,成绩 ),则表 SC的关键字 (键或码 )为( )。 ( A)课号,成绩 ( B)学号,成绩 ( C)学号,课号 ( D)学号,姓名,成绩 10 两次运行下列的程序 ,如果从键盘上分别输入 3和 1,则输出结果是 ( )。 main() int x; scanf(“%d“, if(x+ 2) printf(“%d“,x); else printf(“%dn“,x-); ( A) 4和 2 ( B

4、) 4和 1 ( C) 4和 0 ( D) 3和 1 11 在数据流图中,带有箭头的线段表示的是 ( )。 ( A)控制流 ( B)数据流 ( C)模块 调用 ( D)事件驱动 12 有以下程序 #include main() int a; scanf(“%d”, if(a+,则输出结果是 ( A) 11 ( B) 10 ( C) 9 ( D) 8 13 若要求从键盘读人含有空格字符的字符串,应该使用函数 ( )。 ( A) getc() ( B) gets() ( C) getchar() ( D) scanf() 14 下列程序的运行结果为 _。 main() int n; for (n=

5、1; n =10; n+) if(n%3=0) continue; printf(“%d“, n); ( A) 12457810 ( B) 369 ( C) 12 ( D) 12345678910 15 C语言中各种基本数据类型的存储空间长度排列为 ( ) ( A) charlongintfloatdouble ( B) doublefloatlongintchar ( C) charintlongfloatdouble ( D) floatintlongchardouble 16 以下合法的赋值语句是 _。 ( A) X=Y=100 ( B) D-; ( C) X+Y; ( D) C=int

6、( + ) 17 设 x为 int型变量,执行以下语句, x=10;x+=x-=x-x;x的值为 _。 ( A) 10 ( B) 20 ( C) 30 ( D) 40 18 下列能正确定义一维数 组的选项是 ( )。 ( A) int a5=0,1,2,3,4,5); ( B) char a=0,1,2,3,4,5; ( C) char a=A,B,C; ( D) int a5=“0123“; 19 已知 i、 j、 k为 int型变量,若要从键盘输入 2、 3、 4 CR,使 i、 j、 k的值分别为 2、 3、 4下列正确的输入语句是 ( )。 ( A) scanf(“%3d,%3d, %

7、3d”, ( B) char c20“goodmoming“; ( C) charc=a,b,c,d; ( D) char c=“goodmorning“; 25 设变量 a、 b、 c、 d和 y都己正确定义并赋值。若有下列 if语句 if(a b) if(c d) y 0; else y 1; 该语句所表示的含义是 ( )。 ( A) ( B) ( C) ( D) 26 下列程序的输出结果是 ( )。 #include main() int a=0, i; for(i=1; i 5; i+) switch(i) case 0; case 3: a+=1; case 1: case 2: a

8、=2; default: a+=3; printf(“ d“, a); ( A) 19 ( B) 18 ( C) 6 ( D) 8 27 以下程序的输出结果是 _。 ( A) 54321 ( B) 12345 ( C) 1 2 3 4 5 ( D) 5 4 3 2 1 0 main() int w=5; fun(w); printf(“n“); fun (int k) if(k 0) fun(k-1); printf(“%d“, k); 28 C语言规定,简单变量作实参时,它和对应形参之间的数据传递方式是_。 ( A)由实参传给形参,再由形参传回给实参 ( B)地址传递 ( C)单向值传递 (

9、 D)由用户指定传递方式 29 有以下程序: #include stdio.h main() FILE *fp; int i,k,n; fp=fopen(“data.dar“,“w+“); for(i=1;i 6;i+) fprintf(fp,“%d “,i); if(i%3=0) fprintf(fp,“n“); rewind(fp); fscanf(fp,“%d%d“, printf(“%d%dn“,k,n); fclose(fp); 程序运行后的输出结果是 ( )。 ( A) 0 0 ( B) 123 45 ( C) 1 4 ( D) 1 2 30 有如下程序: main() int a

10、33=1,2,3,4,5,6,i,j,s=0; for(i=1;i3; i+) for(j=0;j =i;j+) s+=aij; printf(“%dn“,s); 该程序的输出结果是 _。 ( A) 18 ( B) 19 ( C) 20 ( D) 21 31 下列程序的运行结果为 _。 #define MS DOS #ifdef MS DOS #define INTEGER SIZE 32 #else #define INTEGER SIZE 16 #endif main () printf (“integer_size=%dn“, INTEGER_SIZE); ( A) integersiz

11、e=32 ( B) integer_size=16 ( C) integersize=32,integer_size=16 ( D)错误 32 已知字母 A的 ASCII码值是 65,字母 a的 ASCII码值是 97,以下程序_。 maini() char a=A; int b=20; printh(“%d,%o“,(a=a+a,a+b,b),a+a-A,b); ( A)表达式非法,输出零或不确定值 ( B)因输出项过多,无输出或输出不确定值 ( C)输出结果为 20,141 ( D)输出结果为 20,141,20 33 运行下面程序时,从键盘输入字母 H,则输出结果是 #include s

12、tdio.h main() char ch; ch=getchar(); switch(ch) case H: printf(“Hello!n“); case G: printf(“Good morning!n“); default: printf(“Bye_Bye!n“); ( A) Hello! ( B) Hello! GoodMoring! ( C) Hello! Goodmorning! Bye_Bye! ( D) Hello! Bye_Bye! 34 以下说法正确的是 ( ) ( A)宏定义是 C语句,所以要在行末加分号 ( B)可以使用 #undef命令来终止宏定义的作用域 ( C

13、)在进行宏定义时,宏定义不能层层置换 ( D)对程序中用双引号括起来的字符串内的字符,与宏名相同的要进行置换 35 若有说明: int*p,m=5,n;,以下正确的程序段是 ( )。 ( A) p= scanf(“%d“, scanf(“%d“, ( D) p= p= 36 有以下程序 main() char s=“159“,*p; p=s; printf(“%c“,*p+);printf(“%c“,*p+); 程序运行后的输出结果是 ( A) 15 ( B) 16 ( C) 12 ( D) 59 37 若有定义 float a15,*p=a;,且数组 a的首地址为 300H,则 p+13所指

14、向的数组元素的地址为 ( )。 ( A) 334H ( B) 30DH ( C) 352H ( D) 31AH 38 下列叙述中不正确的是 ( )。 ( A)在 C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参 ( B)在 C的函数中,最好使用全局变量 ( C)外部变量可以在函数之间传递数据 ( D)自动变量实质上是一个函数内部的局部变量 39 有以下程序 #include stdio.h main() int n,*p=NULL; *p= a=b; b=t; main() swap(p,q); printf(“%d %dn“,*p,*q); 48 C语言用于结 构化程序设

15、计的 3种基本结构是 _、选择结构和循环结构。 49 以下程序的输出结果是【 】。 #include main() printf(“%dn“,strlen(“IBMn0121“); 50 设 C语言中,一个 int型数据在内存中占两个字节,则 int型数据的取值范围为【 】。 51 若有如下程序: main() int s 1, 2, 3, 4, 5, 6, *p=s; printf(“%d, %dn“, *(p+3), *(p+6); 则程序运行后的输出结果是【 】。 52 下面程序的运行结果是【 】。 typedef union student char name10; long sno;

16、 char sex; float score4; STU; main() STU a5; printf(“%dn“,sizeof(a); 53 下列程序的输出结果是【 】。 int t(int x,int y,nt cp,int dp) cp=x*x+y*y; dp=x*x-y*y; main() int a=4, b=3, c=5, d=6; t(a,b,c,d); printf(“%d%dn“,c,d); 54 求任意一个数 (用 16位二进制码表示 )的补码。 main() unsigned int a; 【 】; scanf(“%o“, printf(“%d %dn“, m,n );

17、国 家二级( C语言)笔试模拟试卷 278 答案与解析 1 【正确答案】 A 【试题解析】 C语言是函数式的语言。它的基本组成单位是函数,在 C语言中任何程序都是由一个或者多个函数组。 2 【正确答案】 C 【试题解析】 对于两个关系的合并操作可以用笛卡尔积表示。设有 n 元关系 R和 m元关系 S,它们分别有 p和 q 个元组 ,则 R与 S 的笛卡儿积记为 RS 它是一个m+n 元关系 ,元组个数是 pq由题意可得 ,关系 T 是由关系 R与关系 S 进行笛卡尔积运算得到的。 3 【正确答案】 D 【试题解析】 串的长度是指串中 字符的个数,且其字符个数可以为 0。 4 【正确答案】 C

18、【试题解析】 栈是 种后进先出表,选项 C中,先出栈的是 3,说明此时栈内必然有 1, 2,由于 1先于 2进栈,所以 1不可能在 2之前出栈,故选项 C这种出栈序列是不可能的。 5 【正确答案】 C 【试题解析】 结构化程序设计方法设计出的程序具有明显的优点。其一,程序易于理解、使用和维护;其二,提交了编程工作的效率,降低了软件开发成本。其中,人们更重视前者。 6 【正确答案】 C 【试题解析】 在 n个结点的单向链表 (无表头结点 )中,每 个结点都有一个指针单元 (即指针域 ),加上头指针,至少需要 n+1个指针单元。 7 【正确答案】 A 【试题解析】 耦合度是模块间互相连接的紧密程度

19、的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程度的度量。 8 【正确答案】 D 【试题解析】 队列是一种操作受限的线性表。它只允许在线性表的一端进行插入操作,另一端进行删除操作。其中,允许插入的一端称为队尾 (rear),允许删除的一端称为队首 (front)。队列具有先进先出的特点,它是按 “先进先出 ”的原则组织数据的,故本题答案为 D)。 9 【正确答案】 C 【试题解析】 关键字是指属性或属性的组合,其值能够唯一地标识一个元组,而在 SC中学号和课号的组合可以对元组进行唯一的标识。 10 【正确答案】 A 【试题解析】 本题考查 if else语句。首先 scanf 函数通过键

20、盘读入 x的值。当x=3时,第一个 if语句,先判断条件,取 x的值 3和 2比较,然后将 x的值加 1,发现条件成立,执行下列的 printf 语句,输出 x的值 4。当 x=1时,第一个 if 语句,先判断条件,取 x的值 1和 2比较,然后将 x的值加 1(x的值变为 2),发现条件不成立, 执行下列的 else语句,先输出 x的值 2,再将 x的值减 1。 11 【正确答案】 B 【试题解析】 数据流图中带箭头的线段表示数据流,沿箭头方向传递数据的通道,一般在旁边标注数据流名。 12 【正确答案】 B 【试题解析】 本题考查的是 ifelse 选择结构和变量自加 ?自减运算。从键盘输入

21、 9回车后 ,a的值为 9,if 语句中 ,先判断 a9,再执行 a自加 1(a为 10)运算 ,此时 if 语句值为假 ,执行 else语句 ;在 else语句中 ,同样先执行输入 a的值 ,再执行 a自减运算 ,故输出结果为 10。 13 【正确答案】 B 【试题解析】 gete()函数是从文件指针指定的文件中读入一个字符,并把它作为函数值返回; getchar()函数是从终端 (或系统隐含指定的输入设备 )输入一个字符,getc()和 getehar()都不能读字符串 (可以与循环语句结合输入一个字符串 ); seanf()函数不能输入带空格的字符串; gets()函数可以从键盘读入空格

22、字符。 14 【正确答案】 A 15 【正确答案】 C 16 【正确答案】 B 【试题解析】 本题中的答案 A与 D都缺少 “;”,而答案 C中,表达 式是不能独立成为语句的,答案 B 使用了 C语言的自减运算符它就相当于 D=D-1,所以答案 B为一赋值语句。 17 【正确答案】 B 【试题解析】 本题 x=10,表达式 “x+=x=x-x; ”的求解步骤如下:先进行 x-=x-x的运算,相当于 x=x-(x-x)=x=10;再进行 x+=x的运算,即 x=x+x=20。 18 【正确答案】 B 【试题解析】 在定义数组时,如果赋给的初始值个数大于数值的长度,这样就会越界,因此选项 A)错误

23、;选项 C)中定义的是一个字符变量 C:选项 D)中整型数组 a中只能存储整型 数据,而不能存储字符串常量 “0123”。 19 【正确答案】 B 【试题解析】 函数 scanf()的调用形式是: scanf(格式字符串,输入项地址表 )。其中, “格式字符串 ”是要输入的变量的格式符; “输入项地址表 ”是要输入的变量的地址。若在格式符中插入了其他字符,则在输入时要求按一一对应的位置原样输入这些字符,其中的逗号也必须输入。 20 【正确答案】 B 【试题解析】 在语言环境下,输出 long 型数时,在 %和 d之间必须加 1(L 的小写 );输出 double 型数时,在 % 和 f(e)之

24、间也必须 加 1。 21 【正确答案】 B 【试题解析】 (1)二维数组的定义 二维数组的定义方式为:类型说明符数组名 常量表达式 常量表达式 。 二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再存放第二行的元素,依次类推。 (2)二维数组元素的引用 二维数组元素的表示形式为:数组名 下标 下标 ,下标可以是整型常量或整型表达式其范围为: 0 (常量表达式 -1)。 (3)二维数组的初始化 可以用以下方法对二维数组元素初始化: 分行给二维数组赋初值 例如: int a22=1,2,3,4; 这种赋值方式比较直观,把第 1个大括号内的数据赋给第 1行的元素,第 2个大括号内的数据

25、赋给第 2行的元素,即按行赋值。 可以将所有数据写在一个大括号内,按数组排列的顺序对各个元素赋初值。 可以对部分元素赋初值,没有初始化的元素值为 0。 如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。 22 【正确答案】 B 23 【正确答案】 B 【试题解析】 getchar函 数的作用是从终端读入一个字符。 24 【正确答案】 A 【试题解析】 本题考查两个概念: 用单引号括起来的一个字符常量只能存放一个字符; C语言中没有字符串变量,只能用字符数组来存储字符串。 选项 A)中一个单引号内放了若干个字符是错误的;选项 B)和选项 D)选项中将一个字符

26、串赋值给一个字符数组是允许的。 25 【正确答案】 C 【试题解析】 语句 if(c D) y 0;else y 1;是 if(a B) 语句的一个子句。所以整个 C语句表达式的意思是:在、 a b 的情况下,如果 c d则 y 0,否则 y 1。所以,选项 C) 为正确答案。 26 【正确答案】 A 【试题解析】 本题考查 switch case开关语句 default退出继续循环。当 i=1时执行 case 1,因为没有 break 语句,所以依次往下运行, a=a+2=2,a=a+3=5;当 i=2时,执行 case 2,没有 break 语句,所以依次往下运行,a=a+2=7, a=a

27、+3=10;当 i=3时,执行 case 3,当 a=a+1=11,没有 break 语句,所以依次往下运行, a=a+2=13, a=a+3=16;当 i=4时。 没有 case语句,则执行default, a=a+3=19, i=5不成立,循环结束。表达式的右边出现变量本身,选项 D中字母 E 后面的数应该为整数,所以不对。 27 【正确答案】 B 28 【正确答案】 C 29 【正确答案】 D 【试题解析】 程序首先定义了一个文件指针 fp,并使用 fopen()函数以 “w+”方式新建一个可读写文件 “data.dat”。然后使用一个 for循环,循环变量 i从 1递增到5,在循环体中

28、每次写入循环变量 i的值和 4个空格,当 i能被 3整除的时候写入一个换行符。所以循环结束时 ,文件中的内容应该为: 1 2 3 4 5 接下来程序使用 rewind()函数,将文件的读写指针调回起始位置。并调用 fscanf()函数从文件中读取两个整数到变量 k 和 n。所以最终输出应该为: 1 2。故本题选D。 30 【正确答案】 A 【试题解析】 题中的外循环只执行了 2次: 第 1次: a10=3, a11=4,所以 s=7; 第 2次: a20=5, a21=6, a22=0,所以 s=7+5+6+0=18。 31 【正确答案 】 A 32 【正确答案】 C 【试题解析】 本题中首先

29、输出逗号表达式 “a=a+a,a+b,b”的值,即 20。然后以八进制的形式输出 a+a-A的值为 97对应的八进制数 141,由于最后一个表达式 b没有对应输出格式的输出项表列就不会输出。 33 【正确答案】 C 【试题解析】 本题主要对 switch 语句进行了考查。 switch 语句的执行过程为:进入 switch 结构后,对条件表达式进行运算,然后从上至下去找与条件表达式值相匹配的 case,以此作为入口,执行 switch 结构中后面的各语句 ,直到遇到 break语句,则跳出 switch 语句,如果各 case都不匹配时则执行 default 后面的语句。本题中 ch 为字符

30、H,所以 case H条件中的语句将被执行,由于没有 break 语句,所以 case C后的语句也被执行,由于同样的缺少 break 语句,所以 default后的语句也被执行了。 34 【正确答案】 B 35 【正确答案】 D 【试题解析】 p 为指针型变量,在输入函数的地址列表中不用 数据的存储结构是指数据的逻辑结构在计算机存储空间中的存放形式。在数据的存储结构中 ,不仅要存放各 数据元素的信息 ,还需要存放各数据元素之间前后件关系的信息。 43 【正确答案】 关系模型 【试题解析】 数据库管理系统是位于用户与操作系统之间的一层系统管理软件 ,属于系统软件是用户与数据库之间的一个标准接口

31、 ,其总是基于某种数据模型 ,可以分为层次模型、网状模型和关系模型。 44 【正确答案】 循环 【试题解析】 算法一般由顺序,选择和循环三种基本控制结构组合而成。 45 【正确答案】 关系运算 45 【试题解析】 首先将变量 x的值放到一中,然后依次和变量 y、 z进行比较。若有比一大 的数,将该数存放到 max中,这样最后在一中的值就是 x、 y、 z中的最大值。 46 【正确答案】 消息 【试题解析】 对象之间进行通信的构造叫做消息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。 47 【正确答案】 3 5 【试题解析】 函数 swap(int *a,int *b)的

32、功能是实现 *a和 中两个数据的交换 ,在主函数中调用 swap(p,q)后 ,参形指针变量 a和 b 分别指向 i和 j,在 swap(int *a,int *b)执行完后 ,指针变量 a和 b分别指向 j和 i,而指针变量 p,q 所指向变量的值没有发生变化 ,所以输出结果为 3 5。 48 【正确答案】 顺序结构 【试题解析】 结构化程序有 3种基本结构,即顺序结构、选择结构 (包括汀语句和 switch 语句 )和循环结构 (包括 for语句、 while语句、 dowhile 语句 )。 49 【正确答案】 9 【试题解析】 本题的字符串中共有 9个字符 ,它们分别是 I、 B、 M

33、、 n、 0、 1、 2、 1、 ,其中, “n“表示换行, “表示反斜杠字符 “,所以本题的最后输出结 果为 9。 50 【正确答案】 -32768 32767 51 【正确答案】 4,不定值 52 【正确答案】 80 【试题解析】 本题中,数组 a的元素类型是共用体,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为 44=16。因此,数组 a所占的内存长度为 5x16=80,所以最后输出的 s值为 80。 53 【正确答案】 56 【试题解析】 本题中 a, b, c, d 是实参, x, y, cp, dp是形参。 C语言规定,实参变量对形参变量的数据传递是 “值传递

34、 ”,即单向传递,只由实 参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。在调用函数时,给形参分配存储单元,并将实参对应的值传递给形参,调用结束后,形参单元被释放,实参单元仍保留并维持原值。因此,程序的输出结果是56。 54 【正确答案】 unsigned int getbits() value&0100000 z= value+1 55 【正确答案】 10 11 【试题解析】 此题中定义两个变量 m和 n,首先将一个八进制数赋给 m,十进制数赋给 n;在输出之前先进行运算, n:是指在输 出变量 m前先对其进行加1, (011)8 l=(9)10 1=10; n:是指在进行输出操作后 n 再进行加 1操作,所以输出时 n=11。 “%d %d”表示输出的是两个带符号的十进制整型数,所以最后的输出结果为: 10 11。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1