全国计算机等级考试《二级C语言程序设计》历年真题与模拟试题详解446p(共448页)_第1页
全国计算机等级考试《二级C语言程序设计》历年真题与模拟试题详解446p(共448页)_第2页
全国计算机等级考试《二级C语言程序设计》历年真题与模拟试题详解446p(共448页)_第3页
全国计算机等级考试《二级C语言程序设计》历年真题与模拟试题详解446p(共448页)_第4页
全国计算机等级考试《二级C语言程序设计》历年真题与模拟试题详解446p(共448页)_第5页
已阅读5页,还剩446页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上全国计算机等级考试二级C语言程序设计历年真题与模拟试题详解最新资料,WORD格式,可编辑修改!目录第一部分历年真题及详解52016年3月全国计算机等级考试二级C语言程序设计真题及详解52015年9月全国计算机等级考试二级C语言程序设计真题及详解182015年3月全国计算机等级考试二级C语言程序设计真题及详解332014年9月全国计算机等级考试二级C语言程序设计真题及详解482014年3月全国计算机等级考试二级C语言程序设计真题及详解622013年9月全国计算机等级考试二级C语言程序设计真题及详解762013年3月全国计算机等级考试二级C语言程序设计真题及详解91201

2、2年9月全国计算机等级考试二级C语言程序设计真题及详解1062012年3月全国计算机等级考试二级C语言程序设计真题及详解1212011年9月全国计算机等级考试二级C语言程序设计真题及详解1352011年3月全国计算机等级考试二级C语言程序设计真题及详解1492010年9月全国计算机等级考试二级C语言程序设计真题及详解1652010年3月全国计算机等级考试二级C语言程序设计真题及详解1802009年9月全国计算机等级考试二级C语言程序设计真题及详解1952009年3月全国计算机等级考试二级C语言程序设计真题及详解2092008年9月全国计算机等级考试二级C语言程序设计真题及详解224第二部分模拟

3、试题及详解239全国计算机等级考试二级C语言程序设计模拟试题及详解(一)239全国计算机等级考试二级C语言程序设计模拟试题及详解(二)255第一部分历年真题及详解2016年3月全国计算机等级考试二级C语言程序设计真题及详解(考试时间120分钟 满分100分)一、选择题(每题1分,共40分)1有以下定义:struct dataint i;char c;double d;x;以下叙述中错误的是( )。Ax的内存地址与x.i的内存地址相同Bstruct data是一个类型名C初始化时,可以对x的所有成员同时赋初值D成员i、c和d占用的是同一个存储空间【答案】D【解析】变量i、c、d是结构体变量x中三

4、个不同的成员,占用不同的存储空间。2以下函数的功能是:计算a的n次方作为函数值返回。double fun(double a,int n)int i;double s=1.0;for(i=1;i<=n;i+)s= ;return s;为实现上述功能,函数中下划线处应填入的是( )。As*iBs*aCs+i*iDs+a*a【答案】B【解析】s为a的(i-1)次方的结果,所以令s=s*a即可得到a的i次方。3有以下程序:#include<stdio.h>#include<string.h>main()char str ="Hello,Beijing"

