c语言二级考试题及答案

c语言二级考试题及答案,第1张

2011年3月全国计算机等级考试二级笔试试卷

C语言程序设计

(考试时间90分钟,满分100分)

一、 选择题(1-10,21-40每题2分,11-20每题1分,共70分)

(1)下列关于栈叙述正确的是

A)栈顶元素最先能被删除

B)栈顶元素最后才能被删除

C)栈底元素永远不能被删除

D)以上三种说法都不对

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

A)有一个以上根结点的数据结构不一定是非线性结构

B)只有一个根结点的数据结构不一定是线性结构

C)循环链表是非线性结构

D)双向链表是非线性结构

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

A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档是

A)软件集成测试计划 B)软件详细设计说明书

C)用户手册 D)软件需求规格说明书

(5)结构化程序所要求的基本结构不包括

A)顺序结构 B)GOTO跳转

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联系

(9)有三个关系R、S和T如下:

则由关系R和S得到关系T的 *** 作是

A)自然连接 B)交 C)除 D)并

(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语言编写的源程序不能直接在计算机上运行

C)通过编译得到的二进制目标程序需要连接才可以运行

D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

(13)以下选项中不能用作C程序合法常量的是

A)1,234 B)'123'

C)123 D)"\x7G"

(14)以下选项中可用作C程序合法实数的是

A).1e0 B)3.0e0.2

C)E9 D)9.12E

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

A)a=(b=4)=3B)a=b=c+1

C)a=(b=4)+cD)a=1+(b=c=4)

(16)有以下程序段

char name[20]

int num

scanf("name=%s num=%d",name&num)

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

A)Lili B)name=LiliC)Lili num= D)name=Lili num=1001

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

A)必须是逻辑值 B)必须是整数值

C)必须是正数 D)可以是任意合法的数值

(18)有以下程序

#include

main()

{ int x=011

printf("%d\n",++x)

}

程序运行后的输出结果是

A)12 B)11 C)10 D)9

 

(19)有以下程序

#include

main()

{ int s

scanf("%d",&s)

while(s>0)

{ switch(s)

{ case1:printf("%d",s+5)

case2:printf("%d",s+4)break

case3:printf("%d",s+3)

default:printf("%d",s+1)break

}

scanf("%d",&s)

}

}

运行时,若输入1 2 3 4 5 0<回车>,则输出结果是

A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段

int i,n

for(i=0i<8i++)

{ n=rand()%5

switch (n)

{ case 1:

case 3:printf("%d\n",n)break

case 2:

case 4:printf("%d\n",n)continue

case 0:exit(0)

}

printf("%d\n",n)

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次 B)当产生的随机数n为4时结束循环 *** 作

C)当产生的随机数n为1和2时不做任何 *** 作D)当产生的随机数n为0时结束程序运行

 

(21)有以下程序

#include

main()

{ char s[]="012xy\08s34f4w2"

int i,n=0

for(i=0s[i]!=0i++)

if(s[i]>='0'&&s[i]<='9') n++

printf("%d\n",n)

}

程序运行后的输出结果是

A)0 B)3 C)7 D)8

(22)若i和k都是int类型变量,有以下for语句

for(i=0,k=-1k=1k++) printf("*****\n")

下面关于语句执行情况的叙述中正确的是

A)循环体执行两次B)循环体执行一次C)循环体一次也不执行D)构成无限循环

(23)有以下程序

#include

main()

{ char b,cint i

b='a'c='A'

for(i=0i<6i++)

{ if(i%2) putchar(i+b)

else putchar(i+c)

} printf("\n")

}

程序运行后的输出结果是

A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)设有定义:doublex[10],*p=x,以下能给数组x下标为6的元素读入数据的正确语句是

A)scanf("%f",&x[6])B)scanf("%lf",*(x+6))

C)scanf("%lf",p+6)D)scanf("%lf",p[6])

(25)有以下程序(说明:字母A的ASCII码值是65)

#include

void fun(char *s)

{ while(*s)

{ if(*s%2) printf("%c",*s)

s++

}

}

main()

{ char a[]="BYTE"

fun(a)printf("\n")

}

程序运行后的输出结果是

A) BY B) BT C)YT D) YE

(26)有以下程序段

#include

main()

{ …

while( getchar()!='\n')

}

