2011年3月全国计算机等级考试二级C语言笔试真题与答案.doc
2011年3月全国计算机等级考试二级C语言笔试真题与答案
简介:本文档为《2011年3月全国计算机等级考试二级C语言笔试真题与答案doc》,可适用于考试题库领域
年月全国计算机等级考试二级C语言笔试真题一、选择题()下列关于栈叙述正确的是 A)栈顶元素最先能被删除 B)栈顶元素最后才能被删除 C)栈底元素永远不能被删除D)以上三种说法都不对()下列叙述中正确的是 A)有一个以上根结点的数据结构不一定是非线性结构 B)只有一个根结点的数据结构不一定是线性结构 C)循环链表是非线性结构 D)双向链表是非线性结构()某二叉树共有个结点其中叶子结点只有个则该二叉树的深度为(假设根结点在第层) A)B)C)D)()在软件开发中需求分析阶段产生的主要文档是 A)软件集成测试计划B)软件详细设计说明书C)用户手册D)软件需求规格说明书()结构化程序所要求的基本结构不包括 A)顺序结构B)GOTO跳转 C)选择(分支)结构D)重复(循环)结构()下面描述中错误的是 A)系统总体结构图支持软件系统的详细设计 B)软件设计是将软件需求转换为软件表示的过程 C)数据结构与数据库设计是软件设计的任务之一 D)PAD图是软件详细设计的表示工具()负责数据库中查询操作的数据库语言是 A)数据定义语言 B)数据管理语言 C)数据操纵语言 D)数据控制语言()一个教师可讲授多门课程一门课程可由多个教师讲授。则实体教师和课程间的联系是A):联系B):m联系 C)m:联系D)m:n联系()有三个关系R、S和T如下: 则由关系R和S得到关系T的操作是 A)自然连接B)交C)除D)并()定义无符号整数类为UInt,下面可以作为类UInt实例化值的是 A)B)C)D)整数集合{,,,,}()计算机高级语言程序的运行方法有编译执行和解释执行两种以下叙述中正确的是 A)C语言程序仅可以编译执行 B)C语言程序仅可以解释执行 C)C语言程序既可以编译执行又可以解释执行 D)以上说法都不对()以下叙述中错误的是 A)C语言的可执行程序是由一系列机器指令构成的 B)用C语言编写的源程序不能直接在计算机上运行 C)通过编译得到的二进制目标程序需要连接才可以运行 D)在没有安装C语言集成开发环境的机器上不能运行C源程序生成的exe文件()以下选项中不能用作C程序合法常量的是 A),B)'' C)D)"xG"()以下选项中可用作C程序合法实数的是 A)eB)e C)ED)E()若有定义语句:inta=,b=,c=以下选项中错误的赋值表达式是 A)a=(b=)=B)a=b=cC)a=(b=)cD)a=(b=c=)()有以下程序段 charname intnum scanf("name=snum=d",namenum) 当执行上述程序段并从键盘输入:name=Lilinum=<回车>后name的值为 A)Lili B)name=Lili C)Lilinum= D)name=Lilinum=()if语句的基本形式是:if(表达式)语句以下关于“表达式”值的叙述中正确的是 A)必须是逻辑值B)必须是整数值 C)必须是正数D)可以是任意合法的数值()有以下程序 #include main() {intx= printf("dn",x) } 程序运行后的输出结果是 A)B)C)D)()有以下程序 #include<stdioh> main() {ints scanf("d",s) while(s>) {switch(s) {case:printf("d",s) case:printf("d",s)break case:printf("d",s) default:printf("d",s)break } scanf("d",s) } } 运行时若输入<回车>则输出结果是 A)B)C)D)()有以下程序段 inti,n for(i=i<i) {n=rand() switch(n) {case: case:printf("dn",n)break case: case:printf("dn",n)continue case:exit() } printf("dn",n) } 以下关于程序段执行情况的叙述正确的是 A)for循环语句固定执行次 B)当产生的随机数n为时结束循环操作 C)当产生的随机数n为和时不做任何操作 D)当产生的随机数n为时结束程序运行()有以下程序 #include<stdioh> main() {chars="xysfw" inti,n= for(i=si!=i) if(si>=''si<='')n printf("dn",n) } 程序运行后的输出结果是 A)B)C)D)()若i和k都是int类型变量有以下for语句 for(i=,k=k=k)printf("*****n") 下面关于语句执行情况的叙述中正确的是 A)循环体执行两次 B)循环体执行一次 C)循环体一次也不执行 D)构成无限循环()有以下程序 #include<stdioh> main() {charb,cinti b='a'c='A' for(i=i<i) {if(i)putchar(ib) elseputchar(ic) }printf("n") } 程序运行后的输出结果是 A)ABCDEFB)AbCdEfC)aBcDeFD)abcdef()设有定义:doublex,*p=x以下能给数组x下标为的元素读入数据的正确语句是 A)scanf("f",x)B)scanf("lf",*(x)) C)scanf("lf",p)D)scanf("lf",p)()有以下程序(说明:字母A的ASCII码值是) #include<stdioh> voidfun(char*s) {while(*s) {if(*s)printf("c",*s) s } } main() {chara="BYTE" fun(a)printf("n") } 程序运行后的输出结果是 A)BYB)BTC)YTD)YE()有以下程序段 #include<stdioh> main() {… while(getchar()!='n') … } 以下叙述中正确的是 A)此while语句将无限循环 B)getchar()不可以出现在while语句的条件表达式中 C)当执行此while语句时只有按回车键程序才能继续执行 D)当执行此while语句时按任意键程序就能继续执行()有以下程序 #include<stdioh> main() {intx=,y= if(!x)y elseif(x==) if(x)y= elsey= printf("dn",y) } 程序运行后的输出结果是 A)B)C)D)()若有定义语句:chars,(*k),*p则以下赋值语句正确的是 A)p=sB)p=kC)p=sD)k=s()有以下程序 #include<stdioh> voidfun(char*c) {while(*c) {if(*c>='a'*c<='z')*c=*c('a''A') c } } main() {chars gets(s)fun(s)puts(s) } 当执行程序时从键盘上输入HelloBeijing<回车>则程序的输出结果是A)hellobeijingB)HelloBeijingC)HELLOBEIJINGD)hELLOBeijing()以下函数的功能是:通过键盘输入数据为数组中的所有元素赋值。 #include<stdioh> #defineN voidfun(intxN) {inti= while(i<N)scanf(“d”,) } 在程序中下划线处应填入的是A)xiB)xi C)x(i)D)xi()有以下程序 #include<stdioh> main() {chara,b scanf("s",a) gets(b) printf("snsn",a,b) } 程序运行时若输入: howareyouIamfine<回车> 则输出结果是 A)howareyouB)how IamfineareyouIamfine C)howareyouIamfineD)howareyou()设有如下函数定义 intfun(intk) {if(k<)return elseif(k==)return elsereturnfun(k) } 若执行调用语句:n=fun()则函数fun总共被调用的次数是 A)B)C)D)()有以下程序 #include<stdioh> intfun(intx,inty) {if(x!=y)return((xy)) elsereturn(x) } main() {inta=,b=,c= printf("dn",fun(*a,fun(b,c))) } 程序运行后的输出结果是 A)B)C)D)()有以下程序 #include<stdioh> intfun() {staticintx= x*= returnx } main() {inti,s= for(i=i<=i)s*=fun() printf("dn",s) } 程序运行后的输出结果是 A)B)C)D)()有以下程序 #include<stdioh> #defineS(x)*(x)*x main() {intk=,j= printf("dn",S(kj)) } 程序运行后的输出结果是 A)B)C)D)()设有定义:struct{charmarkintnumdoublenum}t,t若变量均已正确赋初值则以下语句中错误的是 A)t=tB)tnum=tnum C)tmark=tmarkD)tnum=tnum()有以下程序 #include<stdioh> structord {intxy}dt={,,,} main() { structord*p=dt printf("d,",(p>x))printf("dn",(p>y)) } 程序运行后的输出结果是 A),B),C),D),()有以下程序 #include<stdioh> structS {inta,b}data={,,,} main() {structSp=data printf("dn",(pa)) } 程序运行后的输出结果是 A)B)C)D)()有以下程序 #include<stdioh> main() {unsignedchara=,c c=a>> printf("dn",c) } 程序运行后的输出结果是 A)B)C)D)()设fp已定义执行语句fp=fopen("file","w")后以下针对文本文件file操作叙述的选项中正确的是 A)写操作结束后可以从头开始读B)只能写不能读C)可以在原有内容后追加写D)可以随意读和写二、填空题()有序线性表能进行二分查找的前提是该线性表必须是【】存储的。()一棵二叉树的中序遍历结果为DBEAFC前序遍历结果为ABDECF则后序遍历结果为【】。()对软件设计的最小单位(模块或程序单元)进行的测试通常称为【】测试。()实体完整性约束要求关系数据库中元组的【】属性值不能为空。()在关系A(S,SN,D)和关系B(D,CN,NM)中A的主关键字是SB的主关键字是D则称【】是关系A的外码。()以下程序运行后的输出结果是【】。 #include<stdioh>main() {inta a=(int)((double)()(int)*) printf("dn",a)}()有以下程序#include<stdioh> main() {intx scanf("d",x) if(x>)printf("d",x) if(x>)printf("d",x) if(x>)printf("dn",x) } 若程序运行时从键盘输入<回车>则输出结果为【】。()有以下程序(说明:字符的ASCII码值为) #include<stdioh> main() {charc,c scanf("d",c) c=c printf("ccn",c,c) } 若程序运行时从键盘输入<回车>则输出结果为【】。()有以下函数 voidprt(charch,intn) {inti for(i=i<=ni) printf(i!="c":"cn",ch) } 执行调用语句prt('*',)后函数共输出了【】行*号。()以下程序运行后的输出结果是【】。 #include<stdioh> main() {intx=,y=,t= if(x==y)t=xx=yy=t printf("ddn",x,y) }()己知a所指的数组中有N个元素。函数fun的功能是将下标k(k>)开始的后续元素全部向前移动一个位置。请填空。 voidfun(intaN,intk) {inti for(i=ki<Ni)a【】=ai }()有以下程序请在【】处填写正确语句使程序可正常编译运行。 #include<stdioh> 【】 main() {doublex,y,(*p)() scanf("lflf",x,y) p=avg printf("fn",(*p)(x,y)) } doubleavg(doublea,doubleb){return((ab))}()以下程序运行后的输出结果是【】。 #include<stdioh> main() {inti,n={} for(i=i<=i) {ni=ni*printf("d",ni)} printf("n") }()以下程序运行后的输出结果是【】。 #include<stdioh> #include<stdlibh> #include<stringh> main() {char*pinti p=(char*)malloc(sizeof(char)*) strcpy(p,"welcome") for(i=i>=i)putchar(*(pi)) printf("n")free(p) }()以下程序运行后的输出结果是【】。 #include<stdioh> main() {FILE*fpintx={,,,,,},i fp=fopen("testdat","wb") fwrite(x,sizeof(int),,fp) rewind(fp) fread(x,sizeof(int),,fp) for(i=i<i)printf("d",xi) printf("n") fclose(fp) }参考答案一、选择题:ABDDBACDCBADAAAADCADBDBCDCDCCCBBBDBCDDCB二、填空题:【】有序【】DEBFCA【】单元【】主键【】D【】【】【】【】【】【】i【】doubleavg(double,double)或doubleavg(doublea,doubleb)【】【】emoclew【】