5、printf("%d,%dn",strlen(str),sizeof(str);程序的运行结果是( )。A13,13B13,14C13,15D14,15【答案】B【解析】strlen返回字符串的长度,不包含字符串末尾的结束字符0,结果为13;sizeof返回字符串所占存储空间的大小,由于字符串最后要加上一个0,所以结果为13+1=14。4若有说明:typedef structint a;char c;w;,则以下叙述正确的是( )。A编译后系统为w分配5个字节B编译后系统为w分配6个字节C编译后系统为w分配8个字节D编译后系统不为w分配存储空间【答案】D【解析】w是一个自定

6、义类型,不是变量,故编译后系统不为w分配存储空间。当w定义为结构体变量时才会为其分配存储空间。5以下叙述中错误的是( )。A同一个数组中所有元素的类型相同B不可以跳过前面的数组元素,给后面的元素赋初值0C定义语句:int a10=0;,给a数组中所有元素赋初值0D若有定义语句:int a4=1,2,3,4,5;,编译时将忽略多余的初值【答案】D【解析】数组初始化时,若赋初值的个数多于所定义数组的元素个数时,编译器会报错。6若有以下定义:struct ttchar name10;char sex;aa="aaaa",F,*p=&aa;则错误的语句是( )。Ascanf

7、("%c",aa.sex);Baa.sex=getchar( );Cprintf("%cn",(*p).sex);Dprintf("%cn",p->sex);【答案】A【解析】sex是一个char类型变量,不是地址,A项应为scanf("%c",&aa.sex);。7C语言编译程序的功能是( )。A执行一个C语言编写的源程序B把C源程序翻译成ASCII码C把C源程序翻译成机器代码D把C源程序与系统提供的库函数组合成一个二进制执行文件【答案】C【解析】编译程序的功能是将“高级语言”翻译为“机器语言”,将

8、C语言语句转换成二进制的机器指令。8有以下程序:#include<stdio.h>int fun(int n)if(n)return fun(n-1)+n;else return 0;main( )printf("%dn",fun(3);程序的运行结果是( )。A4B5C6D7【答案】C【解析】fun函数是一个递归函数,调用f(3),参数n=3,返回f(3-1)+3=f(2)+3=f(1)+2+3=f(0)+1+2+3=0+6=6。9有以下程序:#include<stdio.h>main( )int sum=0,x=5;dosum+=x;while(

9、!-x);printf("%dn",sum);程序的运行结果是( )。A0B5C14D15【答案】B【解析】do-while循环,先执行循环体sum+=x,则sum=sum+x=0+5=5,再执行while中的表达式,结果为0,退出循环,所以运行结果是5。10下面不属于软件设计阶段任务的是( )。A软件的功能确定B软件的总体结构设计C软件的数据设计D软件的过程设计【答案】A【解析】软件设计阶段的任务包括:结构设计;数据设计;接口设计;过程设计。软件的功能确定是在需求分析阶段完成的。11有以下程序:#include<stdio.h>#include<stri

10、ng.h>typedef structchar name9;char sex;float score2;STU;void f(STU*a)strcpy(a->name,"Zhao");a->sex=m;a->score1=90.0;main( )STU c="Qian",f,95.0,92.0,*d=&c; f(d);printf("%s,%c,%2.0f,%2.0fn",d->name,c.sex,c.score0,c.score1);程序的运行结果是( )。AQian,f,95,92BZhao

11、,f,95,90CZhao,m,95,90DZhao,f,95,92【答案】C【解析】f函数调用时,结构体数组名作为实参传给形参指针,结构体指针a指向数组c的首地址。因此,f可以对数组c中的元素赋值,故返回主函数之后,数组c中的成员值已被更新。main函数中有赋值语句"*d=&c;",指针d指向结构体数组c的首地址,故d->name=,输出结果为Zhao,m,95,90。12在C语言程序中,下列说法正确的是( )。A函数的定义可以嵌套,但函数的调用不可以嵌套B函数的定义不可以嵌套,但函数的调用可以嵌套C函数的定义和调用均不可以嵌套D函数的定义和调用

12、均可以嵌套【答案】B【解析】函数定义都是在函数外部进行的,函数调用是在函数内部进行的,所以函数的定义不可以嵌套,但函数的调用可以嵌套。13执行以下程序段后,s的值为( )。int a =1,2,3,4,5,6,7,8,9,s=0,k;for(k=0;k<8;k+=2)s+=*(a+k);A13B16C17D45【答案】B【解析】数组a中的元素为:a0=1,a1=2,a8=9。k=0时,s=s+*(a+0)=0+1=1;k=2时,s=1+*(a+2)=1+3=4;k=4时,s=4+5=9;k=6时,s=9+7=16。14有以下程序:#include<stdio.h>#defin

13、e M 5#define f(x,y) x*y+Mmain( )int k;k=f(2,3)*f(2,3);printf("%dn",k);程序的运行结果是( )。A22B41C100D121【答案】B【解析】宏定义中的函数在调用时只做简单的替换,不能进行任何修改。所以k=2*3+5*2*3+5=41。15有以下程序:#include<stdio.h>main( )char ch=Z;ch=(ch-A+1)%26+A;putchar(ch);程序的运行结果是( )。AZBYCBDA【答案】D【解析】Z的ASCII码是90,A的ASCII码是65,所以ch=(ch

