全国计算机等级考试二级C语言笔试真题与答案.doc

发布时间 : 星期日 文章全国计算机等级考试二级C语言笔试真题与答案.doc更新完毕开始阅读

2012年9月全国计算机

(1)下列链表种,其逻辑结构属于非线性结构的是 A)循环链表 B)双向链表 C)带链的栈 D)二叉链表

(2)设循环队列的存储空间为Q(1:35),初始状态为front=rear=35,现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为 A)16 B)20 C)0或35 D)15 (3)下列关于栈的叙述中,正确的是

A)栈顶元素一定是最先入栈的元素 B)栈操作遵循先进后出的原则

C)栈底元素一定是最后入栈的元素 D)以上三种说法都不对

(4)在关系数据库中,用来表示实体间联系的是 A)二维表 B)树状结构 C)属性 D)网状结构 (5)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是

A)m:1联系 B)1:m联系 C)1:1联系 D)m:n联系 (6) 有两个关系R和S 如下: (12)C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是

A)预定义标识符(如库函数中的函数名)可用作用标识符,但失去原有含义

B)用户标识符可以由字母和数字任意顺序组成

在标识符中大写字母和小写字母被认为是相同的字符 D)关键字可用作用户标识符,但失去原有含义

(13)以下选项中表示一个合法的常量是(说明:符号?表示空格)

A)9?9?9 B)0Xab C)123E0.2 D)2.7e

14C语言主要是借助以下哪个功能来实现程序模块化 A)定义函数 B)定义常量和外部变量 C)三种基本结构语句 D)丰富的数据类型 (15)以下叙述中错误的是

A)非零的数值类型常量有正直和负值的区分 B)常量是在程序运行过程中值不能被改变的量 C)定义符号常量必须用类型名来设定常量的类型 D)用符号名表示的常量叫符号常量

(16)若有定义和语句:int a,b; scanf(“%d,%d”,&a,&b);以下选项中的输入数据,不能把值3赋给变量a、5赋给变量b的是

A)3,5 B)3,5,4 C)3 ,5 D)3,5 (17)C语言中char类型数据占字节数为

R S A)3 B)4 C)1 D)2

(18)下列关系表达式中,结果为“假”的是

A B C A B C A)(3+4)>6 B)(3!=4)>2 C)3<=4||3 D)(3<4)==1

(20)有以下程序

a 1 2 c 3 1 #include main() b 2 1 { int a=-2,b=0;

while(a++&&++b); c 3 1 printf(\

则由关系R得到关系S的操作是 程序运行后的输出结果是

A)自然连接 B)选择 C)并 D)投影

A)1,3 B)0,2 C)0,3 D)1,2

(7)数据字典(DD)所定义的对象都包含于

(21)设有定义:int x=0,*p; ,立刻执行以下语句,正确

A)程序流程图 B)数据流图(DFD图) C)方框图 D)

的语句是

软件结构图

A)p=x; B)*p=x; C)p=NULL; D)*p=NULL;

(8)软件需求规格说明书的作用不包括

(22)下列叙述中正确的是

A)软件可行性研究的依据 B)用户与开发人员对软件

A)可以用关系运算符比较字符串的大小

要做什么的共同理解

B)空字符串不占用内存,其内存空间大小是0

C)软件验收的依据 D)软件设计的依据

C)两个连续的单引号是合法的字符常量

(9)下面属于黑盒测试方法的是

D)两个连续的双引号是合法的字符串常量

A逻辑覆盖 B)语句覆盖 C)路径覆盖 D)边界值分析

(23)有以下程序

(10)下面不属于软件设计阶段任务的是

#include

A)数据库设计 B)算法设计

main()

C)软件总体设计 D)制定软件确认测试计划

{ char a='H';

(11)以下叙述中正确的是

a=(a>='A'&&a<='Z')?(a-'A'+'a'):a;

A在C语言程序中,main函数必须放在其他函数的最前

printf(\

程序运行后的输出结果是

B)每个后缀为.C的C语言源程序都可以单独进行编译

A)A B)a C)H D)h

C在C语言程序中,只有main函数才可单独进行编译

(24)有以下程序

D每个后缀为.C地点C语言源程序都应该包含一个main

#include

函数

int f(int x);

main() { int a,b=0;

for(a=0;a<3;a++)

{b=b+f(a); putchar('A'+b);}} int f(int x)

{return x*x+1;}

程序运行后的输出结果是

A)ABE B)BDI C)BCF D)BCD

(25)设有定义:int x[2][3];,则以下关于二维数组x的叙述错误的是

A)x[0]可看作是由3个整型元素组成的一维数组 B)x[0]和x[1]是数组名,分别代表不同的地址常量 C)数组x包含6个元素

D)可以用语句x[0]=0;为数组所有元素赋初值0

(26)设变量p是指针变量,语句p=NULL;是给指针变量赋NULL值,它等价于

A)p= \)p= '0'; C)p=0; D)p= ''; (27)有以下程序 #include main()