以下叙述中正确的是

A)此while语句将无限循环

B) getchar()不可以出现在while语句的条件表达式中

C)当执行此while语句时,只有按回车键程序才能继续执行

D)当执行此while语句时,按任意键程序就能继续执行

(27)有以下程序

#include

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)3 B)2 C)1 D) 0

(28)若有定义语句:chars[3][10],(*k)[3],*p,则以下赋值语句正确的是

A)p=sB)p=kC)p=s[0]D)k=s

(29)有以下程序

#include

void fun(char *c)

{ while(*c)

{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A')

c++

}

}

main()

{ char s[81]

gets(s)fun(s)puts(s):

}

当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是

A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#include

#define N 10

void fun(int x[N])

{ int i=0

while(i<>

}

在程序中下划线处应填入的是

A)x+i B)&x[i+1]C)x+(i++) D)&x[++i]

(31)有以下程序

#include

main()

{ char a[30],b[30]

scanf("%s",a)

gets(b)

printf("%s\n %s\n",a,b)

}

程序运行时若输入:

how are you? I am fine<回车>

则输出结果是

A)how are you? B)how I am fine are you? I am fine

C)how are you? I am fine D)row are you?

(32)设有如下函数定义

int fun(int k)

{ if (k<1) return 0

else if(k==1) return 1

else return fun(k-1)+1

}

若执行调用语句:n=fun(3),则函数fun总共被调用的次数是

A)2 B)3 C)4 D)5

(33)有以下程序

#include

int fun (int x,int y)

{ if (x!=y) return ((x+y)2)

else return (x)

}

main()

{ int a=4,b=5,c=6

printf("%d\n",fun(2*a,fun(b,c)))

}

程序运行后的输出结果是 A)3 B)6 C)8 D)12

(34)有以下程序

#include

int fun()

{ static int x=1

x*=2

return x

}

main()

{ int i,s=1

for(i=1i<=3i++) s*=fun()

printf("%d\n",s)

}

程序运行后的输出结果是 A)0 B)10 C)30 D)64

(35)有以下程序

#include

#define S(x) 4*(x)*x+1

main()

{ int k=5,j=2

printf("%d\n",S(k+j))

}

程序运行后的输出结果是A)197 B)143 C)33 D)28

(36)设有定义:struct {charmark[12]int num1double num2} t1,t2,若变量均已正确赋初值,则以下语句中错误的是

A)t1=t2B)t2.num1=t1.num1C)t2.mark=t1.markD)t2.num2=t1.num2

(37)有以下程序

#include

struct ord

{ int x,y}dt[2]={1,2,3,4}

main()

{

struct ord *p=dt

printf("%d,",++(p->x))printf("%d\n",++(p->y))

}

程序运行后的输出结果是 A)1,2 B)4,1 C)3,4 D)2,3

(38)有以下程序

#include

struct S

{ int a,b}data[2]={10,100,20,200}

main()

{ struct S p=data[1]

printf("%d\n",++(p.a))

}

程序运行后的输出结果是 A)10 B)11 C)20 D)21

(39)有以下程序

#include

main()

{ unsigned char a=8,c

c=a>>3

printf("%d\n",c)

}

程序运行后的输出结果是 A)32 B)16 C)1 D)0

(40)设fp已定义,执行语句fp=fopen("file","w")后,以下针对文本文件file *** 作叙述的选项中正确的是

A)写 *** 作结束后可以从头开始读 B)只能写不能读

C)可以在原有内容后追加写 D)可以随意读和写

二、填空题