14、-A+1)%26+A=26%26+65=65,输出65对应的字符A 。16下面属于黑盒测试方法的是( )。A基本路径测试B等价类划分C判定覆盖测试D语句覆盖测试【答案】B【解析】等价类划分法是一种典型的、重要的黑盒测试方法,它将程序所有可能的输入数据(有效的和无效的)划分成若干个等价类进行测试。基本路径测试、判定覆盖测试和语句覆盖测试都属于白盒测试。17有以下程序:#include<stdio.h>main( )int i,j,k,a=5,b=6;i=(a=b)?+a:-b;j=a+;k=b;printf("%d,%d,%dn",i,j,k);程序的运行结果是(

15、 )。A7,6,5B5,5,5C7,5,5D5,6,5【答案】B【解析】条件表达式i=(a=b)?+a:-b;中先执行a=b,值为假,根据三元运算符语法规则,执行-b,此时b为5,赋给i,i=5;j=a+,将a=5先赋给j,再进行a+,j=5,a=6,k=b=5,故最后输出的是5,5,5。18C语言程序中,若函数无返回值,则应该对函数说明的类型是( )。AintBdoubleCcharDvoid【答案】D【解析】int表示返回值是整型,double表示返回值是双精度型,char表示返回值是字符型,void表示无返回值。19有以下程序:#include<stdio.h>main( )

16、int k,n=0;char c,str="teach"for(k=0;strk;k+)c=strk;switch(k)case 1:case 3:case 5:putchar(c);printf("%d",+n);break;default:putchar(N);序的运行结果是( )。ANe1NNBe1a2e3CNe1Nc2NDNa1NNNN【答案】C【解析】程序执行过程:k=0时,c=str0=t,执行default分支,输出N;k=1时,c=e,执行case 1分支,没有break语句,继续执行case 3分支,没有break语句,继续执行case

17、 5分支,输出e1;k=2时,c=a,输出N;k=3,c=c,输出c2;k=4,c=h,输出N。故程序的输出结果为Ne1Nc2N。20有以下程序:#include<stdio.h>void fun(char(*p)6)int i;for(i=0;i<4;i+)printf("%c",pii);printf("n");main( )char s66="ABCDE","abcde","12345","FGHIJ","fghij","

18、54321"fun(s); 程序的运行结果是( )。AAa1FBAb3ICABCDDfghij【答案】B【解析】函数fun的功能是输出sii,二维数组的对角线元素,所以程序会输出s00、s11、s22、s33,即Ab3I。21设变量x为long int型并已正确赋值,以下表达式中能将x的百位上的数字提取出的是( )。Ax/10%100Bx%10/100Cx%100/10Dx/100%10【答案】D【解析】x/100的个位数是x的百位数上的数字,所以再进行除10取余运算即可得到该数字。22在E-R图中,表示实体的图形是( )。A矩形B椭圆C菱形D圆【答案】A【解析】在E-R图中,矩形表

19、示实体集,矩形内写该实体集的名字。23下面对软件特点描述不正确的是( )。A软件是一种逻辑实体,具有抽象性B软件开发、运行对计算机系统具有依赖性C软件开发涉及软件知识产权、法律及心理等社会因素D软件运行存在磨损和老化问题【答案】D【解析】与硬件不同,软件在运行、使用期间不存在磨损、老化问题。24设x,y,z均为实型变量,代数式在C语言中的正确写法是( )。Ax/y*zBx%y%zCx/y/zDx*z/y【答案】C【解析】运算符×、/的结合顺序是从左到右,所以x先除以y,再除以z。25有以下程序:#include<stdio.h>#define N 4void fun(in

20、t a N,int b )int i;for(i=0;i<N;i+)bi=aiN-1-i;main()int xNN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,yN,i;fun(x,y);for(i=0;i<N;i+)printf("%d,",yi);printf("n");程序的运行结果是( )。A1,2,3,4,B3,6,9,12,C4,7,10,13,D1,5,9,13,【答案】C【解析】调用fun函数,yi=xiN-1-i,N=4,x是4行4列的二维数组。i=0时,y0= x04-1=x03=4;i

