2020年全国计算机二级等级考试全真模拟试卷及答案(第五套)1. 下列叙述中正确的是A) 栈与队列都只能顺序存储B) 循环队列是队列的顺序存储结构C) 循环链表是循环队列的链式存储结构D) 栈是顺序存储结构而队列是链式存储结构参考答案:B2.设某二叉树的前序序列为ABC,中序序列为CBA,则该二叉树的后序序列为A) BCAB) CBAC) ABCD) CAB参考答案:B3.下列排序方法中,最坏情况下时间复杂度最小的是A) 冒泡排序B) 快速排序C) 堆排序D) 直接插入排序参考答案:C4.为了对有序表进行对分查找,则要求有序表A) 只能顺序存储B) 只能链式存储C) 可以顺序存储也可以链式存储D) 任何存储方式参考答案:A5.软件设计中模块划分应遵循的准则是A) 低耦合低内聚B) 高耦合高内聚C) 低耦合高内聚D) 内聚与耦合无关参考答案:C6.下面属于整数类的实例是A) 0x518B) 0.518C) "-518"D) 518E-2参考答案:A7.下面属于白盒测试方法的是A) 边界值分析法B) 基本路径测试C) 等价类划分法D) 错误推测法参考答案:B8.设有一个商店的数据库,记录客户及其购物情况,由三个关系组成:商品 (商品号,商品名,单价,商品类别,供应商) ,客户 (客户号,姓名,地址,电邮,性别,身份证号) ,购买 (客户号,商品号,购买数量),则关系购买的键为A) 客户号B) 商品号C) 客户号, 商品号D) 客户号, 商品号, 购买数量参考答案:C9.有两个关系R,S如下,由关系R和S通过运算得到关系T,则所使用的操作为A) 并B) 自然连接C) 差D) 交参考答案:D10.在数据库管理系统提供的数据语言中,负责数据的查询、增加、删除和修改等操作的是A) 数据定义语言B) 数据管理语言C) 数据操纵语言D) 数据控制语言参考答案:C11.流程图是描述算法的很好的工具,一般的流程图中由几种基本图形组成。
其中判断框的图形是A) 菱形B) 长方形C) 平行四边形D) 椭圆型参考答案:A12.以下叙述错误的是A) 在进行模块化程序设计的时候,应首先完成每个模块的编写调试,再集中考虑主程序中的算法B) 同一程序各模块可由一组人员同时进行编写调试,可提高编写程序的效率C) 模块化的程序设计是采用自顶向下、逐步细化的原则D) 程序的每个模块都可通过三种基本结构实现参考答案:A13.关于C语言的变量名,以下叙述正确的是A) 变量名不可以与关键字同名B) 变量名不可以与预定义标识符同名C) 变量名必须以字母开头D) 变量名是没有长度限制的参考答案:A14.有以下程序#include <stdio.h>main(){ int a;a = (int)1.99*3;printf("%d\n", a);}程序的运行结果是A) 3B) 5C) 6D) 结果不确定参考答案:A15有以下程序#include <stdio.h>main(){ int k=-17;printf("%d,%o,%x\n", k, 1-k, 1-k);}程序的运行结果是A) -17,22,12B) -17,12,22C) -17,-22,-12D) 17,22,12参考答案:A16.若有定义:int a; float b; double c; ,程序运行时输入:a=1,b=2,c=3 <回车>,能把值1输入给变量a、值2输入给变量b、值3输入给变量c的输入语句是A) scanf("a=%d,b=%f,c=%lf", &a,&b,&c);B) scanf("%d%f%lf", &a,&b,&c);C) scanf("a=%d,b=%lf,c=%lf", &a,&b,&c);D) scanf("a=%d,b=%f,c=%f", &a,&b,&c);参考答案:A17.有以下程序#include <stdio.h>main(){ int a=0,b=0,c=0,d=0;(++a || ++b) ? ++c : ++d;printf("%d,%d,%d,%d\n", a,b,c,d); }程序的运行结果是A) 1,0,1,0B) 1,1,0,1C) 1,0,0,1D) 1,1,1,0参考答案:A18.有以下程序#include <stdio.h>main(){ int a,b;for (a=0; a<3; a++){ scanf("%d", &b);switch(b){ case 1: printf("%d,", b++); case 2: printf("%d,", b++); default: printf("%d,", b++); }}printf("\n");}执行时输入:1 2 3 <回车>,则输出结果是A) 1,2,3,2,3,3,B) 1,2,3,C) 2,3,4,3,4,4,D) 1,1,1,2,2,3参考答案:A19.有以下程序#include <stdio.h>main(){ int a=1,b=1;while(a--)b--;printf("%d,%d\n", a,b);}程序的运行结果是A) -1,0B) 0,0C) -1,-1D) 1,1参考答案:A20.有以下程序#include <stdio.h>{ int a=1, b=0;for(;a<5; a++){ if (a%2==0) break;b += a;}printf("%d \n", b);}程序的运行结果是A) 1B) 10C) 0D) 4参考答案:A21.以下能正确输出字符a 的语句是A) printf("%s", "a");B) printf("%s", 'a');C) printf("%c", "a");D) printf("%d", 'a');参考答案:A22.有以下程序#include <stdio.h>{ char c;do {c=getchar();putchar(c);} while(c != '#');printf("\n");}执行时如输入:abcdefg##<回车> , 则输出结果是A) abcdefg#B) abcdefgC) abcdefg##D) ##参考答案:A23.以下关于C语言函数参数传递方式的叙述正确的是A) 数据只能从实参单向传递给形参B) 数据可以在实参和形参之间双向传递C) 数据只能从形参单向传递给实参D) C语言的函数参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用参考答案:A24以下关于指针的叙述正确是A) 所有类型的指针变量所占内存的大小是一样的B) 指针变量所占内存的大小与其类型有关,char型指针变量只占1个字节,double型指针变量占8个字节C) 指针变量可直接指向任何类型的变量,而不会出现编译或运行错误D) 指针变量既可以直接指向结构体,也可直接指向结构体中某个成员,而不会出现编译或运行错误参考答案:A25.有以下程序#include <stdio.h>int k=5;void f(int *s){ s=&k; }main(){ int m=3,*p=&m;f(p);printf("%d,%d\n", m, *p);}程序的运行结果是A) 3,3B) 5,5C) 3,5D) 5,3参考答案:A26.有以下程序#include <stdio.h>int *f(int *s,int *t){ if (*s < *t)*s=*t;return s;}main(){ int i=3, j=5, *p=&i, *q=&j, *r;r=f(p,q);printf("%d,%d,%d,%d,%d\n", i, j, *p, *q, *r); }程序的运行结果是A) 5,5,5,5,5B) 3,5,5,5,5C) 5,3,3,3,5D) 3,5,3,5,5参考答案:A27.有以下程序#include <stdio.h>#define N 4void fun(int a[][N]){ int b[N][N],i,j;for(i=0; i<N; i++)for(j=0; j<N; j++)b[i][j] = a[N-1-j][i]; for(i=0; i<N; i++)for(j=0; j<N; j++)a[i][j] = b[i][j];}main(){ int x[N][N]={ {1, 2, 3, 4}, {5, 6, 7, 8}, {9,10,11,12}, {13,14,15,16} }, i;fun(x); fun(x);for (i=0;i<N; i++)printf("%d,", x[i][i]); printf("\n");}程序的运行结果是A) 16,11,6,1,B) 1,6,11,16,C) 4,7,10,13,D) 13,10,7,4,参考答案:A28.有以下程序#include <stdio.h>void fun(int a[ ], int n){ int i,j=0,k=n/2, b[10];for (i=n/2-1; i>=0; i--){ b[i] =a[j];b[k] =a[j+1];j+=2; k++;}for (i=0; i<n; i++)a[i] = b[i];}main(){ int c[10]={10,9,8,7,6,5,4,3,2,1},i ; fun(c, 10);for (i=0;i<10; i++)printf("%d,", c[i]);printf("\n");}程序的运行结果是A) 2,4,6,8,10,9,7,5,3,1,B) 10,8,6,4,2,1,3,5,7,9,C) 1,2,3,4,5,6,7,8,9,10,D) 1,3,5,7,9,10,8,6,4,2,参考答案:A29.有以下程序#include <stdio.h>#include <string.h>main(){ int i;char a[]="How are you!"; for (i=0; a[i]; i++)if (a[i] == ' '){ strcpy(a, &a[i+1]); i=0;}printf("%s\n",a);}程序的运行结果是A) you!B) Howareyou!C) areyou!D) are you!参考答案:A30.有以下程序(其中的strstr()函数头部格式为:char *strstr(char *p1, char *p2) 确定p2字符串是否在p1中出现,并返回p2第一次出现的字符串首地址)#include <stdio.h>#include <string.h>char *a="you";char *b="Welcome you to Beijing!";main(){ char *p;p = strstr(b, a) + strlen(a) + 1;printf("%s\n", p);}程序的运行结果是A) to Beijing!B) you to Beijing!C) Welcome you to Beijing!D) Beijing!参考答案:A31有以下程序#include <stdio.h>main(){ char b[4][10]; int i;for (i=0; i<4; i++)scanf("%s", b[i]);printf("%s%s%s%s\n", b[0],b[1],b[2],b[3]);}执行时若输入: Fig flower is red. <回车>则输出结果是A) Figflowerisred.B) Figfloweris red.C) Figflower is red.D) Fig flower is red.参考答案:A32.有以下程序#include <stdio.h>#include <string.h>{ char w[20], a[5][10]={"abcdef", "ghijkl", "mnopq", "rstuv", "wxyz."};int i;for (i=0; i<5; i++)w[i]=a[i][ strlen(a[i]) - 1];w[5]= '\0';puts(w);}程序的运行结果是A) flqv.B) agmrwC) ekpuyD) flqvz参考答案:A33.有以下程序#include <stdio.h>void f(int x[], int n){ if ( n> 1){ f(&x[1], n-1);printf("%d,", x[0]);}printf("%d,", x[0]);}main(){ int z[6] = {1,2,3,4,5,6}; f(z,6); printf("\n"); }程序的运行结果是A) 6,5,4,3,2,1,B) 1,1C) 1,1,1,1,1,1,D) 1,2,3,4,5,6,参考答案:A34.有以下程序#include <stdio.h>int a=2;int f(){ static int n;int m;m=n=0;n++; a++; m++;return n+m+a;}main(){ int k;for (k=0; k<3; k++)printf("%d,", f( ));printf("\n");}程序的运行结果是A) 5,6,7,B) 5,7,9,C) 5,8,11,D) 5,5,5,参考答案:A35.有以下程序#include <stdio.h>#define S(x) x*xmain(){ int k=5, j=2;printf("%d,%d\n", S(k+j+2),S(j+k+2)); }程序的运行结果是A) 21,18B) 81,81C) 21,21D) 18,18参考答案:A36.有以下程序#include <stdio.h>typedef struct stu {char name[10];char gender;int score;} STU;void f(STU *a, STU *b){ *b = *a;printf("%s,%c,%d,", b->name, b->gender, b->score); }main(){ STU a={"Zhao", 'm', 290}, b={"Qian", 'f', 350}; f(&a,&b);printf("%s,%c,%d\n", , b.gender, b.score); }程序的运行结果是A) Zhao,m,290,Zhao,m,290B) Zhao,m,290,Qian,f,350C) Qian,f,350,Qian,f,350D) Qian,f,350,Zhao,m,290参考答案:A37.有以下程序#include <stdio.h>#include <string.h>typedef struct stu {char name[10];char gender;int score;} STU;void f(char *name, char gender, int score){ strcpy(name, "Qian");gender = 'f';score = 350;}main(){ STU a={"Zhao", 'm', 290}, b;b=a;f(,b.gender,b.score);printf("%s,%c,%d,", , a.gender, a.score);printf("%s,%c,%d\n", , b.gender, b.score); }程序的运行结果是A) Zhao,m,290,Qian,m,290B) Zhao,m,290,Zhao,m,290C) Zhao,m,290,Qian,m,350D) Zhao,m,290,Qian,f,350参考答案:A38.若有定义typedef int T[10];T *a[20];则与上述定义完全等价的说明语句是A) int *a[20][10];B) int *a[20];C) int *a[10];D) int *a[10][20];参考答案:A39.有以下程序#include <stdio.h>main(){ int c,d;c= 13&5; d=10&&5;printf("%d,%d\n", c, d);}程序的运行结果是A) 5,1B) 1,1C) 18,1D) 13,1参考答案:A40.有以下程序#include <stdio.h>main(){ FILE *fp;int i, a[6]={1,2,3,4,5,6}, k;fp = fopen("data.dat", "w+b");fwrite(&a[0], sizeof(int), 1, fp);for (i=1; i<6; i++){ fseek(fp, 0L, 0);fread(&k, sizeof(int), 1, fp);fseek(fp, 0L, 0);a[i] +=k;fwrite(&a[i], sizeof(int), 1, fp); }rewind(fp);fread(&k, sizeof(int), 1, fp); fclose(fp);printf("%d\n", k);}程序的运行结果是A) 21B) 6C) 123456D) 11参考答案:A。