(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为【3】 测试

(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】 是关系A的外码。

(6)以下程序运行后的输出结果是 【6】。

#include

main()

{ int a

a=(int)((double)(3/2)+0.5+(int)1.99*2)

printf("%d\n",a)

}

(7)有以下程序

#include

main()

{ int x

scanf("%d",&x)

if(x>15) printf("%d",x-5)

if(x>10) printf("%d",x)

if(x>5) printf("%d\n",x+5)

}

若程序运行时从键盘输入12<回车>,则输出结果为 【7】 。

(8)有以下程序(说明:字符0的ASCII码值为48)

#include

main()

{ char c1,c2

scanf("%d",&c1)

c2=c1+9

printf("%c%c\n",c1,c2)

}

若程序运行时从键盘输入48<回车>,则输出结果为 【8】 。

(9)有以下函数

void prt(char ch,int n)

{ int i

for(i=1i<=ni++)

printf(i%6!=0?"%c":"%c\n",ch)

}

执行调用语句prt('*',24)后,函数共输出了 【9】 行*号。

(10)以下程序运行后的输出结果是 【10】。

#include

main()

{ int x=10,y=20,t=0

if(x==y)t=xx=yy=t

printf("%d %d\n",x,y)

}

(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。

void fun(int a[N],int k)

{ int i

for(i=ki

}

(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。

#include

【12】

main()

{ double x,y,(*p)()

scanf("%lf%lf",&x,&y)

p=avg

printf("%f\n",(*p)(x,y))

}

double avg(double a,double b)

{ return((a+b)/2)}

(13)以下程序运行后的输出结果是 【13】。

#include

main()

{ int i,n[5]={0}

for(i=1i<=4i++)

{ n[i]==n[i-1]*2+1printf("%d",n[i])}

printf("\n")

}

(14)以下程序运行后的输出结果是 【14】。

#include

#include

#include

main()

{ char *pint i

p=(char *)malloc(sizeof(char)*20)

strcpy(p,"welcome")

for(i=6i>=0i--) putchar(*(p+i))

printf("\n-")free(p)

}

(15)以下程序运行后的输出结果是 【15】。

#include

main()

{ FILE *fpint x[6]={1,2,3,4,5,6},i

fp=fopen("test.dat","wb")

fwrite(x,sizeof(int),3,fp)

rewind(fp)

fread(x,sizeof(int),3,fp)

for(i=0i<6i++) printf("%d",x[i])

printf("\n")

fclose(fp)

}

2011年3月全国计算机等级考试二级笔试试卷

C语言程序设计答案

一.选择题1-5 ABDDB

6-10 ACDCB 11-15 ADBAA

16-20 ADCAD 21-25 BDBCD

26-30 CDCCC 31-35 BBBDB

36-40 CDDCB

二,填空题

1) 顺序 2) DEBFCA 3) 单元测试 4) 主键 5) D 6) 3 7) 1217

8) 09 9) 4 10) 20 0 11) i-1 12) double avg(doublea,double b) 13) 13715

14) e(E)moclew 15) 123456

2010年9月全国计算机等级考试二级C笔试试卷答案

一、选择题

1~5: BCDAA 6~10:DDCCA 11~15:CBBAD 16~20: DAACB

21~25: BCBDC 26~30 :CBDDA 31~35:ACBCD36~40 :BACBD

二、填空

1.1DCBA23452.n-1 3.25 4.结构化 5.物理设计6.2008

7.15 8.非0 9. 1 4 13 4010.i11.2

12.a[row][col]13.3 14.*s 15.FILE

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

一、选择题

(1)下列关于栈叙述正确的是

A) 栈顶元素最先能被删除

B)栈顶元素最后才能被删除

C)栈底元素永远不能被删除

D)以上三种说法都不对

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

A)有一个以上根结点的数据结构不一定是非线性结构

B)只有一个根结点的数据结构不一定是线性结构

C)循环链表是非线性结构

D)双向链表是非线性结构

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

A)3

B)4

C)6

D)7

(4)在软件开发中,需求分析阶段产生的主要文档是

A)软件集成测试计划

B)软件详细设计说明书

C) 用户手册

D)软件需求规格说明书

(5)结构化程序所要求的基本结构不包括

A)顺序结构

B)GOTO跳转

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联系

(9)有三个关系R、S和T如下:

则由关系R和S得到关系T的 *** 作是

A)自然连接

B)交

C)除

D)并

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

A)-369

B)369

C)0.369

D)整数集合{1,2,3,4,5}

(11)在建立数据库表时给该表指定了主索引,该索引实现了数据完整性中的

A)参照完整性

B)实体完整性

C)域完整性

D)用户定义完整性

(12)执行如下命令的输出结果是

?15%4,15%-4

A)3 -1

B)3 3

C)1 1

D)1 -1

(13)在数据库表中,要求指定字段或表达式不出现重复值,应该建立的索引是

A)惟一索引

B)惟一索引和候选索引

C)惟一索引和主索引

D)主索引和候选索引