21、=1时,y1=x14-1-1=x12=7;i=2时,y2=x24-1-2=x21=10;i=3时,y3=x30=13。26在下列链表中,能够从任意一个结点出发直接访问到所有结点的是( )。A单链表B循环链表C双向链表D二叉链表【答案】B【解析】线性单链表,必须从头指针开始,才能访问到所有的结点;循环链表的最后一个结点的指针域指向表头结点,所有结点的指针构成了一个环状链,只要指出表中任何一个结点的位置就可以从它出发访问到表中其他所有的结点;双向链表头结点和尾结点之间没有链接,所以如果从中间结点开始访问无法直接访问到所有结点;二叉链表从除根结点之外的任意一个结点出发无法直接访问到所有结点。27有以

22、下程序:#include<stdio.h>main( )int i,j,x=0;for(i=0;i<2;i+)x+;for(j=0;j<=3;j+)if(j%2=0)continue;x+;x+;printf("x=%dn",x);程序的运行结果是( )。Ax=4Bx=6Cx=8Dx=12【答案】C【解析】第一次循环:i=0,执行x+后x=1,执行内层循环j=0,由于j%2!=0时才执行x+,即只有j取1和3时,执行x+,此时x=1+1+1=3,跳出内层循环,执行下一条x+,x=4,第二次循环:x=1时,重复上述循环,共执行两次循环,故x最终结果是4

23、*2=8。28对图书进行编目时,图书有如下属性:ISBN书号,书名,作者,出版社,出版日期。能作为关键字的是( )。AISBN书号B书名C作者,出版社D出版社,出版日期【答案】A【解析】关键字是指能惟一标识元组的属性或属性集合。书号可以惟一标识一本图书,本题中,书名、作者、出版社、出版日期等字段都不能惟一标识一本图书。29若主函数中有定义语句:int a10,b10,c;,在主函数前定义的fun函数首部为:void fun(int x ),则以下选项中错误的调用语句是( )。Afun(b);Bfun(&c);Cfun(&a3);Dfun(b11);【答案】D【解析】fun函数的

24、形式参数为一个数组,需要实参为一个地址,而b11是一个整型元素,参数类型不一致,且b11已经溢出,所以D项错误。30构成C语言程序的三种基本结构是( )。A顺序结构、转移结构、递归结构B顺序结构、嵌套结构、递归结构C顺序结构、选择结构、循环结构D选择结构、循环结构、嵌套结构【答案】C【解析】C语言程序是结构化程序,由三种基本结构组成:顺序结构;选择结构;循环结构。31下列形式中不合法的常量是( )。A2.E8B-.28C-028D2e-8【答案】C【解析】0开头表示的是八进制整型常量,八进制数只能用07的数字表示。32下列与栈结构有关联的是( )。A数组的定义域使用B操作系统的进程调度C函数的

25、递归调用D选择结构的执行【答案】C【解析】函数的递归调用是指函数调用函数本身,直到满足特定条件时终止,然后从最后被递归调用处返回。递归函数是通过栈来实现的,所以调用原则和栈的实现相一致。33以下不是C语言字符型或字符串常量的是( )。A"Its"B"0"Ca=0D010【答案】C【解析】C项是一个赋值表达式。AB两项是字符串常量,D项是字符常量。 34下列数据结构中,属于非线性结构的是( )。A双向链表B循环链表C二叉链表D循环队列【答案】C【解析】线性结构的特点:除了首结点和尾结点外,每一个结点只有一个前驱结点和一个后继结点。线性表、栈、队列都是线性结

26、构,循环链表和双向链表是线性表的链式存储结构;带链的栈是栈的链式存储结构。二叉链表是二叉树的链式存储结构,二叉树是非线性结构,所以二叉链表是非线性结构。35有以下程序:#include<stdio.h>main()int k=10;printf("%4d,%o,%xn",k,k,k);程序的运行结果是( )。(代表一个空格)A10,12,aB10,012,aC010,12,aD10,12,a【答案】D【解析】%4d表示输出占4个字符的十进制,故先输出2个空格,然后输出10;%o表示输出八进制,所以输出10的八进制为12;%x表示输出十六进制,即a。36数据库管理