{int a[]={10,20,30,40},*p=a,i; for(i=0;i<=3;i++){a[i]=*p;p++;} printf(\

程序运行后的输出结果是

A)30 B)40 C)10 D)20 (28)有以下程序 #include #define N 3

void fun(int a[][N],int b[]) { int i,j;

for(i=0;i

if(b[i]

{ int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i; fun(x,y);

for(i=0;i

程序运行后的输出结果是

A)2,4,8, B)3,6,9, C)3,5,7, D)1,3,5, (29)有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数) #include #include main()

{ char a[10]=\ strcpy(a+1,b+2); puts(strcat(a,c+1));}

程序运行后的输出结果是

A)a12cyz B)12yz C)a2yz D)bc2yz (30)以下选项中,合法的是

A)char str3[]={'d', 'e', 'b', 'u', 'g', '\\0', }; B)char str4; str4=\ C)char name[10]; name=\

D)char str[5]= \ (31)有以下程序 #include main()

{ char *s=\ while(s[k+1]!='\\0') { k++;

if(k%2==0){a=a+(s[k]-'0'+1);continue;} a=a+(s[k]-'0'); }

printf(\ 程序运行后的输出结果是 A)k=6 a=11 B)k=3 a=14 C)k=3 a=12 D)k=5 a=15

(32)有以下程序 #include main()

{ char a[5][10]={\ int i,j; char t;

for(i=0;i<4;i++) for(j=i+1;j<5;j++) if(a[i][0]>a[j][0])

{t=a[i][0]; a[i][0]=a[j][0]; a[j][0]=t;} puts(a[1]);}

程序运行后的输出结果是

A)fwo B)fix C)two D)owo (33)有以下程序 #include int a=1,b=2;

void fun1(int a,int b) {printf(\ void fun2() {a=3;b=4;} mian()

{ fun1(5,6);fun2();

printf(\ 程序运行后的输出结果是

A)1 2 5 6 B)5 6 3 4 C)5 6 1 2 D)3 4 5 6 (34)有以下程序 #include void func(int n) { static int num=1;

num=num+n; printf(\ main()

{func(3); func(4); printf(\ 程序运行后的输出结果是

A)4 8 B)3 4 C)3 5 D)4 5 (35)有以下程序 #include #include

void fun(int *p1,int *p2,int *s)

{ s=(int*)malloc(sizeof(int)); *s=*p1+*p2; free(s);} main()

{ int a=1,b=40,*q=&a; fun(&a,&b,q); printf(\ }

程序运行后的输出结果

A)42 B)0 C)1 D)41 (36)有以下程序 void f(struct STU a[])

{ struct STU b={\ a[1]=b;} main()

{ struct STU c[2]={{\ f(c);

printf(\].score[1]);

printf(\1].score[1]);}

程序运行后的输出结果是

A)Zhao,m,85,90,Sun,m,98,99 B)Zhao,m,85,90,Qian,f,95,92 C)Qian,f,95,92,Sun,m,98,99 D)Qian,f,95,92,Zhao,m,85,90 (37)以下叙述中错误的是

A)可以用typedef说明的新类型名来定义变量

B)typedef说明的新类型名必须使用大写字母,否则会出编译错误

C)用typedef可以为基本数据类型说明一个新名称 D)用typedef说明新类型的作用是用一个新的标识符来代表已存在的类型名

(38)以下叙述中错误的是

A)函数的返回值类型不能是结构体类型,只能是简单类型

B)函数可以返回指向结构体变量的指针

C)可以通过指向结构体变量的指针访问所指结构体变量的任何成员

D)只要类型相同,结构体变量之间可以整体赋值

(39)若有定义语句int b=2;则表达式(b<<2)/(3||b)的值是 A)4 B)8 C)0 D)2 (40)有以下程序 #include main()