(14)给student表增加一个“平均戍绩”字段(数值型,总宽度6} 2位小数)的SQL命令是

A)ALTER TABLE studeni ADD平均成绩N(b,2)

B)ALTER TABLE student ADD平均成绩D(6,2)

C)ALTER TABLE student ADD平均成绩E(6,2)

D)ALTER TABLE student ADD平均成绩Y(6,2)

(15)在Visual FoxPro中,执行SQL的DELETE命令和传统的FoxPro DELETE命令都可以删除数据库表中的记录,下面正确的描述是

A)SQL的DELETE命令删除数据库表中的记录之前,不需要先用USE命令打开表

B)SQL的DELETE命令和传统的FoxPro DELETE命令删除数据库表中的记录之前, 都需要先用命令USE打开表

C)SQL的DELETE命令可以物理地删除数据库表中的记录,而传统的FoxPro DELETE 命令只能逻辑删除数据库表中的记录

D)传统的FoxPro DELETE命令还可以删除其它工作区中打开的数据库表中的记录

(16)在Visual FoxPro中,如果希望跳出SCAN…ENDSCAN循环语句、执行ENDSCAN后面的语句,应使用

A)LOOP语句

B)EXIT语句

C)BREAK语句

D)RETURN语句

(17)在Visual FoxPro中,“表”通常是指

A)表单

B)报表

C)关系数据库中的关系

D)以上都不对

(18)删除student表的“平均成绩”字段的正确SQL命令是

A)DELETE TABLE student DELETE COLUMN平均成绩

B)ALTER TABLE student DELETE COLUMN平均成绩

C)ALTER TABLE student DROP COLUMN平均成绩

D)DELETE TABLE student DROP COLUMN平均成绩

(19)在Visual FoxPro中,关于视图的正确描述是

A)视图也称作窗口

B)视图是一个预先定义好的SQL SELECT语句文件

C)视图是一种用SQL SELECT语句定义的虚拟表

D)视图是一个存储数据的特殊表

(20)从student表删除年龄大于30的记录的正确SQL命令是

A)DELETE FOR年龄>30

B)DELETE FROM student WHERE年龄>30

C)DEL ETE student FOP年龄>30

D)DELETE student WF IERE年龄>30

(21)在Vaual FoxPro中,使用LOCATL FOR }expL>命令按条件查找记录,当查找到满足条件的第一条记录后,如果还需要查找下一条满足条件的记录,应该

A)再次使用LOCATE命令重新查询

B)使用SKIP命令

C)使用CONTINUE命令

D)使用GO命令

(22)为了在报表中打印当前时间,应该插入的控件是

A)文本框控件

B)表达式

C)标签控件

D)域控件

(23)在Visual FoxPro中,假设student表中有40条记录,执行下面的命令后,屏幕显示的结果是

?RECCOUNT()

A)0

B)1

C)40

D)出错

(24)向student表插入一条新记录的正确SQL语句是

A)APPEND INTO student VALUES(’0401’,’王芳’,’女’,18)

B)APPEND student VALUES(’0401’,’王芳’,’女’,18):

C)INSERT INTO student VALUES(’0401’,’王芳’,’女’,18)

D)INSERT student VALUES(’0401’,’王芳’,’女’,18)

(25)在一个空的表单中添加一个选项按钮组控件,该控件可能的默认名称是

A)Optiongroup 1

B)Checkl

C)Spinnerl

D)Listl

(26)恢复系统默认菜单的命令是

A)SET MENU TO DEFAULT

B)SET SYSMENU TO DEFAULT

C)SET SYSTEM MENU TO DEFAULT

D)SET SYSTEM TO DEFAULT

(27)在Visual F’oxPro中,用于设置表单标题的属性是

A)Text

B)Title

C)Lable

D)Caption

(28)消除SQL SELECT查询结果中的重复记录,可采取的方法是

A)通过指定主关键字

B)通过指定惟一索引

C)使用DISTINCT短语

D)使用UNIQUE短语

(29)在设计界面时,为提供多选功能,通常使用的控件是

A)选项按钮组

B)一组复选框

C)编辑框

D)命令按钮组

(30)为了使表单界面中的控件不可用,需将控件的某个属性设置为假,该属性是

A)Default

B)Enabled

C)Use

