国家二级(C语言)笔试模拟试卷29(题后含答案及解析)_第1页
国家二级(C语言)笔试模拟试卷29(题后含答案及解析)_第2页
国家二级(C语言)笔试模拟试卷29(题后含答案及解析)_第3页
国家二级(C语言)笔试模拟试卷29(题后含答案及解析)_第4页
国家二级(C语言)笔试模拟试卷29(题后含答案及解析)_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷29(题后含答案及解析)题型有:1.选择题2.填空题选择题(1-10、21-40每题2分,11-20每题1分,共70分)下列各题A、B、C、D四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上。1.下列描述中正确的是()。A.程序就是软件B.软件开发不受计算机系统的限制C.软件既是逻辑实体,又是物理实体D.软件是程序、数据与相关文档的集合正确答案:D解析:计算机软件是包括程序、数据及相关文档的完整集合。它具有的特点有:①软件是一种逻辑实体,而不是物理实体,具有抽象性。②软件的生产过程与硬件不同,它没有明显的制作过程。③软件在运行、使用期间不存在磨损、老化问题。④软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致软件移植的问题。⑤软件复杂性高,成本昂贵。⑥软件开发涉及诸多的社会因素。2.用树形结构表示实体之间联系的模型是()。A.关系模型B.网状模型C.层次模型D.以上三个都是正确答案:C解析:层次模型是最早发展起来的数据库模型,其基本结构是树形结构。3.下列关于栈的描述中错误的是()。A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针正确答案:B解析:栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,允许插入和删除的一端称为栈顶,另一端称为栈底。一个新元素只能从栈顶一端进入,删除时,只能删除栈顶的元素,所以栈又称先进后出表。线性表可以顺序存储,也可以链式存储,而栈是一种线性表,也可以采用链式存储结构。4.在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为()。A.63B.64C.6D.7正确答案:B解析:在长度为n的线性表中进行顺序查找,如果表中第一个元素就是被查找元素,则只需做一次比较就查找成功,这是顺序查找的最好情况;如果被查找的元素是线性表中的最后一个元素或者不在线性表中,则需要进行n次比较,这是顺序查找的最坏情况。所以选项B)正确。5.对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是()。A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2正确答案:D解析:对于长度为。的线性表,在最坏情况下,冒泡排序需要经过次比较,快速排序的最坏情况比较次数也是。6.下列对于软件测试的描述中正确的是()。A.软件测试的目的是证明程序是否正确B.软件测试的目的是使程序运行结果正确C.软件测试的目的是尽可能多地发现程序中的错误D.软件测试的目的是使程序符合结构化原则正确答案:C解析:软件测试是为了发现错误而执行程序的过程;一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。总的来说,软件测试的目的就是尽可能多地发现程序中的错误。7.为了使模块尽可能独立,要求()。A.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强B.模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱C.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱D.模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强正确答案:B解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。8.下列对于线性链表的描述中正确的是()。A.存储空间不一定连续,且各元素的存储顺序是任意的B.存储空间不一定连续,且前件元素一定存储在后件元素的前面C.存储空间必须连续,且前件元素一定存储在后件元素的前面D.存储空间必须连续,且各元素的存储顺序是任意的正确答案:A解析:在链式存储结构中,存储空间可以不连续,各数据结点的存储顺序与数据元素之间的逻辑关系可以不一致,而数据元素之间的逻辑关系是由指针域确定的。9.数据独立性是数据库技术的重要特点之一,所谓数据独立性是指()。A.数据与程序独立存放B.不同的数据被存放在不同的文件中C.不同的数据只能被对应的应用程序所使用D.以上三种说法都不对正确答案:D解析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。选项A)、B)、C)三种说法都是错误的。10.数据的存储结构是指()。A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示正确答案:D解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。11.现有以下结构体说明和变量定义,如图所示,指针P,q,r分别指向一个链表中连续的三个结点。structnode{chardata;structnode*next;}*p,*q,*r;现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是()。A.q->next=r->next;p->next=r;r->next=q;B.p->next=r;q->next=r->next;r->next=q;C.q->next=r->next;r->next=q;p->next=r;D.r->next=q;P->next=r;q->next=r->next;正确答案:D解析:选项D)中首先将q赋给r->next,也就是将结点q的地址存放在结点r的指针域中;接着将r赋给p->next,也就是将结点r的地址存放在结点p的指针域中,此时完成了q和r所指结点的交换。q->next=r->next的目的是想将q的指针域指向下一个结点的数据地址,但由于一开始执行了r->next=q,即已将r的指针域甲存放了q结点的地址,此时q-next=r->next就相当于将q指向了其本身,也就是和下一个结点断开了,所以选项D)错误。12.有以下程序:#include<stdio.h>main(){union{charch[2];intd;}s;s.d=0x4321;printf(“%x,%x\n”,s.ch[0],s.ch[1]);}在16位编译系统上,程序执行后的输出结果是()。A.21,43B.43,21C.43,00D.21,00正确答案:A解析:int型变量和字符数组ch共用两个字节的存储单元,通常ch[0]位于低字节,ch[1]位于高字节,所以s.ch[0]=21,s.c[1]=43。13.以下四个程序中,完全正确的是()。A.#include<stdio.h>main();{/*programmlng*/printf(“programming!\n”);}B.#include<stdio.h>main(){/*/programmingprintf(“programming!\n”);}C.#include<stdio.h>main(){/*programming*/printf(“programming!\n”);}D.include<stdio.h>main(){/*/*programming*/*/printf(“programming!\n”);}正确答案:C解析:选项A)main();后面不应该有分号;选项B)中的注释语句不正确;选项D)的include前缺少#。14.有以下程序:intfun1(doublea){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=fun1(y);return(int)(a+b);}main(){doublew;w=fun2(1.1,2.0);……}程序执行后变量w中的值是()。A.5.21B.5C.5D.0正确答案:C解析:程序调用函数fun2时,通过fun2调用函数fun1,第一次调用fun1返回的值为1,然后将1赋值给a,由于a为double型,系统自动将1转换为1.000000赋给变量a,以此类推可得b的值为4.000000;然后通过return(int)(a+b);将a+b的值强制转换为int型返给主函数,由于w为double型,所以返回的整型值5被转换为double型,故输出结果为5.0。15.以下能正确定义字符串的语句是()。A.charstr[]={‘\064’};B.charstr=“\x43”;C.charstr=“;D.charstr[]=“\0”;正确答案:D解析:C语言中,字符串是用一对双引号括起来的字符序列,并用字符型数组来存放,故选项A)、C)不是字符中;选项B)定义的是一个字符变量str,不能用来存放字符串,所以不正确。16.以下数组定义中错误的是()。A.intx[][3]={0};B.intx[2][3]={{1,2},{3,4},{5,6}};C.intx[][3]={{1,2,3},{4,5,6}};D.intx[2][3]={1,2,3,4,5,6};正确答案:B解析:选项B)中行数定义为2,但实际需要存放3行元素,所以错误。17.若要求从键盘读人含有空格字符的字符串,应该使用函数()。A.getc()B.gets()C.getchar()D.scanf()正确答案:B解析:gete()函数是从文件指针指定的文件中读入一个字符,并把它作为函数值返回;getchar()函数是从终端(或系统隐含指定的输入设备)输入一个字符,getc()和getehar()都不能读字符串(可以与循环语句结合输入一个字符串);seanf()函数不能输入带空格的字符串;gets()函数可以从键盘读入空格字符。18.以下叙述中错误的是()。A.C程序中的#include和#define行均不是C语句B.除逗号运算符外,赋值运算符的优先级最低C.C程序中,j++;是赋值语句D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算正确答案:D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。19.以下不合法的字符常量是()。A.’\018’B.’\”‘C.’\\’D.’\xcc’正确答案:A解析:C语言的字符常量是用单引号括起来的一个字符,如’a’,’A’,’?’,’S’等都是字符常量。除此之外,还允许用一个“\”开头的字符序列,如’\ddd’表示1到3位八进制数所代表的字符,而八进制是由0~7这几个数字组成的,所以选项A)是不合法的字符常量。20.若下列各选项中所有变量已正确定义,函数fun通过return语句返回一个函数值,以下选项中错误的程序是()。A.main(){......x=fun(2,10);......}floatfun(inta,intb){......}B.floatfun(inta,intb){......}main(){......x=fun(i,j);......}C.floatfun(int,int);main(){......x=fun(2,10);......}floatfun(ihta,intb){......}D.main(){floatfun(inti,intj);......x=fun(i,j);......}floatfun(inta,intb){......}正确答案:A解析:C语言程序从main函数开始执行,当程序中定义了多个函数时,通常情况下是先定义后调用。若被调用函数定义在主调函数之后,则必须先声明后调用。在选项A)中,先执行main函数,并调用了fun函数,而fun函数在此调用之前无定义也无声明,故无法正常识别调用,所以错误。21.以下程序的输出结果是()。#include<stdio.h>main(){intk=17;printf(“%d,%o,%x\n”,k,k,k);}A.17,021,0x11B.17,17,17C.17,0x11,021D.17,21,11正确答案:D解析:printf函数对不同类型的数据用不同的格式描述符,“%d”是以带符号的十进制形式输出整数(正数不输出符号);“%o”以八进制无符号形式输出整数(不包括前导符0);“%x”以十六进制无符号形式输出整数(不包括前导符0x)。22.以下说法中正确的是()。A.#define和printf都是C语句B.#define是C语句,而printf不是C.printf是C语句,但#define不是D.#define和printf都不是C语句正确答案:D解析:C语言规定,分号是C语句的必要组成部分,每个语句和数据定义的最后必须有一个分号。23.以下选项中,能定义s为合法的结构体变量的是()。A.typedefstructabc{doublea;charb[10];}s;B.struct{doublea;charb[10];}s;C.structABC{doublea;charb[10];}ABCs;D.typedefABC{doublea;charb[10];}ABCs;正确答案:B解析:定义一个结构体类型的变量,可采用三种方法:①先定义结构体类型,再定义变量名。②在定义类型的同时定义变量。③直接定义结构体类型变量,即不出现结构体名。选项B)符合第三种定义方法。24.以下程序的输出结果是()。#include<stdio.h>main(){inti,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];for(i=0;i<4;i+=2)printf(“%d”,p[i]);}A.52B.51C.53D.97正确答案:C解析:本题的考查点是通过指针引用数组元素。i=0时,输出P[0],也就是x[1][1],输出5;i=2时,输出p[2],即P[2+0],也就是x[2][0],输出3。25.已知字符0的ASCII码为十六进制的30,现有程序如下:#include<stdio.h>main(){union{unsignedcharc;unsignedinti[4];}z;z.i[0]=0x39;z.i[1]=0x36;printf(“%c\n”,z.c);}此程序的输出结果是()。A.6B.9C.0D.3正确答案:B解析:根据共用体的定义可知:共用体z的成员c和成员i[4]是共用着同一段内存空间,所以,当程序给z.i[0]赋值后,实际上共用体成员c的值也确定了,为0x39,所以在以字符方式打印时,打印结果应是ASCII码等于0x39的字符,即是9。26.在C语言中,下列各选项为不正确的int类型的常数足()。A.32768B.0C.37D.0xAF正确答案:A解析:本题考查int类型的范围问题。C语言中int类型的常数的范围是:-32768~32767。选项A)超出了范围,错误。C语言中整常数可用三种形式表示:十进制整数,八进制整数,十六进制整数。27.以下程序的输出结果是()。#include<stdio.h>intfan(int);main(){intw=5;fun(w);printf(“\n”);}fun(intk){if(k>0)fun(k-1);printf(“%d”,k);}A.54321B.012345C.12345D.543210正确答案:B解析:本题考查函数的递归调用。fun函数共被调用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(0),其中fun(5)是main函数调用的,其余是在fun函数中调用的。28.有以下程序:#include<stdio.h>unionpw{inti;charch[2];}a;main(){a.ch[0]=13;a.ch[1]=0;printf(“%d\n”,a.i);}程序的输出结果是(注意:ch[0]在低字节,ch[1]在高字节)()。A.13B.14C.208D.209正确答案:A解析:根据共用体的定义可知:共用体a的成员i和成员ch[2]共用同一段内存空间,所以,当程序给a.ch[0]和a.ch[1]赋值后,实际上,共用体成员i的值就确定为13了,所以打印输出的结果应当为13。29.若有以下说明和语句,则四个选项中是对c数组元素的正确引用的是()。intc[4][5],(*cp)[5];cp=c;A.cp+1B.*(cp+3)C.*(cp+1)+3D.*(*cp+2)正确答案:D解析:本题考查数组元素的引用。语句cp=c;将数组c的首行地址赋给了指针数组cp。选项A)的cp+1是指将数组c的首行地址加1,即为第二行地址;选项B)的*c(cp+3)是地址,等于数组c的首地址加3的内存单元的内容,不是对数组元素的引用;选项c)的*(cp+1)+3是地址,等于数组c的首地址加1的内存单元中存放的值加3,不是对数组元素的引用。30.请读程序:#include<stdio.h>main(){inta,b;for(a=1,b=1;a<=100;a++){if(b>=20)break;if(b%3==1){b+=3;continue;}b-=5;}printf(“%d\n”,a);}上面程序的输出结果是()。A.7B.8C.9D.10正确答案:B解析:本题考查break语句和continue语句。程序要输出循环结束时循环变量a的值,执行第一次循环时,条件(b%3==1)为真,b=4,继续下一次循环,如此反复,当b=22时,条件(b>=20)为真,跳出循环,此时共循环8次,即a=8。31.以下程序的输出结果是()。#include<stdio.h>main(){intn=4;while(n--)printf(“%d“,--n);}A.20B.31C.321D.210正确答案:A解析:n--是先使用后自减,--n是先自减后使用。n=4时,执行n--后,n变为3,执行--n后,n变为2,所以,第一次输出时,n为2;同上过程,第二次输出时,n为0。32.请选出可用作C语言用户标识符的一组()。A.voiddefineWORDB.a3_b3_123IFC.For_abccaseD.2aDOsizeof正确答案:B解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。A)中的void与C语言的关键字重名,不合法;C)中的case和C语言的关键字重名,不合法;D)中的2a是数字开头,而且sizeof与C语言的关键字重名,不合法。33.请读程序:#include<stdio.h>#include<string.h>main(){char*s1=“AbCdEf”,*s2=“aB”;s1++;s2++;printf(“%d\n”,strcmp(s1,s2));}上面程序的输出结果是()。A.正数B.负数C.零D.不确定的值正确答案:A解析:本题考查字符串比较函数strcmp()的应用。strcmp(s1,s2)是中比较函数,当s1>s2时返回值为正数,当s1<s2时返回值为负数,当s1=s2时返回值为零。本题中s1,s2分别表示两个串中第一个字符的地址,s1++和s2++是将指针指向串的第二个字符,指针变量s1指向的是串“bCdEf”的首地址,即字符b的地址,而指针变量s2指向的是字符’B’的地址。而在字符串比较中,宁符串大小的确定是各个字符串相应位置字符的ASCII码值的大小决定的,字符’B’的ASCII码值为66,字符“b”的ASCII码值为98,所以s1>s2,返回值为正数。34.请选出以下程序的输出结果()。#include<stdio.h>#defineMIN(x,y)(x<y)?x:ymain(){inti,j,k;i=10;j=15;k=10*MIN(i,j);printf(“%d\n”,k);}A.15B.100C.10D.150正确答案:C解析:本题考查宏定义。在C语言中,宏是直接替换的,所以表达式k=10*MIN(i,j)被直接替换为k=10*(i<j)?i:j,在这个表达式中,10*(i<j)的值为非零,所以整个表达式的值应为i的值,即为10。35.若x是int型变量,且有下面的程序段:for(x=3;x<6;x++)printf((x%2)?(“**%d”):(“##%d\n”),x);此程序段的输出结果是()。A.**3##4**5B.##3**4##5C.##3**4##5D.**3##4**5正确答案:D解析:本题考查条件运算符。如果x%2非0,输出**和循环变量的值;如果x%2为0,输出##和循环变量的值。当循环变量为3和5时,分别输出**3和**5,当循环变量为4时,输出##4后换行。36.若已定义:inta[9],*p=a;并在以后的语句中未改变p的值,下列选项中不能表示a[1]地址的表达式是()。A.p+1B.a+1C.a++D.#NAME?正确答案:C解析:本题考查数组地址的表示。选项C)中,数组名所表示的数组地址不能被重新赋值。37.设有如下的程序段:charstr[]=“Hello”;char*ptr;ptr=str;执行完上面的程序段后,*(ptr+5)的值为()。A.’o’B.’\0’C.不确定的值D.’o’的地址正确答案:B解析:本题考查字符数组的结束标志。ptr=str是将串str的首地址赋给了指针变量ptr,所以ptr+5指向字符串str的第六个数组元素,即是串的隐含结束标志’\0’,*(ptr+5)=‘\0’,最后的结果为’\0’。38.C语言中,下列叙述正确的是()。A.不能使用do-while语句构成的循环B.do-while语句构成的循环,必须用break语句才能退出C.do-while语句构成的循环,当while语句中的表达式值为非零时结束循环D.do-while语句构成的循环,当while语句中的表达式值为零时结束循环正确答案:D解析:本题考查do-while语句。C语言支持do-while语句,选项A)错误;do-while构成的循环,当while语句中的表达式值为零时结束循环,故选项B)、C)都是错误的。39.设有说明语句如下:staticcharstr[]=“Beijing”;若执行下列输出语句:printf(“%d\n”,strlen(strcpy(str,”China”)));则输出结果为()。A.5B.7C.12D.14正确答案:A解析:本题考查求字符串的长度。数组str初始化的长度是7,使用strcpy函数将新字符串赋给str后,strlen函数返回的是新字符串的字符个数5。40.以下程序的输出结果是()。#include<stdio.h>#include<string.h>main(){charstr[12]={‘s’,’t’,’r’,’i’,’n’,’g’};printf(“%d\n”,strlen(str));}A.6B.7C.11D.12正确答案:A解析:本题考查求字符串的长度。程序中定义字符串str时中请了12个字节的内存空间,对它赋初值后,函数strlen在求串长度时,以’\0’作为串结束符,所以,strlen(str)的值为6。41.下列描述中不正确的是()。A.字符型数组中可以存放字符串B.可以对字符型数组进行整体输入、输出C.可以对整型数组进行整体输入、输出D.不能在赋值语句中通过赋值运算符“=”对字符型数组进行整体赋值正确答案:C解析:本题考查对数组的理解。C语言规定只能逐个引用数组元素,而不能一次引用整个数组。对于字符数组,可以将整个字符串一次输入或输出。所以,选项C)不正确。42.设有以下语句:charstr[4][12]={“aaa”,”bbbb”,”ccccc”,”dddddd”},*strp[4];inti;for(i=0;i<4;i++)strp[i]=str[i];下列选项不是对字符正确引用的是(其中0≤k<4)()。A.strpB.str[k][k]C.*strp[k]D.**strp正确答案:A解析:本题考查对字符数组中字符的引用。指针数组strp表示每一个数组元素都存放了一个字符串的首地址。选项A)代表指针数组strp的第一个数组元素的地址,不是对字符的引用。43.请选出以下程序的输出结果()。#include<stdio.h>sub(int*s,inty){staticintt=3;y=s[t];t--;}main(){inta[]={1,2,3,4},i,x=0;for(i=0;i<4;i++){sub(a,x);printf(“%d”,x);}printf(“\n”);}A.1234B.4321C.0D.4444正确答案:C解析:本题考查函数的形参和实参的关系。函数sub将实参x的值传给形参y,y值的改变不能使x的值发生改变,所以输出的x值始终为0。44.请读程序:#include<stdio.h>inta[]={2,4,6,8,};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p++;priatf(“%d\n”,a[2]);}上面程序的输出结果是()。A.6B.8C.4D.2正确答案:A解析:本题考查通过指针引用数组元素。程序通过a[i]=*p++;语句,循环地将2赋给a[0],4赋给a[1],6赋给a[2],8赋给a[3],所以输出结果为6。45.若有以下的说明和语句,则在执行for语句后,*(*(pt+1)+2)表示的数组元素是()。intt[3][3],*Pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]正确答案:C解析:本题考查通过指针引用数组元素。*(*(pt+1)+2)等价于*(pt[1]+2),pt[1]+2是t[1][2]的地址,故*(pt[1]+2)是t[1][2]的值。46.读程序:#include<stdio.h>f(intb[],intn){inti,r;r=1;for(i=0;i<=n;i++)r=r*b[i];returnr;}main(){intx,a[]={2,3,4,5,6,7,8,9};x=f(a,3);printf(“%d\n”,x);}上面程序的输出结果是()。A.720B.120C.24D.6正确答案:B解析:本题考查函数的调用。函数f的功能是将b[]小的第1到n+1个数组元素的值进行相乘运算,然后返回其结果。由于实参3传给形参n,所以f的返回值为x=2*3*4=5=120。47.读下面程序段(字符串内没有空格字符):printf(“%d\n”,strlen(“ATS\n012\1\\”));其输出结果是()。A.11B.10C.9D.8正确答案:C解析:本题考查字符串的长度。printf的功能是输出”ATS\n012\1\\”这个字符串的长度,在字符串中“\\”代表一个“\”,仅为一个字符,而“\1”代表数字1,占一个字符,“\n”是回车换行符,也占一个字符,加上A、T、S、0、1、2,一共是9个字符。48.有以下程序:#include<stdio.h>main(){intc;while((c=getchar())!=‘\n’){switch(c-’2’){case0:case1:putchar(c+4);case2:putehar(c+4);break;case3:putchar(c+3);default:putchar(c+2);break;}}}运行程序,从第一列开始输入以下数据:2473<回车>则程序的输出结果是()。A.668977B.668966C.66778777D.6688766正确答案:A解析:本题考查switch语句。while中的表达式判断用getchar函数从键盘接收的字符是否是回车符,若不是,则执行switch多分支选择语句,根据表达式c-’2’的值进行分支选择;函数putchar是在屏幕上输出一个字符,最后的结果应当为668977。49.以下程序的输出结果是()。#include<stdio.h>main(){inta=-1,b=1,k;if((++a<0)&&!(b--<=0))printf(“%d%d\n”,a,b);elseprintf(“%d%d\n”,b,a);}A.-11B.01C.10D.00正确答案:C解析:本题考查if语句。++a是先自增后使用,b--是先使用后自减。执行++a后,a值为0,不满足条件,所以a为0,b仍为1,接下去执行else语句,输出10。50.下面程序的输出结果是()。#include<stdio.h>intm=13;intfun2(intx,inty){intm=3;return(x*y-m);}main(){inta=7,b=5;printf(“%d\n”,fun2(a,b)/m);}A.1B.2C.7D.10正确答案:B解析:本题考查函数的调用。函数fun2的作用是将形参x和y的值相乘后减去3,在fun2中的变量m是一个局部变量,它的值在fun2函数内有效;在主函数中的m指的是全局变量,其值为13,所以fun2(a,b)/m的值为(7*5-3)/13,即2。填空题(每空2分,共30分)请将每一个空的正确答案写在答题卡上。注意:以命令关键字填空的必须拼写完整。51.长度为n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【】。正确答案:解析:在线性表的任何位置插入一个元素的概率相等,即概率为,则插入一个元素时所需移动元素的平均次数为52.用树型结构表示实体类型及实体间联系的数据模型称为【】。正确答案:层次模型解析:用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型;用二维表格结构表示实体及其联系的数据模型称为关系模型。53.类是一个支持集成的抽象数据类型,而对象是类的【】。正确答案:实例解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。54.数据流图的类型有【】和事务型。正确答案:变换型解析:典型的数据流图的类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理后再沿输出通路变换成外部形式离开软件系统;在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能,这种数据流就叫做事务型数据流。55.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。正确答案:物理独立性解析:数据独立性是数据与程序间的互不依赖性,即数据库中的数据独立于应用程序而不依赖于应用程序。也就是说,数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。数据独立性一般分为物理独立性与逻辑独立性两级。56.以下程序的运行结果是【】。#include<stdio.h>#defineMAX(a,b)(a>b?a:b)+1main(){inti=6,j=8,k;printf(“%d\n”,MAX(i,j));}正确答案:9解析:本题考查宏定义与三目运算符的综合应用。宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则b+1的值为整个表达式的值(应注意后面的加1)。57.在对文件操作的过程中,若要求文件的位置指针回到文件的开始处,应当调用的函数是【】。正确答案:rewind()或fseek()58.在计算机中,字符的比较是对它们的【】进行比较。正确答案:ASCII码解析:C语言中,字符也可以进行比较运算,并且是按照其ASCII码值进行的。59.在内存中,存储字符’x’要占用1个字节,存储字符串”X”要占用【】个字节。正确答案:2解析:计算机存储一个字符用1个字节;存储字符串时,每个字符要占用1个字节,字符串结束标记符也要占1个字节,所以存储字符串”X”要占用2个字节。60.下列程序的输出结果是16.00,请填空。#include<stdio.h>main(){inta=9,b=2;floatx=【】,y=1.1,z;z=a/2+b*x/y+1/2;printf(“%5.2f\n”,z);}正确答案:6.6解析:本题以浮点格式输出z值,宽度为5,有2位小数。应该注意的是,两个整数运算结果仍为整数,如1/2的结果为0。本题可逐步求解:16.00=9/2+2*x/1.1+1/216.00=4+2*x/1.1+012.00=2*x/1.1所以,x的值为6.6。61.设在主函数中有以下定义和函数调用语句,且fun函数为void类型,请写出fun函数的首部【】。要求形参名为b。main(){doubles[10][22];intn;┆fun(s);┆}正确答案:voidfun(doubleb[][22])解析:程序中为了表示函数调用“不带回值”,可以用“void”定义函数为“无类型”(或称“空类型”),这样系统就保证不使函数带回任何值。当二维数组作为形参时,二维数组的第一维可以省略。62.下列程序的功能是输入一个整数,判断其是否是素数,若为素数则输出1,否则输出0。请填空。#include<stdio.h>main(){inti,x,y=1;scanf(“%d”,&x);for(i=2;i<=x/2;i++)if【】{y=0;break;}printf(“%d\n”,y);}正确答案:(x%i==0)解析:为判数x是否是素数,预置变量y的值为1(x可能是素数),然后用2至x/2的整数i测试对x的整除性,若x能被其中的某个整数整除,则x是合数,置y的值为0(即x不是素数),结束循环测试;若循环中i都不能整除x,则x为素数。一般可用求余运算x%i是否等于0来判定i能否整除x,所以程序中的空格处可填(x%i==0)。63.若给fun函数的形参s传送字符串“∪∪6354’abc”(其中∪表示空格字符),则函数的返回值是【】。longfun(chars[]){longn;intsign;for(;isspace(*s);s++);sign=(*s==‘-’)?-1:1;if(*s==‘+’||*s==‘-’)s++;for(n=0;isdigit(*s);s++)n=10*n+(*s-’0’);returnsign*n;}正确答案:6354解析:函数fun的第一个for循环跳过字符串的前导空白符,接着判断第一个非空白符是否是负号,若是,则置变量sign为-1;否则,置变量sign为1。接着的if语句在第一个非空白字符是负号或正号时,跳过该字

温馨提示

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

最新文档

评论

0/150

提交评论