{ FILE *fp;int i,a[6]={1,2,3,4,5,6}; fp=fopen(\

for(i=0;i<6;i++) fprintf(fp,\ rewind(fp);

for(i=0;i<6;i++) fscanf(fp,\ fclose(fp);

for(i=0;i<6;i++) printf(\ 程序运行后的输出结果是 A)4,5,6,1,2,3, B)1,2,3,3,2,1, C)1,2,3,4,5,6, D)6,5,4,3,2,1,

二、填空题(每空2分,共30分)

(1)一棵二叉树共有47个结点,其中有23个度为2的结点,假设根结点在底1层,则该二叉树的深度为【1】 。 (2)设栈的存储空间为S(1:40),初始状态为bottom=0,top=0,现经过一系列入栈与出栈运算后,top=20,则当前栈中有【2】个元素。

(3)数据独立性分为逻辑独立性和物理独立性。当总体逻辑结构改变时,其局部逻辑结构可以不变,从而根据局部逻辑结构编写的应用程序不必修改,称为【3】 。 (4)关系数据库中能实现的专门关系运算包括【4】、连接和投影。

(5软件按功能通常可以分为应用软件、系统软件和支撑软件(或工具软件),Unix操作系统属于【5】软件。 (6)请写出与!(a<=b)等价的C语言表达式【6】。

(7)以下程序运行时从键盘输入:1.0 2.0,输出结果是:1.000000 2.000000,请填空。 #include main()

{ double a;float b;

scanf(\【7】 \ (8)有以下程序 #include main()

{int n1=0,n2=0,n3=0; while(ch=getchar()!='!') switch(ch)

{case '1':case'3';n1++;break; case '2':case'4';n2++;break; default : n3++;break; }}

若程序运行时输入01234567!<回车>,则输出结果是【8】。 (9)有以下程序 #include main()

{int i,sum=0;

for(j=1;j<9;i+=2) sum+=i; printf(\ }

程序运行后的输出结果是【9】。 (10)有以下程序 #include main()

{ int d,n=1234; while(n!=0)

{d=n;n=n/10;printf(\ }

程序运行后的输出结果是【10】。 (11)有以下程序 #include int k=7;

int *st(int *a) {int *c=&k;

if(*a>*c) c=a; return c; }

main()

{ int i=3,*p=&i,*r;

r=st(p); printf(\ }

程序运行后的输出结果是【11】。 (12)以下程序的输出结果是【12】。 #include #define N 3

#define M(n) (N+1)*n main() { int x;

x=2*(N+M(2)); printf(\ }

(13)若有定义语句:char str[]=\,则字符串str在内存中实际占【13】字节。 (14)有以下程序 #include int fun(int n)

{ if(n==0)return(1); return(fun(n-1)*n); }

main() { int t;

t=fun(3); printf(\ }

程序运行后的输出结果是【14】。

参考答案:(答案已对照修改为正确顺序) 一、选择题

1-5 C C B B A 6-10 B B A D D 11-15 B A B A C 16-20 C C B D D 21-25 B D D B D 26-30 C A B C A 31-35 C A B A D 36-40 D B A B D 二、填空题

1、6 2、20 3、逻辑独立 4、选择 5、系统 6、a>b 7、%lf%f 8、224 9、16 10、4321 11、7 12、22 13、2 14、6 15、p=p>next

2011 年 3 月计算机等级考试二级

(3)某二叉树共有 7 个结点,其中叶子结点只有 1 个,则该二叉树的深度为(假设根结点在第 1 层) A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档是 A)软件集成测试计划 B)软件详细设计说明书 C)用户手册 D)软件需求规格说明书 (5)结构化程序所要求的基本结构不包括 A)顺序结构 B)GOTO 跳转

C)选择(分支)结构 D)重复(循环)结构 (1)下列关于栈叙述正确的是 A)栈顶元素最先能被删除 B)栈顶元素最后才能被删除 C)栈底元素永远不能被删除 D)以上三种说法都不对 (2)下列叙述中正确的是

A)有一个以上根结点的数据结构不一定是非线性结构 B)只有一个根结点的数据结构不一定是线性结构 C)循环链表是非线性结构 D)双向链表是非线性结构 (6)下面描述中错误的是

A)系统总体结构图支持软件系统的详细设计 B)软件设计是将软件需求转换为软件表示的过程 C)数据结构与数据库设计是软件设计的任务之一 D)PAD 图是软件详细设计的表示工具

(7)负责数据库中查询操作的数据库语言是 A)数据定义语言 B)数据管理语言 C)数据操纵语言 D)数据控制语言

(8)一个教师可讲授多门课程,一门课程可由多个教师讲授。则实体教师和课程间的联系是 A)1:1 联系 B)1:m 联系 C)m:1 联系 D)m:n 联系

(10)定义无符号整数类为 UInt,下面可以作为类 UInt 实例化值的是

A)-369 B)369 C)0.369 D)整数集合{1,2,3,4,5}

(11)计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是 A)C 语言程序仅可以编译执行 B)C 语言程序仅可以解释执行

C)C 语言程序既可以编译执行又可以解释执行 D)以上说法都不对

(12)以下叙述中错误的是

A)C 语言的可执行程序是由一系列机器指令构成的 B)用 C 语言编写的源程序不能直接在计算机上运行 通过编译得到的二进制目标程序需要连接才可以运行 D)在没有安装 C 语言集成开发环境的机器上不能运行C 源程序生成的.exe文件

(13)以下选项中不能用作 C 程序合法常量的是 A)1,234 B)'123' C)123 D)\

(14)以下选项中可用作 C 程序合法实数的是 A).1e0 B)3.0e0.2 C)E9 D)9.12E

(15)若有定义语句:int a=3,b=2,c=1;,以下选项中错误的赋值表达式是

A)a=(b=4)=3; B)a=b=c+1;C)a=(b=4)+c; D)a=1+(b=c=4); (16)有以下程序段 char name[20]; int num;

scanf(\ num=%d\

当执行上述程序段,并从键盘输入: name=Lili num=1001<回车>后,name的值为 A)Lili B)name=Lili

C)Lili num= D)name=Lili num=1001

(17)if 语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是

联系合同范文客服:xxxxx#qq.com(#替换为@)