D)Enuse

第(31)-(35)题使用如下三个数据库表:

学生表:student(学号,姓名,性别,出生日期,院系)

课程表:course(课程号,课程名,学时)

选课成绩表:score(学号,课程号,成绩)

其中出生日期的数据类型为日期型,学时和成绩为数值型,其它均为字符型。

(31)查询“计算机系”学生的学号、姓名、学生所选课程的课程名和成绩,正确的命令是

A)SELECT s.学号,姓名,课程名,成绩

FROM student s, score sc, course c

WHERE s.学号= sc.学号,sc.课程号=c.课程号,院系=’计算机系’

B)SELECT学号,姓名,课程名,成绩

FROM student s, score sc, course c

WHERE s.学号=sc.学号AND sc.课程号=c.课程号AND院系=’计算机系’

C)SELECT s.学号,姓名,课程名,成绩

FROM(student s JOIN score sc ON s.学号=sc.学号).

JOIN course cON sc.课程号=c.课程号

WHERE院系=’计算机系’

D)SELECT学号,姓名,课程名,成绩

FROM(student s JOIN score sc ON s.学号=sc.学号)

JOIN course c ON sc.课程号=c.课程号

WHERE院系=’计算机系’

(32)查询所修课程成绩都大于等于85分的学生的学号和姓名,正确的命令是

A)SELECT学号,姓名FROM student s WHERE NOT EXISTS

(SELECT*FROM score sc WHERE sc.学号=s.学号AND成绩<85)

B)SELECT学号,姓名FROM student s WHERE NOT EXISTS

(SELECT * FROM score sc WHERE sc.学号=s.学号AND成绩>= 85)

C)SELECT学号,姓名FROM student s,score sc

WHERE s.学号=sc.学号AND成绩>= 85

D)SELECT学号,姓名FROM student s,score sc

WHEkE s.学号=sc.学号AND ALL成绩>=85

(33)查询选修课程在5门以上(含5门)的学生的学号、姓名和平均成绩,并按平均成

绩降序排序,正确的命令是

A)SELECT s.学号,姓名,平均成绩FROM student s,score sc

WHEREs.学号=sc.学号

GROUP BY s.学号HAVING COUNT(*)>=5 ORDER BY平均成绩DESC

B)SELECT学号,姓名,AVG(成绩)FROM student s,score sc

WHERE s.学号=sc.学号AND COUNT(*)>=5

GROUP BY学号ORDER BY 3 DESC

C)SELECT s.学号,姓名,AVG(成绩)平均成绩FROM student s,score sc

WHERE s.学号=sc.学号AND COUNT(*)>= 5

GROUP BY s.学号ORDER BY平均成绩DESC

D)SELECT s.学号,姓名,AVG(成绩)平均成绩FROM student s,score sc

WHERE s.学号=sc.学号

GROUP BY s.学号HAVING COUNT(*)>=5 ORDER BY 3 DESC

(34)查询同时选修课程号为C1和C5课程的学生的学号,正确的命令是

A)SELECT学号FROM score sc WHERE课程号=’C 1’AND学号IN

(SELECT学号FROM score sc WHERE课程号=’C5’)

B)SELECT学号FROM score sc WHERE课程号=’C1’AND学号=

(SELECT学号FROM score sc WHERE课程号=’C5’}

C)SELECT学号FROM score sc WHERE课程号=’C 1’ AND课程号=’C5’

D)SELECT学号FROM score sc WHERE课程号=’C 1’OR ’C5’

(35)删除学号为“20091001”且课程号为“C1”的选课记录,正确命令是

A)DELETE FROM score WHERE课程号=’C 1’AND学号=’20091001’

B)DELETE FROM score WHERE课程号=’C 1’OR学号=’20091001’

C)DELETE FORM score WHERE课程号=’C 1’AND学号=’20091001’

D)DELETE score WHERE课程号=’C 1’AND学号=’20091001’

二、填空题

(1)有序线性表能进行二分查找的前提是该线性表必须是存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF则后序遍历结果为。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为测试。

(4)实体完整性约束要求关系数据库中元组的属性值不能为空。

(5)在关系A(S, SN, D)和关系B(D,CN, NM)中,A的主关键字是S, B的主关键字是D,则称是关系A的外码。

