国家二级(C语言)笔试模拟试卷11(共558题)_第1页
国家二级(C语言)笔试模拟试卷11(共558题)_第2页
国家二级(C语言)笔试模拟试卷11(共558题)_第3页
国家二级(C语言)笔试模拟试卷11(共558题)_第4页
国家二级(C语言)笔试模拟试卷11(共558题)_第5页
已阅读5页,还剩133页未读 继续免费阅读

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷11(共9套)(共558题)国家二级(C语言)笔试模拟试卷第1套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、已知8个数据元素为(34,76,45,18,26,54,92,65),按照依次插入结点的方法生成一棵二叉排序树后,最后2层上的结点总数为______。A、1B、2C、3D、4标准答案:2知识点解析:暂无解析2、一个栈的输入序列为1,2,3,4,下列选项中的______序列不可能是这个栈的输出序列。A、1,3,2,4B、2,3,4,1C、4,3,1,2D、3,4,2,1标准答案:4知识点解析:暂无解析3、循环链表的主要优点是______。A、不再需要头指针了B、已知某个结点的位置后,能够容易找到它的直接前驱C、在进行插入、删除运算时,能更好地保证链表不断开D、从表中任一结点出发都能扫描到整个链表标准答案:8知识点解析:暂无解析4、软件测试是软件开发过程中重要且不可缺少的阶段,测试过程中的______是基础测试。A、系统测试B、有效性测试C、单元测试D、集成测试标准答案:4知识点解析:暂无解析5、在瀑布模型中,将软件开发划分为若干时期,而软件的可行性研究一般被属于______。A、计划时期B、维护时期C、运行时期D、开发时期标准答案:1知识点解析:暂无解析6、在数据库技术中,面向对象数据模型是一种______。A、概念模型B、结构模型C、物理模型D、形象模型标准答案:2知识点解析:暂无解析7、在C语言中提供的合法的关键字是______。A、swicthB、cherC、CaseD、default标准答案:8知识点解析:暂无解析8、若定义staticinta[2][2]={1,2,3,4},则a数组的各数组元素分别为______。A、a[0][0]=1、a[0][1]=2、at[1][0]=3、a[1][1]=4B、a[0][0]=1、a[0][1]=3、a[1][0]=2、a[1][1]=4C、a[0][0]=4、a[0][1]=3、a[1][0]=2、s[1][1]=1D、a[0][0]=4、a[0][1]=2、a[1][0]=3、a[1][1]=1标准答案:1知识点解析:暂无解析9、下列变量说明语句中,正确的是A、char:abc;B、chara;b;c;C、intx;z;D、intx,z;标准答案:8知识点解析:暂无解析10、若有以下定义和语句,则输出的结果是______。charc1=’b’,c2=’e’;printf("%d,%c\n",c2-c1,c2-’a’+"A");A、2,MB、3,EC、2,ED、输出结果不确定标准答案:2知识点解析:暂无解析二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、下列不正确的转义字符是______。A、’\\’,B、’\’C、’074’D、’\0’标准答案:4知识点解析:暂无解析12、设有如下定义,则执行表达式(nFa>b)&&(n=c>d)后,n的值为______。inta=1,b=2,c=3,d=4,m=2,n=2;A、1B、2C、3D、0标准答案:2知识点解析:暂无解析13、若变量c为char类型,能正确判断出c为小写字母的表达式是______。A、’a’<=c<’z’B、(c>=’a’)||(c<=’z’)C、(’a’<’c’)and(’z’>=C)D、(c>=’a’)&&(c<=’z’)标准答案:8知识点解析:暂无解析14、在下列叙述中,正确的一条是______。A、if(表达式)语句中,表达式的类型只限于逻辑表达式B、语句“goto12;”是合法的C、for(;;)语句相当于while(1)语句D、break语句可用于程序的任何地方,以终止程序的执行标准答案:4知识点解析:暂无解析15、设i是int型变量,f是float型变量,用下面的语句给这2个变量输入值。为了将,100和765.12分别赋给i和f,则正确的输入为______。scanf("i=%d,f=%f”,&i,&f);A、100<空格>765.12<回车>B、i=100,f=765.12<回车>C、100<回车>765.12<回车>D、x=100<回车>y=765.12<回车>标准答案:2知识点解析:暂无解析16、下面程序执行后的输出结果是(小数点后只写一位)______。main(){doubled;floatf;long1;inti;i=f=1=d=20/3;printf("%d%ld%f%f\n",i,l,f,d);}A、666.06.0B、666.76.7C、666.06.7D、666.76.0标准答案:1知识点解析:暂无解析17、当下面的程序运行后,变量c的值为______。main(){inta=45,b=27,c=0;c=max(a,b);}intmax(x,y)intx,y;{intz;if(x>y)z=x;elsez=y;return(z);}A、45B、27C、0D、72标准答案:1知识点解析:暂无解析18、若有语句scanf("%d%c%f",&a,&b,&c),假设输入序列为2223a123o.12,则a.b.c的值为______。A、无值B、2223,a,123o.12C、2223,a,无D、2223,a,123标准答案:8知识点解析:暂无解析19、若输入"Iamaboy!",下列程序的运行结果为______。charconnect(string1,string2,string)charstring1[],string2[],string[];{inti,j;for(i=0;stringl[i]!=’\0’;i++)string[i]=stringl[i];for(j=0;string2[j]!=’\0’;j++)string[i+j]=string2[j];string[i+j]=’\0’;}main(){chars1[100],s2[100],s[100];printf("\n输入string1:\n");scanf("%s",s1);printf("\n输入string2:\n");scanf("%s",s2);connect(s1,s2,s);printf("%s\n",s);}A、Iamaboy!B、输入string2:C、IamD、Iamaboy!标准答案:4知识点解析:暂无解析20、下面能正确进行字符串赋值操作的语句是______。A、chars[5]={"ABCDE"};B、chars[5]={’a’,’b’,’c’,’d’,’e’};C、char*s;s="ABCDEF"D、char*s;scanf("%s",s);标准答案:4知识点解析:暂无解析三、选择题(2分)(本题共20题,每题1.0分,共20分。)21、下列程序的输出结果是()。main(){inti=1,j=2,k=3;if(i++==1&&(++j==3‖k++==3))printf("%d%d%d\n",i,j,k);}A、123B、234C、223D、233标准答案:8知识点解析:本题考查自增运算符“++”、逻辑与运算符“&&”和逻辑或运算符“‖”。自增运算符“++”,出现在变量之前(如题中的中++n),表示先使变量的值加1,再使用变量的值进行运算:出现在变量之后(如题中的n++),表示先使用变量的值进行运算,再使变量的值加1。当逻辑与运算符“&&”两边的运算对象都为真时,逻辑表达式的值才为真;当逻辑或运算符“‖”左边的运算对象为真时,其值就为真,不用计算其右边的运算对象的值.所以根据运算符的优先级,题中应先计算内层括号中的值。++j是先自加后运算,因此运算时j的值等于3,所以表达式++j=3成立,即表达式的值为1;由于1与任何数都为进行或(‖)运算,结果都为1,因此k=3;最后计算“&&”之前的表达式,i++是先运算后自加,因此运算时i为1,所以i++=1成立,自加1后i=2。if语句的条件为真即“1”,所以输出i、j、k的值分别是2,3,3。22、下列程序的输出结果是()。#include<stdio.h>main(){inta=0,i;for(i=1;i<5;i++){switch(i){case0:case3:a+=1;case1:case2:a+=2;default:a+=3;}printf("%d",A);}A、19B、18C、6D、8标准答案:1知识点解析:本题考查switch语句。当i=1时,执行case1,因为没有遇到break语句,所以依次往下运行,a=a+2=2,a=a+3=5;当i=2时,执行case2,因为没有遇到break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行default,a=a+3=19,结束循环。23、在C语言中,while和do…while循环的主要区别是()。A、do…while的循环体不能是复合语句B、do…while允许从循环体外转到循环体内C、while的循环体至少被执行一次D、do…while的循环体至少被执行一次标准答案:8知识点解析:本题考查while和do…while循环的区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体:在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。24、若各选项中所用变量已正确定义,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(inta,intb){……}D、main(){floatfun(intI,intj);……x=fun(i,j);……}floatfun(inta,intB){……}标准答案:1知识点解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char时除外)。在选项A)中,调用的子函数在调用后面定义,所以不正确。在选项B)、C)中,被调用函数在主调函数之前定义,再在主函数中调用,所以是正确的:在选项D)中,在主调函数中先对于函数floatfun(inti,intj)进行了定义,然后进行调用。25、判断char型变量c1是否为小写字母的正确表达式为()。A、’a’<=c1<=’z’B、(c1>=A)‖(c1<=z)C、(’a’=>c1‖(’z’<=c1)D、(c1>=’a’)&&(c1<=’z’)标准答案:8知识点解析:C语言规定,字符常量在程序中要用单引号括起来。判断c1是否为小写字母的充要条件c1>=’a’和c1<=’z’,用逻辑与(&&)来表示。A选项的这种形式在C语言中没有,所以选项D)正确.26、有下列程序:main(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}执行后的输出结果是()。A、1B、2C、4D、死循环标准答案:1知识点解析:在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出1,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。27、若函数调用时,参数为基本数据类型的变量,下列叙述中正确的是()。A、实参与其对应的形参共占存储单元B、只有当实参与其对应的形参同名时才共占存储单元C、实参与其对应的形参分别占用不同的存储单元D、实参将数据传递给形参后,立即释放原先占用的存储单元标准答案:4知识点解析:本题考查函数调用时的参数传递。函数的形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间不影响。28、在C语言程序中,下列说法正确的是()。A、函数的定义和函数的调用均可以嵌套B、函数的定义不可以嵌套,但函数的调用可以嵌套C、函数的定义可以嵌套,但函数的调用不可以嵌套D、函数的定义和函数的调用均不可以嵌套标准答案:2知识点解析:本题考查函数调用的基本概念。因为函数的结果是个未知量,而函数定义时不能使用未知量,所以函数定义不可以嵌套,但函数的调用可以嵌套。29、下列说法中不正确的是()。A、指针是一个变量B、指针中存放的是数值C、指针可以进行加、减等算术运算D、指针变量占用存储空间标准答案:2知识点解析:指针中存放的是变量的地址,指针也可以进行增减运算,这时指针移动的最小单位是—个存储单元,而不是一个字节。30、若有定义和语句:int**pp,*p,a=20,b=10;pp=&p;p=&a;p=&b;printf(%d,%d\n",*p,**pp);则输出结果是()。A、20,10B、20,20C、10,20D、10,10标准答案:8知识点解析:本题考查指针变量的赋值。**pp是定义了一个指向指针的指针变量,语句pp=&p的意思是将pp指向指针p,*p和**pp都是指针p所指的内存空间的内容,即b的值。31、下列二维数组的说明中,不正确的是()。A、floata[][4]={0,1,8,5,9};B、inta[3][4];C、#defineN5D、inta[2][9.5];floata[N][3];标准答案:8知识点解析:C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式;二维数组的一般定义格式是:类型说明符数组名[常量表达式][常量表达式]。32、若有定义:“inta[2][3];”则对a数组的第i行第j列元素的正确引用为()。A、*(*(a+i)+j)B、(a+i)[j]C、*(a+i+j)D、*(a+i)+j标准答案:1知识点解析:本题考查如何通过地址来引用数组元素。通过地址来引用数组元素的方法有下列5种:①a[i][j];②*(a[i]+j);③*(*(a+i)+j);④*(a[i])[j];⑤*(&a[0][0]+3*i+j)。33、下列能正确进行字符串赋值的是()。A、chars[5]={"ABCDE"};B、chars[5]={’A’,’B’,’C’,’D’,’E’};C、char*s;s="ABCDE";D、char*s;printf("%s",s);标准答案:4知识点解析:字符串存储要有结束符“\0”且要占用一个空间,选项A)、B的空间不够:printf用来输出字符,不能输入字符串.34、若有说明chars1[30]="abc",s2[]="defghi";,则在使用函数strcat(s1,s2)后,结果是()。A、s1的内容更新为abcdefghiB、s1的内容更新为defghi\0C、s1的内容更新为defghiabc\0D、s1的内容更新为abcdefghi\0标准答案:8知识点解析:strcat(s1,s2)是把s2字符串连接到s1字符串的末尾,要保证s1能容纳下连接后的字符串。35、设有变量说明int(*p)[m],其中的标识符p是()。A、m个指向整型变量的指针B、指向m个整型变量的指针C、一个指向具有m个整型元素的一维数组的指针D、具有m个指针元素的一维指针数组,每个元素都指向整型变量标准答案:4知识点解析:本题考查指向数组的指针变量的声明。这里的p表示一个指向数组的指针;*p表示指针p指向地址的内容。36、下列描述中正确的是()。A、在C语言程序中预处理是指完成宏替换和文件包含指定的文件的调用B、预处理指令只能位于C源程序文件的首部C、预处理命令可以放在程序中的任何位置D、预处理命令结尾需要加分号标准答案:4知识点解析:本题考查预处理命令的特点,编译预处理命令的特点:①为了区别一般的语句,预处理命令行都必须以“#”号开始,结尾不加分号;②预处理命令可以放在程序中的任何位置;③在程序中凡是以“#”号开始的语句行都是预处理命令行。37、若有结构体定义:structstu{intnum;charsex;intage;}a1,a2;则下列语句中错误的是()。A、printf("%d,%c,%d",a1);B、a2.age=a1.age;C、a1.age++;D、a1.num=5;标准答案:1知识点解析:题中a1和a2两个结构体变量名所对应的成员相同,可以与运算“++’相结合。结构体变量的输出格式为:printf("要输出变量名;%d\t",结构变量名.要输出的成员变量名),38、C语言结构体类型变量在程序执行期间()。A、所有成员一直驻留在内存中B、没有成员驻留在内存中C、部分成员驻留在内存中D、只有一个成员驻留在内存中标准答案:1知识点解析:C语言结构体类型变量在程序执行期间所有成员一直驻留在内存中,39、在位运算中,操作数每右移两位,其结果相当于()。A、操作数乘以2B、操作数除以2C、操作数除以4D、操作数乘以4标准答案:4知识点解析:在位运算中,操作数每右移两位,相当于在操作数的左侧添0,最右面的两位被移出,即操作数除以4。40、在“文件包含”预处理语句的使用形式中,当#include后面的文件名用"",(双撇号)括起时,寻找被包含文件的方式是()。A、直接按系统设定的标准方式搜索目录B、先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索C、仅仅搜索源程序所在目录D、仅仅搜索当前目录标准答案:2知识点解析:本题考查库函数调用的知识点。格式1:#include(文件名),预处理程序在标准目录下查找指定的文件:格式2:#include"文件名",预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。四、公共基础填空题(本题共5题,每题1.0分,共5分。)41、一棵二叉树第六层(根结点为第一层)的结点数最多为【】个。标准答案:32知识点解析:根据二叉树的性质:二叉树第i(i≥1)层上至多有2i-1个结点,得到第六层的结点数最多是26-1=32。42、算法复杂度主要包括时间复杂度和【】复杂度。标准答案:空间知识点解析:程序在计算机上运行时所耗费的时间由程序运行时所需输入的数据总量、对源程序进行编译所需时间、计算机执行每条指令所需时间、程序中的指令重复执行的次数等决定。习惯上常常把语句重复执行的次数作为算法运行时间的相对量度,称作算法的时间复杂度。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。43、在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块),其中【】的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。标准答案:驱动模块知识点解析:在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中,驱动模块相当于被测试模块的主程序,它接收测试数据,并传给被测试模块,输出实际测试结果。承接模块通常用于代替被测试模块调用的其他模块,其作用仅做少量的数据操作,是一个模拟子程序,不必将子模块的所有功能带入。44、数据管理技术的发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是【】。标准答案:数据库系统阶段知识点解析:在数据管理技术的发展过程中,经历了人工管理阶段、文件系统阶段和数据库系统阶段,其中数据独立性最高的阶段是数据库系统阶段。45、数据结构分为逻辑结构和存储结构,循环队列属于【】结构。标准答案:逻辑知识点解析:数据的逻辑结构是反映数据元素之间逻辑关系的数据结构,它在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。在数据的存储结构中,不仅要存放各数据元素的信息,还需要存放各数据元素之间的前后件关系的信息。而循环队列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,供队列循环使用。所以循环队列不需要存放元素之间的前后件关系,故它属于逻辑结构。五、填空题(本题共13题,每题1.0分,共13分。)46、以下程序运行时,若从键盘输入:102030<回车>,输出的结果是【】。#include<stdio.h>main(){inti=0,j=0,k=0;scanf("%d%*d%d",&i,&j,&k);prinff("%d%d%d\n",i,j,k);}标准答案:10300知识点解析:在scanf格式控制符中有一个“*”附加说明符,表示跳过它指定的列数。程序中"%d%*d%d"表示首先将10赋给i,然后遇%。d读入整数但不赋给任何变量,最后将读人的整数30赋给变量j,变量k并没有重新赋值,仍为初始值0。所以输出的结果为10300。47、以下程序运行后的输出结果是【】。#include<stdio.h>#defineS(x)4*x*x+1main(){inti=6,j=8;prinff("%d\n",S(i+j));}标准答案:81知识点解析:带参数的宏定义是按#define命令行中指定的字符串从左到右进行替换。本题替换后得到:4*i+j*i+j+1,代入i,j的值得81。48、以下程序运行后的输出结果是【】。#include<stdio,h>main(){inta=3,b=4,c=5,t=99;if(b<a&&a<c)t=a;a=c;c=t;if(a<e&&b<c)t=b;b=a;a=t;printf("%d%d%d\n",a,b,e);}标准答案:4599知识点解析:要注意每条证语句后面是三条语句,而不是一条语句。执行第一条if语句时,条件表达式不成立,执行a=c;c=t;,此时a=5,c=99;执行第二条if语句时,条件表达式成立,执行t=b;b=a;a=t;交换a,b的值,输出结果为4,5和99。49、已知字符’A’的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是【】。#include<stdio.h>main(){chara,b;a=getchar();seanf("%d",&b);a=a-’A’+’0’;b=b*2;prinff("%c%c\n",a,b);}标准答案:1B知识点解析:本题输入B33,字符’B’被输入给字符变量a,33赋给b,执行a=a-’A’+’0’;得到a的值’1’;执行b=b*2;得到b值66,最后以字符型输出为1B。50、以下程序运行后的输出结果是【】#include<stdio,h>fun(inta){intb=0;staticintc=3;b++;c++;return(a+b+c);}main()inti,a=5;for(i=0;i<3;i++)prinff("%d%d",i,fun(a));printf("\n");}标准答案:10111212知识点解析:用static关键字声明的变量称为静态局部变量。静态局部变量只在编译时赋一次初值,以后再次调用函数时不再重新赋初值,而是保留上次函数调用结束时的值。程序中的变量c为静态变量,当再次调用fun函数时,变量c不再被赋初值,变量c的值为上次调用fun函数时所保留下来的值,具体在程序运行过程中的体现如下:当i=0时,第一次调用fun(5),这时a=5,b=0,c=3,执行b++,c++,得到b=1,c=4,则a+b+c=10,返回主函数输出010;当i=1时,第二次调用fun(5),这时a=5,b=0,c=4,执行b++,c++,得到b=1,c=5,则a+b+c=11,返回主函数输出111;当i=2时,第三次调用fun(5),这时a=5,b=0,c=5,执行b++,c++,得到b=1,c=6,则a+b+c=12,返回主函数输出212;当i=3时,循环结束,所以输出结果为:010111212。51、以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。#include<stdio,h>voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,b);for(i=0;i<3;i++)printf("%4d",b[i]);prinff("\n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;i<m;i++){x=ar[i][0];’for(j=0;j<n;j++)if(x<ar[i][j])x=ar[i][j];【】=x;}}标准答案:br[i]或*(br+i)知识点解析:程序中的数组a是一个3行4列的二维数组,一维数组b用于存放每行的最大数。在函数fun中,通过二重for循环求每行的最大数,外层for循环用于控制行数,内层for循环用于控制列数,当外层循环执行一次时,内层循环则从一行的4个数中找出最大数x,然后将最大值x赋给数组br,故空格处应填br[i]或*(br+i)。52、有下面的程序:#include<stdio,h>main(){enumteam{my,your=4,his,her=his+10};prinff("%d%d%d%d\n",my,your,his,her);此程序的输出结果是【】。A)0123B)04010C)04515D)14515标准答案:C知识点解析:枚举的语法规定,当枚举元素没有赋值时,如果前面没有其他枚举元素,其值为0;如果前面有其他枚举元素,其值为前一个元素的值加1,所以his的值为5,her的值为15。53、以下程序运行后的输出结果是【】。#include<stdio,h>#include<stating,h>voidfun(char*s,intp,intk){inti;for(i=p;i<k-1;i++)s[i]=s[i+2];}main(){chars[]="abedefg";fun(s,3,strlen(s));puts(s);}标准答案:abcfg知识点解析:fun函数中for循环语句的作用是将s所指的字符串中从第5个字符到第7个字符依次向前移动两个位置。输出结果为abcfg。54、以下程序运行后的输出结果是【】。#include<stdio,h>#include<string,h>main(){charch[]="abc".,x[3][4]:inti:for(i=0;i<3:i++)strcpy(x[i],ch):for(i=0;i<3:i++)printf("%s",&x[i][i]);printf("\n")}标准答案:abcbcc知识点解析:for循环用strcpy函数将字符数组ch的值"abc",分别复制给二维数组x的每一行,然后通过for循环先后打印出以x[0][0],x[1][1],x[2][2]开头的字符串"abe","bc","c",所以输出结果为:abcbcc。55、以下程序运行后输出结果是【】。#include<stdio,h>voidswap(inty){intt;t=x;x=y;y=t:printf("%d%d",x,y);}main(){ihta=3,b=4:swap(a,b);prinff("%d%d",a,b);}标准答案:4334知识点解析:程序将变量a,b的值传给函数swap的形参x,y,并在函数中对x,y的值进行交换,所以在函数swap中输出x,y的值4,3,由于c程序的函数是僧传递,实参a,b的值不会随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4。56、以下程序运行后的输出结果是【】。#include<stdio,h>main()charc1,c2;for(el=’0’,c2=’9’;e1<c2;c1++,c2--)printf("%c%c",c1,c2);printf("\n");}标准答案:918273645知识点解析:程序通过for循环将字符’0’~’9’从前向后,同时从后向前依次输出,所以输出结果为:0918273645。57、以下程序运行后输出结果是【】。#include<stdio,h>main(){inta,b,c;a=10;b:20;c=(a%b<1)‖(a/b>1);printf("%d%d%d\n",a,b,c);}标准答案:10200知识点解析:程序中(a%b<1)||(a/b>1)的运算顺序为先算括号→算术运算符→关系运算符→逻辑运算符。首先计算a%b=10,a/b=0,因为a%b<1为假(0),a/b>1也为假(0),所以整个表达式的结果为假(0),最后输出a,b,c的值为10200。58、以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串“yes!”,否则函数返回字符串“no!”,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如:adsda。请填空。#include<stdio,h>#include<string,h>char*huiwen(char*str){char*p1,*p2;inti,t=0;p1=str;p2=【】;for(i=0;i<=strlen(str)/2;i++)if(*pl++!=*p2--){t=1;breakif(【】)return("yes!");elsereturn("no!");}main(){charstr[50];printf("Iaput:");scanf("%s",str);printf("%s\n",【】);标准答案:p1+(stfien(str)-1)或str+(strlen(str)-1)t==0或!thuiwen(str)或(strlen(str)-1)+p1或(stden(str)-1)+str知识点解析:回文字符串是指正向与反向拼写都一样。由huiwen函数可知,第三处应该填写调用函数huiwen(str)。在函数huiwen中,执行P1=str;使p1指向字符串str中第一个字符的地址,则第一处应该使p2指向字符串str中最后一个字符的地址,故填p1+(stden(str)-1)或str+(strlen(str)-1)。本题要求如果是回文,则返回"yes!",否则,返回"no!",故当t=0时,说明字符串str为回文,所以第二处应填t==0或!t。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、十进制数555的十六进制数表示形式为______。A、220B、22AC、22BD、22C标准答案:4知识点解析:本题考查不同进制数间的转换,(555)10=(1000101011)2=(22B)16。2、计算机的存储器完整的应包括______。A、内存储器与外存储器B、磁盘、磁带与光盘C、RAM与ROMD、软盘与硬盘标准答案:1知识点解析:存储器包括内部存储器和外部存储器,而选项B、D只能统称为外部存储器,选项C属于内部存储器。3、在具有n(n>1)个结点的完全二叉树中,结点i(2i>n)的左孩子结点是______。A、2iB、2i+1C、不存在D、2i-1标准答案:4知识点解析:完全二叉树中叶子结点一定在最后一层或两层。n个结点的完全二叉树中,其层数最多为log2n+1。结点i与双亲的关系是i≠1时,i的双亲是trunc(i/2)。结点i与子女的关系是:若2i≤n,则i的左孩子是标号2i的结点,若2i>n,则不存在左孩子;若2i+1≤n,则i的右孩子是标号2i+1的结点,若2i+1>n,则该结点不存在右孩子。4、结构化程序流程图中一般包含3种基本结构。下述结构中,______不属于其基本结构。A、顺序结构B、嵌套结构C、循环结构D、条件结构标准答案:2知识点解析:结构化程序流程图中包括顺序结构、条件结构和循环结构3种基本结构,而不包含嵌套结构。5、计算机中,能够用来与外存交换信息的是______。A、键盘B、RAMC、显示器D、ROM标准答案:2知识点解析:RAM中存储着当前使用的程序、数据、中间结果和与外存交换的数据,CPU根据需要可以直接读/写RAM中的内容。6、堆排序是一种______排序。A、插入B、选择C、交换D、归并标准答案:2知识点解析:堆排序是一种选择排序。选择排序有直接选择排序和堆排序两种。7、瀑布模型适合于______。A、大型软件系统开发B、中型软件系统开发C、小型软件系统开发D、大、中、小型软件系统开发标准答案:4知识点解析:根据瀑布模型的特点(连续无反馈)是对于每一个阶段来说,前一个阶段工作的正确无误是至关重要的。因此,瀑布模型不能很好地适应那些需求不易确定和多变的软件项目的开发。由于大项目在软件开发的前期阶段,人们很难详细地了解系统的许多细节,从而在项目进行过程中常会出现需求变化。因此,瀑布模型适用于小系统开发项目,而不适用于大、中型软件系统开发。8、在多媒体计算机系统中,不能存储多媒体信息的是______。A、光盘B、磁盘C、磁带D、光缆标准答案:8知识点解析:光缆是多媒体信息的传输通道,不能存储多媒体信息。9、对一个关系投影操作以后,新关系的元组个数______原来关系的元组个数。A、小于B、小于或等于C、等于D、大于标准答案:2知识点解析:投影操作是从关系中选择某些列,投影后消去了某些属性,就可能出现重复元组,根据关系的性质,应消去这些完全相同的元组。这样使得新关系的元组数小于或等于原来的元组数。10、下列关于“数据库系统(DBS)”的叙述中,正确的一条是______。A、DBS是指在计算机系统中引入数据库后的系统构成B、DBS是帮助用户建立、使用和管理数据库的一种计算机软件C、DBS是用户建立的若干数据库文件的集合D、DBS是一种新颖的关系数据库管理系统标准答案:1知识点解析:数据库系统DBS是指在计算机系统中引入数据库后的系统构成。数据库系统是一种带有数据库的综合系统,它包括硬件、软件(如操作系统、数据库管理系统、编译系统及应用开发工具软件等)、数据库以及开发者和使用者。二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、以下运算符中优先级最高的运算符是______。A、++B、?:C、!=D、&&标准答案:1知识点解析:四个运算符的优先级由高到低依次是:++,&&,?:,!=。12、下列4组选项中,均不是C语言关键字的选项是______。A、definesumtypeB、getccharprintfC、includescanfcaseD、whilegopow标准答案:1知识点解析:本题各选项中的关键字只有三个:char,case,while。13、已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=142;则以下不符合c语言语法的表达式是______。A、x%(-3)B、w+=-2C、k=(a=2,b=3,a+b)D、a+=a-=(b=4)*(a=3)标准答案:1知识点解析:求余运算符“%”为双目运算符,要求两个操作数都是整型。14、表达式18/4*sqrt(4.0)/8值的数据类型为______。A、intB、floatC、doubleD、不确定标准答案:4知识点解析:根据数据类型转换时的就长转换规则,可以得到最后的结果应是实型。15、设a=12,a定义为整型变量。表达式a+=a-=a*=a的值为______。A、12B、144C、0D、132标准答案:4知识点解析:表达式a+=a-=a*=a的运算方向是自右向左,即先计算a*=a,a值为a*a=144,再计算a-=a,a值为a-a=0,再计算计a+=a,故表达式和a的值都为a+a=0。16、在C语言中,合法的字符常量是______。A、’\081B、’\x43’C、’ab’D、\0标准答案:2知识点解析:选项A错在表示转义字符的三位八进制数中不能出现8,选项C错在字符串要用双引号括起,选项D错在单个字符应用单引号括起。选项B表示用两位16进制数代表转义字符。17、以下程序片段的输出结果是______。charstr[]="abc\n\012\\\"";printf("%d",strlen(str));A、4B、5C、6D、7标准答案:8知识点解析:abc后的四个字符都是由反斜线引出的转义字符,\n是换行符,\012也是换行符,\\表示反斜线本身,\"表示双引号,因此,一共是7个字符。18、假定有以下变量定义,则能使值为3的表达式是______。intk=7,x=12;A、x%=(k%=5)B、x%=(k-k%5)C、x%=k-k%5D、(x%=k)-(k%=5)标准答案:8知识点解析:选项A,(k%=5)=2,(x%=2)=0;选项B,(k-k%5)=7-2=5,(x%=5)=2:选项C,(k%5)=2,k-2=7-2=5,(x%5)=2;选项D,(x%=7)=5,(k%=5)=2,5-2=3。19、下面程序运行的结果是______。main(){intx,y,z;x=0;y=z=-1;x+=-z---y;printf("x=%d\n",x);}A、x=4B、x=0C、x=2D、x=3标准答案:4知识点解析:表达式“x+=-z---y”等价于“x=x+(-z-(-(-y)))=0+(1-(-1))=2”。20、下面语句中不能定义一个数组,元素值依次分别为1,1,1,0,0的是______。A、staticinta[5]={1,1,1,0,0};B、staticinta[5]={1,1,1};C、staticinta[]={1,1,1,0,0};D、staticinta[5]={1*2,0*3};标准答案:8知识点解析:不可能用表达式的方式来给数组元素一一赋值。三、选择题(2分)(本题共30题,每题1.0分,共30分。)21、设a、b、c、d、m、n均为int型变量,且a=5、b=6、c=7、d=8、m=2、n=2,则逻辑表达式(m=a>b)&&(n=c>d)运算后,n的值为______。A、0B、1C、2D、3标准答案:1知识点解析:C语言中比较表达式的运算结果为0或1。0代表不成立,1表示成立。22、以下程序的输出结果是______。main(){intnum=0;while(num<=2){num++;printf("%d\n",num);}}A、1234B、123C、12D、1标准答案:2知识点解析:while的执行过程是:先计算条件表达式的值,若成立则执行循环体,重复上述过程,直到条件表达式的值为“假”(值为零)时,退出循环,并转下—语句去执行。本题在输出num的值为3之后,再判断while的循环条件3<=2,不成立,所以不再输出num的值,故本题的答案选B。23、下面的关键字中,不能够从循环体中跳到循环体外的是______。A、gotoB、breakC、returnD、continue标准答案:2知识点解析:在C语言中,可以用break语句和continue语句跳出本层循环和结束本次循环。goto语句可跳出多层循环,如果在函数的循环体内使用return语句,就会直接结束循环返回函数值。24、以下各选项企图说明一种新的类型名,其中正确的是______。A、typedefv1int;B、typedefv2=int;C、typedefintv3;D、typedefv4:int标准答案:4知识点解析:C语言中可以使用typedef来重新定义已有的数据类型,相当于为数据类型取个别名。25、为了避免嵌套的if-else的二义性,C语言规定:else与______配对。A、缩排位置相同的ifB、其之前最近的ifC、其之后最近的ifD、同一行上的if标准答案:2知识点解析:在if语句中又包含—个或多个if语句称为if语句的嵌套。应当注意if与else的配对关系,在C语言中,从最内层开始,else总是与它上面最近的(未曾配对的)if配对。26、在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。A、地址传递B、单向值传递C、由实参传绐形,再由形参传回实参D、传递方式由用户指定标准答案:2知识点解析:C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。27、以下函数值的类型是______。fun(floatx){floaty;y=3*x-4;returny;}A、intB、不确定C、voidD、float标准答案:1知识点解析:C语言中如果函数前不加任何数据类型时,默认函数的类型为整型,函数的类型就是函数返回值的类型。28、以下选项中,非法的字符常量是______。A、’\t’B、’\17’C、\nD、’\xaa’标准答案:4知识点解析:C语言中字符常量是以单引号括起来的单个字符,或为以“\”与三位八进制数值或两位十六进制数值代替单个字符。29、以下程序的输出结果是______。#include<stdio.h>main(){inta=200;#definea100printf("%dd",a);#undefaprintf("%d",a);}A、200100B、100100C、100200D、200200标准答案:4知识点解析:#define宏名的有效范围为定义命令之后到本源文件结束,可以在程序中使用#undef命令终止宏定义的作用域。本题由于#undef的作用,使a的作用范围在#definea100到#undefa之间,故答案为C。30、若有说明inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是______。A、i=*p;B、*p=*&j;C、i=&j;D、i=**p;标准答案:2知识点解析:指针是一种用来存放变量地址的特殊变量。本题中指针变量p用于存放整型变量i的地址,改变*p的值即为改变i的值。又因为“&”和“*”两个运算符的优先级别相同,按自右而左的方向结合,所以*&j先进行&j运算,得j的地址,再进行*迄算,取所得地址里面的值,故*&j与j等价。31、假定int类型变量占用两个字节,若有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是______。A、3B、6C、10D、20标准答案:8知识点解析:当数组定义后,系统就为其分配内存空间,而不论其中有没有内容。因此,本题中数组x[10]不论是否为其元素初始化,它所分配的存储空间仍为2*10=20个字节。32、执行以下的程序段后,m的值是______。inta[2][3]={{1,2,3},(4,5,6}};intm,*p;p=&a[0][0];m=p[4];A、4B、5C、3D、不确定标准答案:2知识点解析:程序中定义了一个指向整型变量的指针变量,并对其赋值为二维整型数组a的首元素的地址。P[4]等价于*(p+4),即二维数组a中第四个元素的值,而a是一个2*3的二维数组,其第四个元素为a[1][1],即5。33、以下程序的输出结果是______。main(){inti,a[10];for(i=9;i>=0;i-)a[i]=10-i;printf("%d%d%d",a[2],a[5],a[8]);}A、258B、741C、852D、369标准答案:4知识点解析:在本题运行时主要注意的是当i=9时,a[i]=10-9=1;i=8时,a[i]=10-8=2;i=7时,a[i]=10-7=3;……依此类推,直到i=0时,a[i]=10-0=10:此时,i的值已变为-1,判断for的循环条件,不成立,然后输出a[2],a[5],a[8]分x伪8,5,2。34、下面程序的输出结果为______。#include<string.h>main(){charp1[7]="abc",p2[]="ABC",str[50]="xyz";strcpy(str,strcat(p1,p2));printf("%s",str);}A、xyzabcABCB、abcABCC、xyzabcD、xyzABC标准答案:2知识点解析:strcpy(str1,s1):作用是将字符串s1拷贝到字符数组str1中去。strcat(字符数组1,字符数组2):把字符串2接到字符串1的后面,结果放在字符数组1中,函数调用后返回字符数组1的地址。本题定义了三个字符数组p1,p2,str,strcat(p1,p2)函数的作用是将字符串数组p2接到字符串p1的后面,结果放在字符数组p1,再通过strcpy()函数将该字符串拷贝到str数组中,原str数组中的字符串xyz被覆盖,因此打印输出字符串str即可得到abcABC。35、以下数组定义中不正确的是______。A、inta[2][3];B、intb[][3]={0,1,2};C、intc[100][100]={0};D、intd[3][]={{1,2},{1,2,3},{1,2,3,4}};标准答案:8知识点解析:一维数组的定义方式为:类型说明符数组名[常量表达式];选项A符合此定义形式,正确;C语言中多维数组赋初值时可以部分赋值,也可以不指定除第一维以外的其他维的大小,故选项C正确;另外,如果对全部数组元素都赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省,所以选项B正确,而选项D是错误的。36、以下程序的输出结果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}A、650B、1470C、5430D、输出值不定标准答案:1知识点解析:对未给出初始值的整数数组元素,被默认初始化为零。37、在说明语句int*f();中,标识符f代表的是______。A、一个用于指向整型数据的指针变量B、—个用于指向—维数组的行指针C、—个用于指向函数的指针变量D、一个返回值为指针型的函数名标准答案:8知识点解析:带回指针值的函数,其—般定义形式为:类型标识符*函数名(参数表);例如,int*f(x,y);其中,f是函数名,调用它以后能得到—个指向整型数据的指针(地址),x,y是函数f的形参。在f的两侧分别为*运算符和()预算符,而()优先级高于*,因此f先与()结合,显然是函数形式。这个函数前面有一个*,表示此函数是指针型函数(函数值是指针)。前面的int表示返回的指针指向整型变量。38、以下程序的输出结果是______。main(){charst[20]="hello\0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}A、99B、520C、1320D、2020标准答案:2知识点解析:C语言中字符串是以’\0’字符结束的,且strlen()函数计算的是’\0’字符前的所有字符的个数。本题中strlen(st)应为5。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。sizeof()函数是计算变量或数组的所分配到的内存空间的大小。所以本题的sizeof(st)为20。39、以下程序运行后的输出结果是______。intd=1;fun(intp){staticintd=5;d+=p;printf("%d",d);returnd;}main(){inta=3;printf("%d\n",fun(a+fun(d)));}A、699B、669C、61515D、6615标准答案:4知识点解析:静态局部变量在编译时赋初值,即只赋初值一次,在程序运行时它已有初值。以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值,而对自动变量赋初值,不是在编译时进行的,而在函数调用时进行,每调用一次函数重新给一次初值,相当于执行一次赋值语句。本题在程序开头定义了全局变量d并赋初值1,在被调函数fun()中,定义了静态局部变量d,初值为5。在第一次调用函数fun时,d初值为5,p由主函数传递过来的值为1,则d=d+p=5+1=6,由于d是静态局部变量,在函数调用结束后,它仍保留d=6。再次调用fun函数,d的初值为6,而由主函数传递的p的值为9,则此时d=d+p=6+9=15,最后打印输出d的值并返回主函数。40、以下选项中,不能确定赋值的是______。A、chars1[10];s1="chest";B、chars2[]={’C’,’t’,’e’,’s’,’t’};C、chars3[20]="Chest";D、char*s4="Ctest\n"标准答案:1知识点解析:C语言中不能将字符串常量直接赋给数组。但在赋初值时可以。41、以下程序输出正确的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}A、56B、25C、34D、程序错误标准答案:1知识点解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过mailoc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。42、下面程序的输出结果是______。#definea121constb=12;enumc{a1,a2};main(){printf("%d,%d,%d",sizeof(a),sizeof(b),sizeof(enumc));}A、121,0,4B、2,2,2C、0,2,4D、0,2,2标准答案:2知识点解析:sizeof函数是取变量所占的存储空间的字节数,标识a代表常量121;constb=12;,其中数据类型可以缺省,默认为整型;enumc{a1,a2};定义了—个枚举类型enumc,a1,a2为枚举元素,在C编译时,对枚举元素按常量处理,它们的值按定义顺序依次为0,1。因此它们的字节数均为2,2,2。43、以下程序的输出结果是______。structHAR{intx,y;structHAR*p;}h[2];main(){h[0].x=1;h[0].y=2;h[1].x=3;h[1].y=4;h[0].p=&h[1];h[1].p=h;printf("%d%d\n",(h[0].p)->x,(h[1].p)->y);}A、12B、23C、14D、32标准答案:8知识点解析:本题中是一个含有两个结点的循环链表。C语言中结构体的定义为:struct结构题类型名{成员项表;};44、变量a所占的内存字节数是______。unionU{charst[4];inti;long1;};structA{intc;unionUu;}a;A、4B、5C、6D、8标准答案:4知识点解析:结构体变量所占内存长度是各成员占内存长度之和,而共用体变量所占的内存长度等于最长的成员的长度。本题结构体变量a中成员c为整型占2个字节,共用体变量u最大长度为4个字节,故选C。45、以下程序的结果是______。inta,b;voidfun(){a=100;b=200;}main(){inta=5,b=7;fun();printf("%d%d\n",a,b);}A、100200B、57C、200100D、75标准答案:2知识点解析:全程变量是可以在于函数中对其值作改变,且它也可作为函数间的值传递。但当函数或子函数中定义了与全程变量名称相同的局部变量,则全程变量将被屏蔽。46、以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}A、19B、17C、15D、12标准答案:8知识点解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:#define宏名(形参表)字符串本题的M(a+,b+c,c+a)被字符串a+b*b+c+c+a代替。47、若有以下说明和语句:structst{intn;char*ch;};strucesta[3]={5,"abc",7,"def",9,"ghk"},*p=a;则值为6的表达式是______。A、p++->nB、p->n++C、(*p).n++D、++P->n标准答案:8知识点解析:根据结构变量的存储特点,p+1意味着增加地址值为结构体数组a的一个元素所占的字节数,即p++使p由a[0]指向a[1]起始地址。本题++p->n得到p指向的结构伸变量中成员n的值使之加1。因为p指向数组a起始地址,p->n的值为5,再执行自加1运行,结果为6。48、整型变量X和Y的值相等,且为非0值,则以下选项中结果为0的表达式是______。A、X||YB、X|YC、X&YD、XY标准答案:8知识点解析:“||”为或运算符,当其左右表达式中只要一个为非零则整个表达式的值1。|是按位或,&是按位与,^是按位异或,这三位运算符是按值的二进制位来比较的。49、C语言中,组成数据文件的成分是______。A、记录B、数据行C、数据块D、字符(字节)序列标准答案:8知识点解析:C语言中的文件是流式文件。流式文件是一种无结构文件,即整个文件是一串字符流或二进制流。文件的存取以字符或字节为单位。50、下面的程序执行后,文件test.t中内容是______。#include<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w");for(i=0;i<strlen(st);i++)fputc(st[i],myf);fclose(myf);}main(){fun("test.t","newworld");fun("test.t","hello,");}A、hello,B、newworldhelloC、newworldD、hello,rld标准答案:1知识点解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读、写入、读写等方式。四、公共基础填空题(本题共5题,每题1.0分,共5分。)51、在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、【】遍历和后序遍历。标准答案:中序知识点解析:在先左后右的原则下,根据访问根结点的次序,二叉树的遍历可以分为三种:前序遍历、中序遍历和后序遍历。前序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先访问根结点,然后遍历左子树,最后遍历右子树:并且遍历左、右子树时,仍然先访问根结点,然后遍历左子树,最后遍历右子树。中序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。后序遍历指在访问根结点、遍历左子树与遍历右子构这三者中,首先遍历右子树,然后访问根结点,最后遍历左子树;并且遍历左、右子树时,仍然先遍历右子树,然后访问根结点,最后遍历左子树。52、结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、【】和限制使用goto语句。标准答案:模块化知识点解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用goto语句。自顶向下:程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。逐步求精:对复杂问题,应设计—些子目标作过度,逐步细化。模块化:—个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进—步分解为具体的小目标,把每个小目标称为—个模块。限制使用goto语句。53、软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。标准答案:测试实例知识点解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。54、数据库系统的三级模式分别为【】模式、内部级模式与外部级模式。标准答案:概念或概念级知识点解析:数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式和外部级模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入设备级上(如磁盘及磁盘操作)。外模式也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。55、数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、【】和处理过程。标准答案:数据存储知识点解析:数据字典是各类数据描述的集合,它通常包括5个部分,即数据项,是数据的最小单位;数据结构,是若干数据项有意义的集合:数据流,可以是数据项,也可以是数据结构,表示某—处理过程的输入或输出;数据存储,处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件;处理过程。五、填空题(本题共14题,每题1.0分,共14分。)56、定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。标准答案:25知识点解析:#NAME?57、函数count(head)统计链表的结点个数,head为表头指针,阅读程序,要求将整个if语句改成while循环控制结构,其形式为【】。#include<stdio.h>intcount(NODE*head){intn=0;if(head!=NULL)do{n++;head=head->next;}while(head!=NULL);returnn;}标准答案:while(p!=NULL){n++;head=head→next;}知识点解析:do…while循环转化为while循环,循环体执行的内容应该是一致的,不同的是do…while结构是先执行一次循环体,然后再判断循环条件是否满足,而while循环则是先判断循环条件是否满足,满足则执行循环体。所以do…while循环结构若想转换为while循环结构,必须在do…while循环之前先对循环条件进行一个判断,即此题中的if(head!=NULL)。注意:3种循环结构的比较。58、语句printf("%f\n",13.0*(1/5));的输出结果为【】。标准答案:0知识点解析:/表示整除,1/5为0,0乘以任何数都得零,但是与浮点型相乘,要转化为浮点型,所以结果为0.000000。注意:在一个运算符的两边如果一个是字符型,一个是整型,则把字符型转换为整型之后再进行运算。59、下列程序的运行结果是【】。#include<stdio.h>voidmain(){ints=0,k;for(k=7;k>4;k--){switch(k){case1:case4:case7:s++;break;case2:case3:case6:break;case0:case5:s+=2;break;}}printf("s=%d",s);}标准答案:s=3知识点解析:当k=7时,执行case7,s++,s的值为1。当k=6时,直接break出switch结构;当k=5时,执行case5,s+=2,s的值为3;当k=4时由于不满足for循环的条件,所以结束循环,所以输出的s的值为3。注意:循环语句和条件的嵌套使用。60、以下程序的功能是根据输入的“y”(“Y”)与“n”(“N”),在屏幕上分别显示出“ThisisYES.”与“ThisNO.”。空白处需要填入的内容是#include<stdio.h>voidYesNo(charch){switch(ch){case’y’:case’Y’:printf("\nThisisYES,\n");case’n’:case’N’:printf("\nThisisNO.\n");}}main(){charch;printf("\nEnterachar’y’,’Y’or’n’,’N’:");ch=【】;printf("ch;%c",ch);YesNo(ch);}标准答案:getchar知识点解析:题中要求根据输入的字符调用函数YesNo来判断输入的字符是y(Y)还是n(N),字符的输入可用字符输入函数getchar。函数YesNo用来判断一个字符是y(Y)还是n(N),主要用了一个switch多分支结构来比较输入字符与字符’y’,’Y’、,’n’,’N’是否相等来实现的。注意:用于字符串处理的函数。61、以下程序调用函数swap_p将指针s和t所指单元(a和b)中的内容交换,请填空。main(){inta=10,b=20,*s,*t;s=&a;t=&b;swap_p(【】);printf("%d%d,a,b");}swap_p(int**ss,int**tt){intterm;term=**ss;**ss=**tt;**tt=term;}标准答案:&s,&t知识点解析:指针做函数参数时,

温馨提示

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

评论

0/150

提交评论