27、系统是( )。A操作系统的一部分B系统软件C一种编译系统D一种通信软件系统【答案】B【解析】系统软件主要包括:操作系统软件;各种语言的解释程序和编译程序;各种服务性程序;各种数据库管理系统。37若有定义:int a=1,b=2,c=3;,则执行表达式(a=b+c)(+b)后,a,b,c的值依次为( )。A1,2,3B5,3,2C5,2,3D5,3,3【答案】C【解析】| 表示或运算,当第一个表达式为真时,第二个表达式不执行。根据运算符的优先级规则,先计算(a=b+c),将b+c的值赋值给a,则a=5,而 | 右边的括号不会被执行,所以b=2,c=3。38有两个关系R和T如下:则由关系R得到关系

28、T的操作是( )。A选择B交C投影D并【答案】C【解析】关系 T是由关系R的第1、3列的元组组成,这是对关系R进行投影运算的结果。可以简单理解为:选择运算是对行的操作,投影运算是对列的操作。39设有:char s5,c;,则调用函数scanf能正确给s和c读入数据的是( )。Ascanf("%s%c",s,c);Bscanf("%d%c",&s,&c);Cscanf("%d%c",s,&c);Dscanf("%s%c",s,&c);【答案】D【解析】s5中放的是字符串,故输入的类型应

29、该是%s;变量c中放的是字符,故输入的类型是%c。要正确读入数据必须要使用s和c的地址,而s代表就是字符数组的首地址。40若变量已正确定义并赋值,则错误的赋值语句是( )。Aa+=a+1;Ba=sizeof(double);Ca=dc;Da+1=a;【答案】D【解析】赋值号“=”的左边必须是一个变量名,不可以是表达式。二、程序填空题(共18分)下列给定的程序中,函数fun()的功能是:求出以下分数序列的前n项和。2/1,3/2,5/3,8/5,13/8,21/13,和值通过函数值返回main()函数。例如,若输入n=5,则应输出8.。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数

30、fun的横线上填入所编写的若干表达式或语句。【试题源程序】#include<stdio.h>#include<conio.h>double fun(int n)int a=2,b=1,c,k;double【1】;for(k=1;k<=n;k+)s=s+1.0*a/b;c=a;a+=【2】;b=c;return(s);main( )int n=5;printf("nThe value of function is:%lfn",【3】);答:【1】s=0.0【2】b【3】fun(n)【解析】填空【1】:此处要对变量s进行声明,因为后面有对s的累加操

31、作,所以s一定要进行初始化,即s=0.0。填空【2】:此处是循环求和,由数列可以看出后一项分数的分子是前一项分母与分子之和,即a=a+b或者a+=b。填空【3】:此处进行子函数调用。三、程序修改题(共18分)给定程序中函数fun的功能是:根据整型形参m,计算如下公式的值。y=1+例如,若m中的值为:5,则应输出:1.。请改正程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。【试题源程序】#include<stdio.h>double fun(int m)double y=1.0;int i;/*found*/for(i=2;i<