(6)表达式EMPTY(.NULL.)的值是。

(7)假设当前表、当前记录的“科目”字段值为“计算机”(字符型),在命令窗口输入如下命令将显示结果。

m=科目-“考试”

?m

(8)在Visual FoxPro中假设有查询文件queryl.qpr,要执行该文件应使用命令。

(9)SQL语句“SELECT TOP 10 PERCENT*FROM订单ORDER BY金额DESC”的查询结果是订单中金额的10%的订单信息。

(10)在表单设计中,关键字表示当前对象所在的表单。

(11)使用SQL的CREATE TABLE语句建立数据库表时,为了说明主关键字应该使用关键词KEY。

(12)在Visual FoxPro中,要想将日期型或日期时间型数据中的年份用4位数字显示,应当使用SET CENTURY命令进行设置。

(13)在建立表间一对多的永久联系时,主表的索引类型必须是。

(14)为将一个表单定义为顶层表单,需要设置的属性是。

(15)在使用报表向导创建报表时,如果数据源包括父表和子表,应该选取报表向导。

2011年3月计算机二级c真题

一、 选择题

(1)下列关于栈叙述正确的是

A)栈顶元素最先能被删除

B)栈顶元素最后才能被删除

C)栈底元素永远不能被删除

D)以上三种说法都不对

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

A)有一个以上根结点的数据结构不一定是非线性结构

B)只有一个根结点的数据结构不一定是线性结构

C)循环链表是非线性结构

D)双向链表是非线性结构

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

A)3 B)4 C)6 D)7

(4)在软件开发中,需求分析阶段产生的主要文档是

A)软件集成测试计划 B)软件详细设计说明书

C)用户手册 D)软件需求规格说明书

(5)结构化程序所要求的基本结构不包括

A)顺序结构 B)GOTO跳转

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联系

(9)有三个关系R、S和T如下:

则由关系R和S得到关系T的 *** 作是

A)自然连接 B)交 C)除 D)并

(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语言编写的源程序不能直接在计算机上运行

C)通过编译得到的二进制目标程序需要连接才可以运行

D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件

> (13)以下选项中不能用作C程序合法常量的是

A)1,234 B)'123'

C)123 D)"\x7G"

(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)=3B)a=b=c+1

C)a=(b=4)+cD)a=1+(b=c=4)

(16)有以下程序段

char name[20]

int num

scanf("name=%s num=%d",name&num)

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

A)Lili

B)name=Lili

C)Lili num=

D)name=Lili num=1001

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

A)必须是逻辑值 B)必须是整数值

C)必须是正数 D)可以是任意合法的数值

(18)有以下程序

#include

main()

{ int x=011

printf("%d\n",++x)

}

程序运行后的输出结果是

A)12 B)11 C)10 D)9

(19)有以下程序

#include

main()

{ int s

scanf("%d",&s)

while(s>0)

{ switch(s)

{ case1:printf("%d",s+5)

case2:printf("%d",s+4)break

case3:printf("%d",s+3)

default:printf("%d",s+1)break

}

scanf("%d",&s)

}

}

运行时,若输入1 2 3 4 5 0<回车>,则输出结果是

A)6566456 B)66656 C)66666 D)6666656

(20)有以下程序段

int i,n

for(i=0i<8i++)

{ n=rand()%5

switch (n)

{ case 1:

case 3:printf("%d\n",n)break

case 2:

case 4:printf("%d\n",n)continue

case 0:exit(0)

}

printf("%d\n",n)

}

以下关于程序段执行情况的叙述,正确的是

A)for循环语句固定执行8次

B)当产生的随机数n为4时结束循环 *** 作

C)当产生的随机数n为1和2时不做任何 *** 作

D)当产生的随机数n为0时结束程序运行

(21)有以下程序

#include

main()

{ char s[]="012xy\08s34f4w2"

int i,n=0

for(i=0s[i]!=0i++)

if(s[i]>='0'&&s[i]<='9') n++

printf("%d\n",n)

}

程序运行后的输出结果是

A)0 B)3 C)7 D)8

(22)若i和k都是int类型变量,有以下for语句

for(i=0,k=-1k=1k++) printf("*****\n")

下面关于语句执行情况的叙述中正确的是

A)循环体执行两次

B)循环体执行一次

C)循环体一次也不执行

D)构成无限循环

(23)有以下程序

#include

main()

{ char b,cint i

b='a'c='A'

for(i=0i<6i++)

{ if(i%2) putchar(i+b)

else putchar(i+c)

} printf("\n")

}

程序运行后的输出结果是

A)ABCDEF B)AbCdEf C)aBcDeF D)abcdef

(24)设有定义:double x[10],*p=x,以下能给数组x下标为6的元素读入数据的正确语句是

A)scanf("%f",&x[6])B)scanf("%lf",*(x+6))

C)scanf("%lf",p+6)D)scanf("%lf",p[6])

(25)有以下程序(说明:字母A的ASCII码值是65)

#include

void fun(char *s)

{ while(*s)

{ if(*s%2) printf("%c",*s)

s++

}

}

main()

{ char a[]="BYTE"

fun(a)printf("\n")

}

程序运行后的输出结果是

A)BY B)BT C)YT D) YE

(26)有以下程序段

#include

main()

{ …

while( getchar()

!='\n')

}

以下叙述中正确的是

A)此while语句将无限循环

B) getchar()不可以出现在while语句的条件表达式中

C)当执行此while语句时,只有按回车键程序才能继续执行

D)当执行此while语句时,按任意键程序就能继续执行

(27)有以下程序

#include

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)3 B)2 C)1 D) 0

(28)若有定义语句:char s[3][10],(*k)[3],*p,则以下赋值语句正确的是

A)p=sB)p=kC)p=s[0]D)k=s

(29)有以下程序

#include

void fun(char *c)

{ while(*c)

{ if(*c>='a'&&*c<='z') *c=*c-('a'-'A')

c++

}

}

main()

{ char s[81]

gets(s)fun(s)puts(s):

}

当执行程序时从键盘上输入Hello Beijing<回车>,则程序的输出结果是

A)hello beijing B)Hello Beijing C)HELLO BEIJING D)hELLO Beijing

(30)以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。

#include

#define N 10

void fun(int x[N])

{ int i=0

while(i

}

在程序中下划线处应填入的是

A)x+i B)&x[i+1]

C)x+(i++) D)&x[++i]

(31)有以下程序

#include

main()

{ char a[30],b[30]

scanf("%s",a)

gets(b)

printf("%s\n %s\n",a,b)

}

程序运行时若输入:

how are you? I am fine<回车>

则输出结果是

A)how are you? B)how

I am fine are you? I am fine

C)how are you? I am fine

D)row are you?

(32)设有如下函数定义

int fun(int k)

{ if (k<1) return 0

else if(k==1) return 1

else return fun(k-1)+1

}

若执行调用语句:n=fun(3),则函数fun总共被调用的次数是

A)2 B)3 C)4 D)5

(33)有以下程序

#include

int fun (int x,int y)

{ if (x!=y) return ((x+y)2)

else return (x)

}

main()

{ int a=4,b=5,c=6

printf("%d\n",fun(2*a,fun(b,c)))

}

程序运行后的输出结果是

A)3 B)6 C)8 D)12

(34)有以下程序

#include

int fun()

{ static int x=1

x*=2

return x

}

main()

{ int i,s=1

for(i=1i<=3i++) s*=fun()

printf("%d\n",s)

}

程序运行后的输出结果是

A)0 B)10 C)30 D)64

(35)有以下程序

#include

#define S(x) 4*(x)*x+1

main()

{ int k=5,j=2

printf("%d\n",S(k+j))

}

程序运行后的输出结果是

A)197 B)143 C)33 D)28

(36)设有定义:struct {char mark[12]int num1double num2} t1,t2,若变量均已正确赋初值,则以下语句中错误的是

A)t1=t2B)t2.num1=t1.num1

C)t2.mark=t1.markD)t2.num2=t1.num2

(37)有以下程序

#include

struct ord

{ int x,y}dt[2]={1,2,3,4}

main()

{

struct ord *p=dt

printf("%d,",++(p->x))printf("%d\n",++(p->y))

}

程序运行后的输出结果是

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

(38)有以下程序

#i

nclude

struct S

{ int a,b}data[2]={10,100,20,200}

main()

{ struct S p=data[1]

printf("%d\n",++(p.a))

}

程序运行后的输出结果是