32、;m;i+)/*found*/y+=1/(i*i);return(y);main( )int n=5;printf("nThe result is %lfn",fun(n);答:(1)错误:for(i=2;i<m;i+)正确:for(i=2;i<=m;i+)(2)错误:y+=1(i*i)正确:y+=1.0(i*i)【解析】错误(1):使用for循环计算公式取到m时,最后一次循环应该等于m,所以i<m应改为i<=m。错误(2):在除法运算中,如果除数和被除数都是整数,那么所除结果也是整数,因此需要对结果进行强制转换或者将除数或被除数其中一个整型常量变为

33、浮点型常量。四、程序设计题(共24分)请编写函数fun(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从pn-1(p<n-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,p的值为6。移动后,一维数组的内容应为7,8,9,10,11,12,13,14,15,1,2,3,4,5,6。注意:请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。【试题源程序】#include<stdio.h>#define N 80void fun(in

34、t *w,int p,int n)main()int aN=1,2,3,4,5,6,7,8,9,10,11,12,13,14,15;int i,p,n=15;printf("The original data:n");for(i=0;i<n;i+)printf("%3d",ai);printf("nnEnter p:");scanf("%d",&p);fun(a,p,n);printf("nThe data after moving:n");for(i=0;i<n;i+)pr

35、intf("%3d",ai);printf("nn");答:void fun(int*w,int p,int n)int i,j,t;for(i=p;i<=n-1;i+)t=wn-1;for(j=n-2;j>=0;j-)wj+1=wj;w0=t;【解析】本题采用“循环右移”的算法。2015年9月全国计算机等级考试二级C语言程序设计真题及详解(考试时间120分钟 满分100分)一、选择题(每题1分,共40分)1下列叙述中正确的是( )。A所有数据结构必须有根结点B所有数据结构必须有终端结点(即叶子结点)C只有一个根结点,且只有一个叶子结点的数据

36、结构一定是线性结构D没有根结点或没有叶子结点的数据结构一定是非线性结构【答案】D【解析】D项正确,线性结构的特点是:集合中必存在“第一个元素”且惟一;集合中必存在“最后一个元素”且惟一;除最后一个元素外,其他数据元素均有惟一的“后继”;除第一个元素外,其他数据元素均有惟一的“前驱”。所以没有根结点或没有叶子结点的数据结构一定是非线性结构。AB两项错误,不是所有数据结构都必须有根结点和叶子结点;C项错误,数据结构中若有中间结点不满足只有一个前件或者后件的条件,就不是线性结构。2以下叙述中错误的是( )。AC语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令BC程序经过编译、链接步

37、骤之后才能形成一个真正可执行的二进制机器指令文件C用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中DC语言源程序经编译后生成后缀为.obj的目标程序【答案】A【解析】A项错误,注释语句不会被翻译成二进制的机器指令。C源程序经过C编译程序编译之后生成后缀为.obj的二进制文件(称为目标文件),然后由“链接程序”(Link)的软件把.obj文件与各种库函数连接起来生成一个后缀为.exe的可执行文件。3C语言主要是借助以下( )功能来实现程序模块化的。A定义函数B定义常量和外部变量C三种基本结构语句D丰富的数据类型【答案】A【解析】C程序的模块化主要通过函数来实现。C语言允许

38、对函数单独进行编译,从而可以实现模块化。4有以下程序段:char ch; int k;ch=a; k =12;printf("%c,%d,",ch,ch,k); printf("k=%dn",k);已知字符a的ASCII码十进制值为97,则执行上述程序段后输出的结果是( )。A因变量类型与格式描述符的类型不匹配,输出无定值B输出项与格式描述符个数不符,输出为零值或不定值Ca,97,12k=12Da,97,k=12【答案】D【解析】字符变量的值是该字符的ASCII码值,可以参与整型变量所允许的任何运算。“ch=a”,c表示以字符格式输出ch的值,所以输出为

39、a;d表示以十进制代码的形式输出ch的值,为97;k没有对应的输出格式,不输出。在第二个语句中,首先输出“k=”,然后以十进制代码输出k的值,为12。5下列叙述中正确的是( )。A栈是“先进先出”的线性表B队列是“先进后出”的线性表C循环队列是非线性结构D有序线性表既可以采用顺序存储结构,也可以采用链式存储结构【答案】D【解析】有序的线性表既可采用顺序存储结构,也可以采用链式存储结构。A项错误,栈是“先进后出”的线性表;B项错误,队列是“先进先出”的线性表;C项错误,循环队列是线性结构的,有序的线性表既可采用顺序存储结构,也可采用链式存储结构。6若要实现total=1+2+3+4+5求和,以下

40、程序段错误的是( )。Aint i=1,total=1;while(i<5) total +=i;i+=1;Bint i=1,total=0;while(i<=5) total +=i;i+=1;Cint i=0,total=0;while(i<5) i +=1;total+=i;Dint i=0,total=0;while(i<=5) total +=i;i+=1; 【答案】A【解析】A项执行过程为:i=1,total=1,判断while循环条件1<5成立,total=1+1,i=2;判断循环条件执行函数体,直到i=4,total=1+1+2+3+4,i=5;i

41、=5循环条件不成立,退出循环,A项不能实现题目要求,错误。B项执行过程:i=1,total=0,1<=5成立,total=0+1=1,i=2;直到i=5,total=1+2+3+4+5,i=6;i=6条件不成立,退出循环,程序正确。C项执行过程:i=0,total=0,0<5成立,i=1,total=1;直到i=5,total=1+2+3+4+5;i=5条件不成立,退出循环,程序正确。D项执行过程:i=0,total=0,0<=5成立,total=0,i=1;直到i=5,total=1+2+3+4+5,i=6;i=6条件不成立,退出循环,程序正确。7下列不属于软件工程3个要素

42、的是( )。A工具B过程C方法D环境【答案】D【解析】软件工程是指用工程的方法来构建和维护软件,其要素包括:方法,用于完成软件工程项目的技术手段;工具,用于支持软件的开发、管理、文档生成;过程,用于支持软件开发的各个环节的控制、管理。8下面不属于黑盒测试方法的是( )。A边界值分析法B基本路径测试C等价类划分法D错误推测法【答案】B【解析】常见的黑盒测试方法有:等价类划分法、边界值分析法、错误推测法以及因果图等;常见的白盒测试方法有:逻辑覆盖测试和基本路径测试。9有三个关系R、S和T如下:则下列操作中正确的是( )。AT=RSBT=RSCT=R×S DT=R-S【答案】D【解析】图中

43、关系R比关系S多一行T中的元组,故由关系R和S得到关系T的操作是差。10下列选项中,不属于数据管理员(DBA)职责的是( )。A数据库维护B数据库设计C改善系统性能,提高系统效率D数据类型转换【答案】D【解析】数据库管理员对数据库进行规划、设计、维护、监视等,其主要工作有:数据库设计,主要是对数据模式进行设计;数据库维护,对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护;改善系统性能,不断调整内部结构,提高系统效率。11有以下程序#include <stdio.h>main()int a=0,b=0;/*给a赋值a=10;b=20;给b赋值*/pri

44、ntf("a+b=%dn",a+b);/*输出计算结果*/程序运行后的输出结果是( )。Aa+b=0Ba+b=30Ca+b=10D出错【答案】A【解析】注释/*和*/之间的代码不参与编译,所以a、b的值仍为0。12有以下程序段#include <stdio.h>main()int a,b,c; a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%d b=%d c=%dn",a,b,c);程序的输出结果是( )。Aa=10 b=50 c=30Ba=10 b=50 c=10Ca=10 b=30 c=10

45、Da=50 b=30 c=50【答案】B【解析】C语言中使用分号来作为语句的结束,所以a=b,b=c;是一条含有逗号运算符语句。if条件不满足,直接执行c=a。13下列二叉树描述中,正确的是( )。A任何一棵二叉树必须有一个度为2的结点B二叉树的度可以小于2C非空二叉树有0个或1个根结点D至少有2个根结点【答案】B【解析】非空的树形结构有且只有一个根结点,二叉树是每个结点最多有两棵子树的树形结构。度是一个结点所拥有的后件个数,二叉树中所有结点中的最大的度称为二叉树的度。14下列叙述中,不符合良好程序设计风格要求的是( )。A程序的效率第一,清晰第二B程序的可读性好C程序中要有必要的注释D输入数

46、据前要有提示信息【答案】A【解析】“清晰第一,效率第二”是当今主导的程序设计风格。对程序的要求不仅是能够运行正常,还要便于调试和维护,所以程序要具有良好的可读性,语句结构应该简单直接,这有利于程序的开发与维护。15有以下程序#include <stdio.h>main() int x,y,z;x=y=1;z=x+,y+,+y;printf("%d,%d,%dn",x,y,z); 程序运行后的输出结果是( )。A2,3,1B2,3,2C2,3,3D2,2,1【答案】A【解析】对于表达式“z=x+,y+,+y;”,因为赋值运算符的优先级高于逗号运算符的优先级,所以可

47、以将上式改成“(z=x+),(y+),(+y)”。然后从左向右先计算表达式z=x+,后缀自增运算先进行其他运算,再执行自增运算,所以z的值为1,x的值为2,再计算逗号表达式第二个表达式y+,此时y的值为1,y+的值为2,最后计算第三个表达式+y,y的值为3。16设二叉树如下:则后序序列为( )。AABDEGCFHBDBGEAFHCCDGEBHFCADABCDEFGH【答案】C【解析】二叉树的遍历方式包括:前序遍历,先访问根结点,再访问左右子树;中序遍历,访问根结点在访问左右子树之间;后序遍历,在访问左右子树之后再访问根结点。本题中,树不为空,所以先后序遍历左子树,得DGEB,再后序遍历右子树,

48、得HFC,最后访问根结点。所以该二叉树的后序序列为DGEBHFCA。17以下叙述中正确的是( )。Abreak语句不能用于提前结束for语句的本层循环B使用break语句可以使流程跳出switch语句体Ccontinue语句使得整个循环终止D在for语句中,continue与break的效果是一样的,可以互换【答案】B【解析】B项正确,break语句可以跳出switch语句和循环。A项错误,break语句在for循环内部的作用是跳出循环;C项错误,continue语句的作用是跳过本次循环体中余下尚未执行的语句,立刻进行下一次的循环条件判定,即仅结束本次循环,并没有使整个循环终止;D项错误,co

49、ntinue和break的效果完全不同。18有以下程序:#include <stdio.h>main() int a=1,b=0;if(-a) b+;else if(a=0) b+=2;else b+=3;printf("%dn",b);程序运行后的输出结果是( )。A0B1C2D3【答案】C【解析】“+”和“-”运算,当以前缀形式出现时,则先进行加一或减一操作,再进行其他运算,当以后缀形式出现时,则先进行其他运算,再进行加一或减一操作。a初始定义为1,b为0,执行-a,a的值变为0,即if判断为假,执行b+=2,输出b的值为2。19待排序的关键码序列为(15,

50、20,9,30,67,65,45,90),要按关键码值递增的顺序排序,采取简单选择排序法,第一趟排序后关键码15被放到第( )个位置。A2B3C4D5【答案】B【解析】简单选择排序的算法可以描述为:前面的元素已经有序,扫描剩下的线性表,找到最小的元素,将它交换到剩余表的最前面,直到剩余表为空。所以第一趟排序后,将选出的最小元素与15交换,15被放在第3个位置。20下列关系表达式中,结果为“假”的是( )。A(3+4)>6B(3!=4)>2C3<=4 | 3D(3<4)=1【答案】B【解析】A项,先执行3+4=7,7>6,结果为真;B项,先执行3!=4为真,即为1,

51、1>2结果为假;C项,先执行3<=4结果为真,即1,再逻辑或3,结果为真;D项,先执行3<4结果为真,即为1,再执行1=1,结果为真。21有如下程序:#include <stdio.h>main()int i;for (i=0;i<5;i+)putchar(9-i);printf("n");程序运行后的输出结果是( )。A54321B98765C98765D43210【答案】B【解析】本题执行过程为:i=0,输出字符9,在i<5的情况下,依次输出字符8、7、6、5。在i=5时,退出for循环。最后显示在命令窗口结果为98765。22

52、下列叙述中正确的是( )。A可以用关系运算符比较字符串的大小B空字符串不占用内存,其内存空间大小是0C两个连续的单引号是合法的字符常量D两个连续的双引号是合法的字符串常量【答案】D【解析】A项错误,关系运算符不能比较字符串大小,可以用函数库中的字符串比较函数来比较字符串的大小;B项错误,空字符串占用一个字节的内存;C项错误,字符常量是用单引号把一个字符括起来。D项正确,两个连续的双引号是一个字符串常量,称为空串。23以下关于C语言函数参数传递方式的叙述正确的是( )。A数据只能从实参单向传递给形参B数据可以在实参和形参之间双向传递C数据只能从形参单向传递给实参DC语言的函数,参数既可以从实参单向传递给形参,也可以在实参和形参之间双向传递,可视情况选择使用【答案】A

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论