A)10 B)11 C)20 D)21

(39)有以下程序

#include

main()

{ unsigned char a=8,c

c=a>>3

printf("%d\n",c)

}

程序运行后的输出结果是

A)32 B)16 C)1 D)0

(40)设fp已定义,执行语句fp=fopen("file","w")后,以下针对文本文件file *** 作叙述的选项中正确的是

A)写 *** 作结束后可以从头开始读 B)只能写不能读

C)可以在原有内容后追加写 D)可以随意读和写

二、填空题

(1)有序线性表能进行二分查找的前提是该线性表必须是 【1】 存储的。

(2)一棵二叉树的中序遍历结果为DBEAFC,前序遍历结果为ABDECF,则后序遍历结果为 【2】 。

(3)对软件设计的最小单位(模块或程序单元)进行的测试通常称为 【3】测试。

(4)实体完整性约束要求关系数据库中元组的 【4】 属性值不能为空。

(5)在关系A(S,SN,D)和关系B(D,CN,NM)中,A的主关键字是S,B的主关键字是D,则称 【5】是关系A的外码。

(6)以下程序运行后的输出结果是 【6】 。

#include

main()

{ int a

a=(int)((double)(3/2)+0.5+(int)1.99*2)

printf("%d\n",a)

}

(7)有以下程序

#include

main()

{ int x

scanf("%d",&x)

if(x>15) printf("%d",x-5)

if(x>10) printf("%d",x)

if(x>5) printf("%d\n",x+5)

}

若程序运行时从键盘输入12<回车>,则输出结果为 【7】 。

(8)有以下程序(说明:字符0的ASCII码值为48)

#include

main()

{ char c1,c2

scanf("%d",&c1)

c2=c1+9

printf("%c%c\n",c1,c2)

}

若程序运行时从键盘输入48<回车>,则输出结果为 【8】 。

(9)有以下函数

void prt(char ch,int n)

{ int i

for(i=1i<=ni++)

printf(i%6!=0?"%c":"%c\n",ch)

}

执行调用语句prt('*',24)后,函数共输出了 【9】 行*号。

(10)以下程序运行后的输出结果是 【10】 。

#include

main()

{ int x=10,y=20,t=0

if(x==y)t=xx=yy=t

printf("%d %d\n",x,y)

}

(11)己知a所指的数组中有N个元素。函数fun的功能是,将下标k(k>0)开始的后续元素全部向前移动一个位置。请填空。

void fun(int a[N],int k)

{ int i

for(i=ki

}

(12)有以下程序,请在 【12】 处填写正确语句,使程序可正常编译运行。

#include

【12】

main()

{ double x,y,(*p)()

scanf("%lf%lf",&x,&y)

p=avg

printf("%f\n",(*p)(x,y))

}

double avg(double a,double b)

{ return((a+b)/2)}

(13)以下程序运行后的输出结果是 【13】 。

#include

main()

{ int i,n[5]={0}

for(i=1i<=4i++)

{ n[i]==n[i-1]*2+1printf("%d",n[i])}

printf("\n")

}

(14)以下程序运行后的输出结果是 【14】 。

#include

#include

#include

main()

{ char *pint i

p=(char *)malloc(sizeof(char)*20)

strcpy(p,"welcome")

for(i=6i>=0i--) putchar(*(p+i))

printf("\n-")free(p)

}

(15)以下程序运行后的输出结果是 【15】 。

#include

main()

{ FILE *fpint x[6]={1,2,3,4,5,6},i

fp=fopen("test.dat","wb")

fwrite(x,sizeof(int),3,fp)

rewind(fp)

fread(x,sizeof(int),3,fp)

for(i=0i<6i++) printf("%d",x[i])

printf("\n")

fclose(fp)

}

2011年3月计算机二级c答案:

一、选择题

01-10:ABDDB ACDCB

11-20:ADBAA ADCAD

21-30:BDBCD CDCCC

31-40:BBBDB CDDCB

二、填空题

1.有序 2.DEBFCA 3.单元 4.主 5.D 6.3 7.1217 8.09 9.4 10.20 0

11.i-1 12.double avg(double a, double b)13.13715 14.emoclew 15.123456


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/10874389.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-11
下一篇 2023-05-11

发表评论

登录后才能评论

评论列表(0条)

保存