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

下载本文档

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

文档简介

国家二级(C语言)笔试模拟试卷5(共9套)(共469题)国家二级(C语言)笔试模拟试卷第1套一、选择题(2分)(本题共29题,每题1.0分,共29分。)1、以下叙述错误的是()。A、C语言区分大小写B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C、整数和实数都能用C语言准确无误地表示出来D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示标准答案:C知识点解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和Q是两个不同的变量;②变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改;③整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十进制、八进制和十六进制表示。2、以下不正确的转义字符是()。A、’\\’B、’\t’C、’\n’D、’088’标准答案:D知识点解析:’\\’是反斜线转义字符;’\t’是水平跳格转义字符;’\n’是换行转义字符;C语言中没有规定’088’是转义字符。3、可在C程序中用作用户标识符的一组标识符是()。A、voiddefineWORDB、as_b3_123IfC、For-abccaseD、2cDOSIG标准答案:B知识点解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或下划线,关键字不能用作用户标识符。4、若变量已正确定义并赋值,则以下符合C语言语法的表达式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b标准答案:B知识点解析:暂无解析5、有以下程序段charch;intk;ch=’a’;k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII十进制代码为97,则执行上述程序段后输出结果是()。A、因变量类型与格式描述符的类型不匹配输出无定值B、输出项与格式描述符个数不符,输出为零值或不定值C、a,97,12k=12D、a,97,k=12标准答案:D知识点解析:在用基本输出函数printf时,格式说明与输出项的个数应该相同。如果格式说明的个数少于输出项的个数,多余的输出项不予输出;如果格式说明个数多于输出项个数,则对于多余的格式项输出不定值或0。6、下列叙述中错误的是()。A、计算机不能直接执行用C语言编写的源程序B、C程序经C编译程序编译后,生成后缀为.obj的文件是一个二进制文件C、后缀为.obj的文件,经连接程序生成后缀为.exe的文件是一个二进制文件D、后缀为.obj和.exe的二进制文件都可以直接运行标准答案:D知识点解析:暂无解析7、有以下程序#include<stdio.h>voidmain(){inta=1,b=0;printf("%d,",b=(a++)+(a++));pfintf("%d\n",a+B);}程序运行后的输出结果是()。A、4,6B、2,5C、3,5D、2,6标准答案:B知识点解析:暂无解析8、若有代数式(其中P仅代表自然对数的底数,不是变量),则下列能够正确表示该代数式的C语言表达式是()。A、sqrt(abs(n^x+e^x))B、sqrt(fabs(pow(n,x)+pow(x,e)))C、sqrt(fabs(pow(n,x)+exp(x)))D、sqrt(fabs(pow(x,n)+exp(x)))标准答案:C知识点解析:n和e的x幂次方,要分别调用C语言的数学库函数doublepow(n,x)和doubleexp(x),因为这两个函数的返回值都为double型,对两者的和计算绝对值,调用库函数doublefabs(pow(n,x)+exp(x)),求出和的绝对值,再调用开平方函数doublesqrt(fabs(pow(n,x)+exp(x))),这样计算出的结果就是题干中表达式的值。9、设有定义:intk=0;,下列选项的4个表达式中与其他3个表达式的值不相同的是()。A、k++B、k+=1C、#NAME?D、k+1标准答案:A知识点解析:暂无解析10、有下列程序,其中%u表示按无符号整数输出。main(){unsignedintx=0xFFFF;/*x的初值为十六进制数*/printf("%u\n",x);}程序运行后的输出结果是()。A、-1B、65535C、32767D、0xFFFF标准答案:B知识点解析:“%u”格式符表示以十进制形式输出无符号整形变最。本题中无符号整形变量x=0xFFFF表示的是十六进制无符号整型变量的最大值65535,所以最后输出的结果为65535。11、下面程序的运行结果是()。for(i=3;i<7;i++)printf((i%2)?("**%d\a"):("##%d\n"),i);A、**3##4**5**6B、##3**4##5**6C、##3**4##5##6D、**3##4**5##6标准答案:D知识点解析:本题考查printf函数的输出格式和条件表达式“?:”的使用。①printf函数输出时“**%d\n”和“##%d\n”中的“##”和“**”都是直接输出。②条件表达式的基本格式为:“a?b:c”。它的运算规则为:当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。12、设有语句:if(a==1)b=2;c=3;,以下语句中与之等价的是()。A、if(a==1){b=2;c=3;}B、if(a!=1){;}else{b=2;c=3;}C、if(a=1)c=3;b=2;D、(a==1)?b=2:a:=a;c=3;标准答案:D知识点解析:暂无解析13、运行下列程序时,若输入数据为“321”,则输出结果是()。main(){intnum,i,j,k,s;scanf("%d",&num);if(num>99)s=3;elseif(num>9)s=2;elses=1;i=num/100;j=(num-i*100)/10;k=(num-i*100-j*10);switch(s){case3:printf("%d%d%d\n",k,j,i);break;case2:printf("%d%d\n",k,j);case1:printf("%d\n",k);}}A、123B、1,2,3C、321D、3,2,1标准答案:A知识点解析:本题考查if-else语句和switch语句。scan函数通过键盘读入nUm的值。因为num=321>99,所以s=3,i=3,i=2k=1。因为s=3,所以执行case3,输出k,j,i的值,然后通过breed结束程序。14、判断char型变量c1是否为小写字母的正确表达式为()。A、’a’<=c1<=’z’B、(c1>=A)&&(c1<=z)C、(’a’>=c1||(’z’<=c1)D、(c1>=’a’)&&(c1<=’z’)标准答案:D知识点解析:暂无解析15、设有定义:chars[10];inti=0;,以下不能将一行(不超过100个字符)带有空格的字符串正确读入的语句或语句组是()。A、gets(s);B、scanf("%s",s);C、while((s[i++]=getchar())!=’\n’);s[i]=’\0’;D、do{scanf("%c",&s[i]);}while(s[i++]!=’\n’);s[i]=’\0’;标准答案:B知识点解析:本题考查标准输入输出函数和循环语句。gets(s)函数的作用是将输入的字符读入字符串s,直到遇到回车。而scanf()数接收字符串时的结束标志为回车或者空格。因此选巧16、下面4个关于C语言的结论中错误的是()。A、可以用do…while语句实现的循环一定可以用while语句实现B、可以用for语句实现的循环一定可以用while语句实现C、可以用while语句实现的循环一定可以用for语句实现D、do…while语句与while语句的区别仅是关键字“while”出现的位置不同标准答案:D知识点解析:本题考查几个循环语句的关系。①do…while语句、while语句、for语句所实现的循环可以相互替代;②do…while语句和while语句的区别是do…while语句至少执行一次,再判断循环条件,while语句是先判断条件再执行。17、若有以下程序段:structst{intn;int*m;};inta=2,b=3,c=5;structsts[3]=({101,&a},{102,&c},{103,&b}};main(){structst*p;p=s;…}则以下表达式中值为5的是()。A、(p++)->mB、*(p++)->mC、(*p).mD、*(++p)->m标准答案:D知识点解析:暂无解析18、下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4;*y=s[0];m++;}voidmain(){inta[]={1,2,3,4,5},k;intx;printf("\n");for(k=0;k<=4;k++){sub(a,&x);printf("%d,",x);}}A、1,1,1,1,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,标准答案:A知识点解析:本题中sub(int*s,int*y)函数的参数是两个指针型变量,在函数体内将数组s的第一个元素赋给y。主程序内,首先定义了一维数组并赋初值,然后通过for循环,5次调用sub(a,&x)函数,每一次调用都是将数组a的第一个元素1赋给x,并输出。19、有以下程序:#include<stdioh>intfun(intx,inty){if(x!=y)return(y);elsereturn((x+y)/2);}main(){inta=4,b=5,c=6;printf("%d\n",fun(2*a,fun(b,C)));}程序运行后的输出结果是()。A、3B、6C、8D、12标准答案:B知识点解析:暂无解析20、C语言中规定,程序中各函数之间()。A、既允许直接递归调用也允许间接递归调用B、不允许直接递归调用也不允许间接递归调用C、允许直接递归调用不允许间接递归调用D、不允许直接递归调用允许间接递归调用标准答案:A知识点解析:本题考查函数调用的基本概念。在函数调用时,只要符合函数的使用,程序中的各个函数间既可以直接调用其他函数,也可以递归调用其自身。21、以下程序的输出结果是()。#include<stdio.h>main(){inta[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;for(i=0;i<3;i++)for(j=i;j<=i;j++)s+=a[i][a[j][j]];printf("%d\n",s);}A、3B、4C、1D、9标准答案:B知识点解析:当外层循环为i时,内层循环i只能取j=i,所以s+=a[i][a[j][j]],其实就是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[01[0]]=s+a[0][0]=1,当i=1时,s=s+a[1][a[1][1]1=s+a[1][1]=1+1=2,当i=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+2=4。22、有以下程序:#include<stdio.h>#defineX5+6main(){inta=2,c;C=X*2:printf("%d",C);}程序运行后的输出结果是()。A、17B、22C、16D、11标准答案:A知识点解析:暂无解析23、当用“#defineF37.5f”定义后,下列叙述正确的是()。A、F是float型数B、F是char型数C、F无类型D、F是字符串标准答案:D知识点解析:字符替换定义格式为:#define标识符(形参表)形参表达式。题中F是代表形参表达式的标识符(字符串)。24、在一介C源程序文件中,要定义一个只允许本源文件中所有函数使用的全局变量,则该变量需要使削的存储类别是()。A、autoB、registerC、externD、static标准答案:D知识点解析:“auto”类定义的自动变:鞋实质上是一个函数内部的局部变量,作用域是在所说明的函数中;“register”说明只能用于说明函数中的变量和参数中的形参,因此不允许将外部变量或静态变量说明为register;“extern”是定义在所有函数之外的全局变量,它可以被所有的函数访问,在所有函数体的内部是有效的,所以函数之间可以通过外部变量直接传递数据;“static”为允许本源文件中所有函数使用的全局变量。25、以下说法正确的是()。A、宏定义是C语句,要在行末加分号B、可以使用#undefine提前结束宏名的使用C、在进行宏定义时,宏定义不能嵌套D、双引号中出现的宏名也要进行替换标准答案:B知识点解析:本题考查宏的使用规则:①字符替换格式:#define标识符字符串,行末不加分号;②双引号中出现的宏名不替换;③如果提前结束宏名的使用,程序中可以使用#ndefine;④在进行宏定义时,宏定义能层层置换,能够嵌套。26、下面程序的输出结果是()。typedefunion{longx[1];inty[4];charz[10];}M;Mt;main(){printf("%d\n",sizeof(t));}A、32B、26C、10D、4标准答案:C知识点解析:“联合体”所占用的内存空间为最长的成员所占用的空间。题中联合体的z[10]成员联合体中占空间最长的成员。27、以下程序中函数sort的功能足对a数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d,",aa[i]);printf("\n");}程序运行后的输出结果是()。A、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10,D、1,2,10,9,8,7,6,5,4,3,标准答案:C知识点解析:程序中sort函数的功能是对数组中的数据进行从大到小的排序。主函数main中调用函数sort(&aa[3],51;,使得数组aa中从第4个元素开始的5个元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,10。并输出这些元素。28、设x=061,y=016,则z=x|y的值是()。A、1111B、1.11111e+007C、111111D、1.1e+007标准答案:C知识点解析:本题主要考查按位或运算,x=061(二进制为00110001),y=016(二进制为00001110),进行或运算后结果为00111111。29、函数rewind(fp))的作用是()。A、使fp指定的文件的位置指针重新定位到文件的开始位置B、将fp指定的文件的位置指针指向文件中所要求的特定位置C、使fp指定的文件的位置指针向文件的末尾D、使fp指定的文件的位置指针自动移至下一个字符位置标准答案:A知识点解析:位置指针重返文件头函数rewind()的调用形式为:rewind(fp)。其中,“fp”是指向文件的文件型指针。rewind(fp)的功能是:使fp指定的文件的位置指针重新定位到文件的开始位置。二、填空题(本题共15题,每题1.0分,共15分。)30、已知“inta=2,b=2,c=3;”,则执行完语句“a*=18+(b++)-(++C);”后,a的值是()。标准答案:32知识点解析:暂无解析31、执行以下“for(i=1;i++<=4;i++);”语句后,变量i的值是()。标准答案:6知识点解析:暂无解析32、若从键盘输入24,则以下程序输出的结果是()。#include<stdio.h>main(){inta;scanf("%d",&A);if(a>20)printf("%d",A);if(a>10)printf("%d",A);if(a>5)printf("%d",A);}标准答案:242424知识点解析:暂无解析33、下面程序的功能是:计算1~20之间的奇数之和与偶数之和,请填空使程序功能完整。#include<stdio.h>main(){inta=0,b=0,c=0,i;for(i=0;i<=20;i+=2){a+=i;();c+=b;}printf("偶数之和=%d\n",A);printf("奇数之和=%d\n",c-21);}标准答案:b=i+1知识点解析:分析for循环条件,i=0说明循环从0开始判断,i+=2是间隔为2的数,i<=20就是控制数是20之内的a+=i,就是所有偶数的和,如果从1开始(b=i+1)间隔为2的数(1,3,5,7,9,11,13,15,17,19)相加就是所有奇数的和。34、设有以下程序:main(){inti,sum=0;for(i=2;i<10;i++){if((i%2)==0)continue;sum+=i;}printf("%d\n",sum);}程序执行后的输出结果是()。标准答案:24知识点解析:continue语句功能:结束本次循环(注:不是终止整个循环),即跳过循环体中continue语句后面的语句,开始下一次循环。35、下面程序的功能是:从输入的正整数中选3个数进行输出,要求这些数都是2的倍数,请填空。main(){inta,i=0;scanf("%d",&A);do{if(a>0&&a%2==0){printf("%d\n",A);i++;}if(i!=3){scanf("%d",&A);}}while(());}标准答案:i<3知识点解析:暂无解析36、以下程序的输出结果是()。#include<stdio.h>fun(){inta=0;a+=3;printf("%d",A);}main(){intcc;for(cc=1;cc<=4;cc++)fun();printf("\n");}标准答案:3333知识点解析:本题考查for循环,for(cc=1;cc<=4;cc++)表示循环4次,a+=3表示每次a的值增加3,但是子函数中没有将变量a定义为static类型,所以每次调用完子函数之后,变量a所做的改变都不能保存,这样在下一次调用子函数时,a的初值仍是0,所以不管调用多少次,子函数输出始终是3。37、以下程序的输出结果是()。#inciude<stdio.h>main(){chars[]="ABCabc";s[5]=’\0’;printf("%s\n",s);}标准答案:ABCab知识点解析:本题中字符数组的初值是“ABCabc”,s[5]=’c’,然后通过s[5]=’\0’重新给s[5]赋值,在C语言中’\0’是字符串结束标志,执行s[5]=’\0’,其实是将s[5]的值去掉只保留前面的字符。38、下面程序的运行结果是()。#include<stdio.h>#defineSlZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]=’A’+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}标准答案:abcdelkjihgf知识点解析:本题先给字符型数组s的12个元素赋值a到1共12个字母,函数sub(char*a,intt1,intt2)的功能是将数组a的从第t1+1个元素到t2+1个元素进行逆置,在主函数中调用sub(s,5,SIZE-1)函数,是将数组s的第6个元素到第12个元素进行逆置,其他元素位置不变。39、已知函数isaplha(ch)的功能是判断变量ch是否是字母,若是,则该数值为1,否则为0。下面程序执行后的输出结果是()。#include<ctype.h>#include<string.h>voidfun(chars[]){inti,j;for(i=0,j=0;s[i];i++)s[j]=’\0’;}main(){charss[80]="goodmorning";fun(ss);printf("%s",ss);}标准答案:goodmorning知识点解析:子函数fun(chars[])的作用是将字符数组s中除去字母以外的所有其他字符都去掉,然后将字母仍按原来的顺序存在数组s中。在主函数中调用fun(ss),是将“goodmorning”中所有的非字母去掉,在这里就是去掉空格,然后输出ss。40、数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、()和处理过程。标准答案:数据存储知识点解析:数据字典是各类数据描述的集合,它通常包括5个部分,即数据项,是数据的最小单位;数据结构,是若干数据项有意义的集合;数据流,可以是数据项,也可以是数据结构,表示某一处理过程的输入或输出;数据存储,处理过程中存取的数据,常常是手工凭证、手工文档或计算机文件。41、()的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。标准答案:数据库概念设计知识点解析:数据库概念设计的目的是分析数据间内在语义关联,在此基础上建立一个数据的抽象模型。42、下列软件系统结构图的宽度为()。标准答案:3知识点解析:软件系统结构图的宽度:整体控制跨度(最大模块数的层)的表示。43、在两种基本测试方法中,()测试的原则之。一是保证所测模块中每一个独立路径至少要执行一次。标准答案:白盒知识点解析:白盒测试的基本原则是:保证所测模块中每一独立路径至少执行一次;保证所测模块所有判断的每一分支至少执行一次;保证所测模块每一循环都在边界条件下至少执行一次;验证所有内部数据结构的有效性。44、数据结构分为线性结构和非线性结构,带链的队列属于()。标准答案:线性结构知识点解析:一个数据结构是线性结构还是非线性结构。判断依据是数据结构前后件关系的复杂程度,而与其所使用的存储结构是没有关系的。在一个非空的队列中,每一个元素只有一个前件和后件,因此它属于线性结构。国家二级(C语言)笔试模拟试卷第2套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、顺序查找一个具有n个元素的线性表,二分查找一个具有n个元素的有序表,其时间复杂性为______。A、O(n)B、O(log2n)C、O(n2)D、O(nlog2n)标准答案:2知识点解析:暂无解析2、已知—个有序表为(12,18,24,35,47,50,62,83,90,115,134),当二分查找值为47的元素时,经过______次比较后查找成功。A、1B、2C、3D、4标准答案:8知识点解析:暂无解析3、在软件质量因素中,软件在异常情况下仍能运行的能力称为软件的______。A、可用性B、可靠性C、安全性D、健壮性标准答案:8知识点解析:暂无解析4、软件的可靠性主要表现在______。A、能够安装多次B、能够在不同类型的计算机系统上安装和使用C、软件的正确性和健壮性D、前面都正确标准答案:4知识点解析:暂无解析5、程序的3种基本控制结构的共同点是______。A、不能嵌套使用B、只能用宋写简单的程序C、已经用硬件实现D、只有一个入口和一个出口标准答案:8知识点解析:暂无解析6、—个数据库系统一般由三级模式组成,其中的模式(也称逻辑模式或概念模式)指的是______。A、用户使用的数据视图B、所有用户的公共数据视图C、对数据物理结构和存储结构的描述D、一种局部的逻辑数据视图标准答案:2知识点解析:暂无解析7、下列数组说明中,正确的是______。A、intarray[][4];B、intarray[][];C、intmarray[][][5];D、intarray[3][];标准答案:1知识点解析:暂无解析8、若x和y都是血型变量,x=100,y=200,且有程序片段:printf("%d",(x,y));,则输出结果是______。A、200B、100C、100200D、输出格式符不够,输出不确定的值标准答案:1知识点解析:暂无解析9、下面结构体的定义语句中,不正确的是______。A、structdate{intmonth;intday;intyear;}Structdatedatel;B、stmctdate{intmonth;intday;intyear;}datel;C、struct{intmonth;intday;intyear;}date1;D、#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;标准答案:1知识点解析:暂无解析10、下列叙述中,正确的一条是______。A、C语言的整型变量可以分为int、short、long、unsignedint、unsignedshort、unsignedlong等几种类型,因此整型常量也可以分为这几种类型B、C语言的字符数据与整型数据可以互相赋值C、若对字符型变量的定义为:charc;可使用语句c="a",对变量c赋值D、已知x为float型,执行语句(int)x后,x为int型标准答案:2知识点解析:暂无解析二、选择题(1分)(本题共10题,每题1.0分,共10分。)11、能将高级语言程序转换成目标语言程序的是______。A、调试程序B、解释程序C、编译程序D、编辑程序标准答案:4知识点解析:用高级语言编写的程序称为“源程序”,而计算机只能识别和执行由0和1组成的二进制指令,所以高级语言必须先用—种称为“编译程序”的软件,把源程序翻译成二进制形式的“目标程序”。12、______是构成C语言程序的基本单位。A、函数B、过程C、子程序D、子例程标准答案:1知识点解析:C程序是由函数构成的。一个C源程序至少包含一个main函数,也可以包含一个main函数和若干个其他函数,因此,函数是C程序的基本单位。13、可以在C语言中用做用户标识符的是______。A、voiddefineWORDB、asb3_123IfC、for-abccasD、2cDoSIG标准答案:2知识点解析:C语言规定,标识符只能由字母、数字和下划线三种符号组成,而且第一个字符必须是字母或下划线。另外还需要注意的是关键字不能作标识符。选项A中void,C中for都为关键字,D中2c以字母开头。14、下面语句的输出结果是______。printf("/od\n",strlen("\t\"\065\xff\n"))A、14B、8C、5D、输出项不合法,无正常输出标准答案:4知识点解析:在C语言中,以“\”开头的字符均为转义字符,其中“\”后可跟1~3位八进制数或在“\”后跟字母x及1~2位十六进制数,以此来代表一个特定的字符。15、下列程序的输出结果是______。#defineA100main(){inti=0,sum=0;do{if(i==(i/2)*2)continue;sum+=i;}while(++i<A);printf("%d\n",sum);A、2500B、2050C、4D、0标准答案:1知识点解析:本题程序的功能是求1到99之间(包括1和99)所有奇数之和。程序中的while循环的终止条件为++i=100,在while循环体内,如果i是偶数,则执行continue,跳过这依次循环,执行下一次循环,否则求和。最后输出的值是1到99之间(包括1和99)所有奇数之和(1+99)*50/2=2500。16、下列程序的输出结果是______。main(){inti=3;switch(i){case1:case2:printf("%d",i);case3:case4:break;default:printf("OK");}}A、0B、3C、OKD、没有任何输出标准答案:8知识点解析:在题中,i的值为3,由于“case3:”后面没有break语句,所以继续向下执行“case4:”后面的语句,由于“case4:”后面的语句为break强行退出switch语句,所以,本题没有任何输出。17、下列程序执行后的输出结果是______。main(){intm[][3]={1,4.7,6,5,8,3,6,9};inti,k=2for(i=0,i<3;i++){printf("%d",m[k][i];}}A、456B、258C、369D、789标准答案:4知识点解析:根据二维数组的定义得出:m[0][0]=1,m[0][1]=4,m[0][2]=7,m[1][0]=2,m[1][1]=5,m[1][2]=8,m[2][0]=3,m[2][1]=6,m[2][2]=9,所以本题的输出是第3行的值m[2][0],m[2][1],m[2][2],即369。18、已知字母A的ASCII参政值是65,字母a的ASCII码值是97,以下程序列______。main(){chara=’A’;intb=20;printf("%d,%o",(a=a+a,a+b,b),a+’a’+’A’,b);}A、表达式非法,输出零或不确定值B、因输出项过多,无输出或输出不确定值C、输出结果为20,141D、输出结果为20,141,20标准答案:4知识点解析:本题中首先输出逗号表达式“a=a+a,a+b,b”的值,即20。然后以八进制的形式输出a+’a’-’A’的值为97对应的八进制数141,由于最后一个表达式b没有对应输出格式的输出项表列就不会输出。19、下列程序执行后输出的结果是______。intd=1;fun(intp){intd=5;d+=p++;printf("%d,",d);}main(){inta3;fun(a);d+=a++;printf("%d\n",d);}A、8,12B、9,13C、8,4D、9,5标准答案:4知识点解析:本题执行过程如下:首先调用fun函败,使得实参a的值3传递给形参p,得到局部变量d=8,打印出局部变量d的值8;返回主函数执行“d+=a++”,此处的d为全局变量,所以d=1+3=4(由于本题是值传递,所以在函数fun中对p值的改变并不能引起a的改变),故本题的输出是8,4。20、已知下面的程序段,正确的判断是______#defineA3#defineB(A)((A+1)*a)X=3*(A+B(7));X=3*(A+B(7);A、程序错误,不允许嵌套定义B、X=93C、X=81D、程序错误,宏定义不允许有参数标准答案:4知识点解析:本题的宏定义是合法的,宏定义展开为3*(3+((A+1)*a))=3*(3+((7+1)*3))=81。三、选择题(2分)(本题共20题,每题1.0分,共20分。)21、下列程序的运行结果是()。#include<stdio.h>main(){inta=2,b=3,c=4;if(a<B)if(b<0)c=0;elsec+=1;printf("%d\n",C);}A、2B、3C、5D、4标准答案:4知识点解析:本题考查ifelse语句。第一个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第二个if语句,先判断条件,发现b<0条件不成立,则执行与其配对的else语句,c+=1,得c=5。22、在下列给出的表达式中,与while(E)中的(E)不等价的表达式是()。A、(!E==0)B、(E>0‖E<0)C、(E==0)D、(E!=0)标准答案:2知识点解析:在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项B)中表达式E>0‖E<0是一个逻辑表达式。23、有下列程序:#include"stdio.h"main(){intx=0;inty=0;while(x<7&&++y){y--;x++;}printf("%d,%d",y,x);}程序的输出结果是()。A、0,7B、7,7C、0,6D、1,6标准答案:1知识点解析:本题考查while循环.y的值在while循环的控制表达式中加1,在循环体内减1,所以总的y值不变,且控制条件++y永远非零。当x加到7时不满足循环条件,结束循环。24、有下列程序:main(){chars[]="abcde";s+=2;printf("%d\n",s[0]);}执行后的结果是()。A、输出字符a的ASCII码B、输出字符c的ASCII码C、输出字符cD、程序出错标准答案:8知识点解析:因为字符数组s[]中的数组名s表示的是一个地址常量。所以语句“s+=2;”不能将指针在当前位置的基础上再向后移动两位.因而程序编译时出错。25、下列选项中非法的字符常量是()。A、’\t’B、’\039’C、’,’D、’\n’标准答案:2知识点解析:选项A)中,’\t’表示的是横向跳若干格;选项B)中,’039’错误,’\039’是八进制形式表示的字符,但其中出现了’9’,所以错误;选项C)中,’,’是字符逗号;选项D)中,’\n’表示的是回车换行。26、下列叙述中正确的是()。A、break语句只能用于swish语句B、在switch语句中必须使用defaultC、break语句必须与switch语句中的case配对使用D、在switch语句中,不一定使用break语句标准答案:8知识点解析:break为C语言关键字,又称间断语句。break语句的功能是跳出正在执行的条件语句或循环语句。它可以出现在switch语句中,也可以出现在循环语句中。default是关键字,起标号的作用,代表所有case标号之外的那些标号。default标号可以出现在语句体中任何标号位置上。在switch语句体中也可以没有default标号.27、下列叙述中,错误的是()。A、在同一C程序文件中,不同函数中可以使用名字相同的变量B、在main()函数体内定义的变量是全局变量C、形参是局部变量,函数调用完成即失去意义D、若同一文件中全局和局部变量同名,则全局变量在局部变量作用范围内不起作用标准答案:2知识点解析:本题考查函数调用时变量的作用域。形参是局部变量,函数调用完就失去意义了,所以在同一个C程序文件中,不同的函数体中可以使用名字相同的局部变量。注意:在函数之外定义的变量称为外部变量,外部变量是全局变量,全局变量可以为本文件中其他函数所共用。它的有效范围为:从定义变量的位置开始到本源文件结束.28、C语言规定,调用一个函数时,实参变量和形参变量之间的数据传递是()。A、地址传递B、值传递C、由实参传给形参,并由形参传回给实参D、由用户指定传递方式标准答案:2知识点解析:本题考查函数调用时的参数传递。在函数调用时,实参和其所对应的形参分别占用不同的存储单元,彼此之间只是实参将值传递给形参.29、设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。A、k=*q1+*q2;B、q1=k;C、q1=q2;D、k=*q1*(*q2);标准答案:2知识点解析:选项A)是将指针q1和q2所指向的变量值相加,然后赋给k;选项B)中,float型数据和指针型数据之间不能进行赋值运算:选项C)中,是两个指针变量之间的赋值:选项D)中,是两个指针型变量所指向的两个float型数据相乘。30、若有说明:int*p1,*p2,n=8,m;下列均是正确赋值语句的选项是()。A、p1=&n;p2=&p1;B、p1=n;C、p1=&n;*p2=p1;D、p1=&n;p2=p1;标准答案:8知识点解析:本题考查指针变量的赋值。选项A)中,p1、p2本身都是地址变量,不能再将p1取地址赋给p2;选项B)中,不能将整型数据直接赋值给指针型数据;选项C)中,*p2代表了一个整型变量,而*p2=p1这个语句试图把一个地址值放入一个整型变量中是错误的:选项D)中指针间的赋值是正确的。31、若希望下列的程序运行后输出25,程序空白处的正确选项是()。main(){inti,j=50,a[]={7,4,10,5,8};for()j+=a[i];printf("%d",j-40);}A、i=1;i<4;++iB、i=1;i<3;++iC、i=4;i>2;i--D、i=2;i<4;++i标准答案:8知识点解析:要想使程序输出是25,则j-40=25,j=65,而j初值是50,所以填入for循环中的语句,使引用的数组元素累加为65-50=15即可。32、若有说明inta[][3]={1,2,3,4,5,6,7,8,9),则a数组第一维的大小是()。A、2B、3C、4D、无确定值标准答案:2知识点解析:本题考查二维数组第一维的大小如何确定。二维数组第一维的大小由下列规则确定:①当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小:②当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小等于所得商数加1。33、若二维数组a有m列,则在a[i][j]前的元素个数为()。A、i*m+j-1B、i*m+jC、j*m+1D、i*m+i+1标准答案:2知识点解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。34、函数调用strcat(strcpy(str1,str2),str3)的功能是()。A、将字符串str1复制到字符串str2中后再连接到字符串str3之后B、将字符串str1连接到字符串str2之后再复制到字符串str3之后C、将字符串str2复制到字符串sir1中后再将字符串str3连接到字符串str1之后D、将字符串str2连接到字符串str1之后再将字符串str1复制到字符串str3中标准答案:4知识点解析:strcat(s1,s2)是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制给s1字符串,要保证s1能容纳下连接或复制后的字符串。35、下列程序的输出结果是()。#include<stdio.h>f(intA){intb=0;staticintc=4;a=c++;b++;return(A);}main(){inta=2,i,c;for(i=0;i<2;i++)c=f(a++);printf("%d\n",C);}A、4B、7C、6D、5标准答案:8知识点解析:本题考查静态变量的使用方法和for循环。在函数调用时,static变量在函数调用结束后所作的所有变化均不保持,所以当i=1时,第2次进入f函数时c=5,所以最终main函数中c的值为5。36、#define能作简单的替代,用宏来替代计算多项式5*x*x+5*x+5的值的函数f,正确的宏定义语句为()。A、#definef(x)5*x*x+5*x+5B、#definef5*x*x+5*x+5C、#definef(A)(5*a*a+5*a+5)D、#define(5*x*x+5*x+5)f(x)标准答案:4知识点解析:带参数宏的格式为:#define标识符(形参表)形参表达式。其功能是:在预处理程序中将程序中出现的所有带实参的宏名,展开成由实参组成的表达式。37、定义结构体数组:structstu{intnum;charname[20];}x[5];{1,"L1",2,"ZHAO",3,"WANG",4,"ZHANG",5,"LIU"};for(i=1;i<5;i++)printf("%d%c",x[i].num,x[i].name[2]);以上程序段的输出结果为()。A、2A3N4A5UB、1I2A3H4IC、1A2N3A4UD、2H3A4H5I标准答案:1知识点解析:本题主要考查结构体数组的使用。x[i].num为结构体x[i]中的num成员,x[i].name[2]是结构体x[i]中name成员的第3个元素。程序执行循环过程时:第1次循环,i=1,输出x[1].num,x[1].name[2]的值,即2A;第2次循环,i=2,输出x[2].num,x[2].name[2]的值,即3N:第3次循环,i=3,输出x[3].num,x[3].name[2]的值,即4A;第4次循环,i=4,输出x[4].num,x[4].name[2]的值,即5U。38、若有下列说明和语句,已知int型数据占2个字节,则下列语句的输出结果是()。structst{chara[15];intb;doublec;};printf("%d",sizcof(structst));A、15B、8C、25D、2标准答案:4知识点解析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。题中intb占2个字节,chara[15]占15个字节,doublec占8个字节,所以共25个字节。39、设intx=7,则~x的值是()。A、-8B、-7C、-1D、1标准答案:1知识点解析:本题主要考查按位求反运算和C语言中正负数的表示,“0”代表正数,“1”代表负数;x=7的二进制为00111,第一个0代表正数,~x为11000,第一个1代表负数,值为8。40、函数ftell(fp)的作用是()。A、得到fp所指向文件的当前读写位置B、初始化流式文件的位置指针C、移动流式文件的位置指针D、以上答案均正确标准答案:1知识点解析:位置指针当前值函数ftell()的基本调用格式为:ftell(fp)。ftell()函数的参数说明:“fp”是指向文件的文件型指引。ftell函数的功能;得到fp所指向文件的当前读写位置,即位置指针的当前值,如果函数的返回值为-1L,表示出错。四、公共基础填空题(本题共5题,每题1.0分,共5分。)41、数据结构分为逻辑结构和存储结构,循环队列属于______结构。标准答案:逻辑知识点解析:数据的逻辑结构主要是反映数据之间的逻辑关系,而存储结构是用来反映数据的逻辑结构在计算机存储空间中的存放形式。循环队列主要是强调数据之间的关系,因此属于逻辑结构。42、队列是限定在表的一端进行插入和在另一端进行删除操作的线性表。允许插入的一端称作______。标准答案:队尾知识点解析:在队列中,允许插入的一端叫做“队尾”,允许删除的一端叫做“队头”。43、在一个容量为32的循环队列中,若头指针front=3,尾指针rear=2,则该循环队列中共有______个元素。标准答案:31知识点解析:设队列容量为m,如果:rear>front,则队列中元素个数为rear-front;如果rear<front,则队列中元素个数为m+(rear-front)。本题rear<front,则m=32+(2-3)=31。44、一棵二叉树第6层(根结点为第一层)的结点最多为______个。标准答案:32知识点解析:二叉树第k层上,最多有2k-1(k≥1)个结点。第6层的结点数最多是26-1=32。注意区别“二叉树的结点最多数”和“某一层的结点最多数”。前者的计算是深度为m的二叉树最多有2m-1个结点。45、度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为______。标准答案:45知识点解析:对于长度为N的线性表,在最坏情况下(即线性表中元素现在的顺序与目标顺序正好相反),冒泡排序需要经过N/2遍的从前往后的扫描和N/2遍的从后往前的扫描,需要的比较次数为N(N-1)/2。五、填空题(本题共11题,每题1.0分,共11分。)46、以下函数fun的功能是返回str所指字符中中以形参c中字符开头的后续字符串的首地址,例如:str所指字符串为“Hello!”,c中的字符为’e’,则函数返回字符串"ello!"的首地址。若str所指字符串为空中或不包含c中的字符,则函数返回NULL。请填空。char*fun(char*str,charc){intn=0;char*p=str;if(p!=NULL)while(P[n]!=c&&p[n]!=’\0’)n++;if(p[n]==’\0’)retumNULL;return(【】);}标准答案:str+n或p+n知识点解析:此题主要是将形参c中的字符与str中的字符相比较,返回以形参c中字符开头的后续字符串,函数fun中的变量n用于记录形参c中字符在str字符串中的位置,故返回的结果用str+n或p+n表示。47、以下程序的输出结果是【】。#include<stdio.h>main()inta[3][3]={{1,2,9},{3,4,8},{5,6,7}},i,s=0;for(i=0;i<3;i++)s+=a[i][i]+a[i][3-i-1];pfintf("%d\n",s);标准答案:30知识点解析:当i=0时,s=0+a[0][0]+a[0][2]=10;i=1时,s=10+a[1][1]+a[1][1]=18;i=2时,s=18+a[2][2]+a[2][0]=30。48、下面程序的运行结果是【】。#include<stdio.h>fun(intt[],intn){inti,m;if(n==1)returnt[0];elseif(n>=2)|m:fun(t,n-1);returnm;}}main(){inta[]={11,4,6,3,8,2,3,5,9,2};printf("%d\n",fun(a,10));标准答案:11知识点解析:main函数调用fun函数时,将10赋给n,形参数组t与实参数组a共用一段内存空间。执行if-else语句时,n=10,所以执行else子句。由于n>=2成立,执行m=fun(t[0],9),递归调用fun函数,m=fun(t[0],8),m=fun(t[0],7),…,m=fun(t[0],2),m=fun(t[0],1),当n=1时满足if(n=1)的条件,执行return语句,返回数组首地址指向的值t[0],所以答案为11。49、有两个C程序文件T18.c和myfun.c同在VC系统目录(文件夹)下,其中T18.c文件如下:#include<stdio.h>#include"myfun.c"main(){fun();prinff("\n");}myfun.c文件如下:voidfun(){chars[80],c;intn=0;while((c=getchar())!:’\n’)s[n++]=c;n--;while(n>=0)prinff("%c",s[n--]);}当编译连接通过后,运行程序T18时,输入"Thank!”,则输出结果是【】。标准答案:!knahT知识点解析:程序中myfun.c被包含在T18.c中进行编译。fun函数中用getehar函数输入字符并赋给数组s,每输入一个字符,数组下标n加1,直到遇到回车键时输入结束。while(n>=0)循环反序输出字符中。所以myfun.c文件用于实现字符串反序的功能。50、若变量a,b已定义为int类型并分别赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的输出语句行:【】。标准答案:printf("a=%d,b=%d",a,b);知识点解析:根据printf函数的格式可知输出语句应该为:printf("a=%d,b=%d",a,b);51、当运行以下程序时,输入abcd,程序的输出结果是【】。insert(charstr[]){inti;i=stolen(str);while(i>0){str[2*i]=str[i];str[2*i-1]=’*’;i--;}printf("%s\n",sir);}main(){charstr[40];seanf("%s",str);insert(str);}标准答案:a*b*c*d*知识点解析:程序中的变量i用于存放字符串str的长度,执行while语句,通过分析可知,字符串第2*i项的值可由第i项的值得到;第2*i-1项直接赋值为。号,i减1,如此反复直到不满足i>0的条件时,输出运行后的字符串。52、以下程序用于判断a,b,c能否构成三角形,若能,输出YES,否则输出NO。当给a,b,c输入三角形三条边长时,确定a,b,c能构成三角形的条件是需同时满足三个条件:a+b>c,a+c>b,b+c>a。请填空。#include<stdio.h>main(){floata,b,c;scanf("%f%f%f",&a,&b,&c);if(【】)printf("YES\n");/*a.b.c能构成三角形*/elseprinff("NO\n");/*a.b.c不能构成三解形*/}标准答案:(a+b>c)&&(a+c>b)&&(b+c>a)知识点解析:根据构成三角形的条件:两边之和大于第三边,得出空格应该填(a+b>c)&&(a+c>b)&&(b+c>a)或与其等价的形式。53、以下程序的功能是输入任意整数给n后,输出n行从大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:ABCDEFCHIJKLMNO请填空完成该程序。#include<stdio.h>main()inti.j,n;charch=’A’;scanf("%d",&n);if(n<11)for(i=1;i<=n;i++)for(j=1;j<=n-i+1;j++){printf("%2c",ch);【】;}【】;}elseprintf("nistoolarge!\n");prinff("\n");}标准答案:ch++或ch=ch+1或++ch,printf("\n")或prinff("\015")知识点解析:程序中使用了两层for循环,外循环的作用是控制行数,内循环的作用是控制每行的列数,在内循环中首先输出当前字符(从’A’开始),[6]中应填ch++,使ch中的字符变为要输出的下一个字符。每输出一行就需换一次行,所以[7]处应填pfintf("\n")。54、以下isprime函数的功能是判断形参a是否为素数,如果是素数,函数返回1,否则返回0。intisprime(inta)inti;for(i=2;i<=a/2;i++)if(a%i==0)【】;【】;}标准答案:return0或return(0)return1或return(1)知识点解析:素数是指只能被1和其本身整除,不能被其他任何整数整除的数。根据if条件语句,若形参a对i取余等于0,则形参a可以被其他数整除,所以第一处填return0;若形参a对i取余不等于0,则形参s不可以被其他数整除,所以第二处填return1。55、以下程序的功能是:输出100以内(不含100)能被3整除且个位数为6的所有整数,请填空。#include<stdio.h>main(){inti,jfor(i=0;【】;i++){j=i*10+6;if(【】)continue:Printf("%d”",j);}}标准答案:i<10或i<9j%3!=0或j%3知识点解析:程序中的j用于存放符合条件的整数,j=i,10+6;求得个位数为6的整数,由此可得出程序的循环次数为i<10,所以[15]处填i<10。然后通过if语句判断整数是否能被3整除,若不能则继续下一次循环,若能则输出该整数,所以[16]处填j%3!=0。56、以下程序中函数fun()的功能是构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。#include<atdio.h>typedefstructnode/*链表结点结构*/{charsub[3];structnode*next;}NodeNode~un(chars)/*建立链表*/{......}voiddisp(Node*h){Node*Psp=h->next;while(【】){printf("%s\n",p->suh);p=【】;}}main(){Node*hd;hd=fun();disp(hd);prinff("\n");标准答案:p!=NULL或P或p!=0或p!=’0’p->next或(*p).next知识点解析:程序中定义了一个结构体类型名Node,其中定义了一个指向结点类型的指针next。接下来用Node定义了头结点指针变量h和指向第一个结点的指针变量p,在满足p未指向最后一个结点的空指针时(即为NULL),输出p所指向结点的字符串,所以第一处应填p!=NULL,然后将p指向下一个非空结点,所以第二处应填P->next或与其等效的形式,反复执行直到所有的结点都输出。国家二级(C语言)笔试模拟试卷第3套一、公共基础选择题(本题共10题,每题1.0分,共10分。)1、待排序的关键码序列为(33,18,9,25,67,82,53,95,12,70),要按关键码值递增的顺序排序,采取以第一个关键码为基准元素的快速排序法,第一趟排序后关键码33被放到第()个位置。A、3B、5C、7D、9标准答案:B知识点解析:快速排序的基本思想是:从表中选取一个元素(如本题中的33),将表中小于此元素的移到前面,大于此元素的移到后面,结果把线性表分割成两部分(两个子表),此元素插入到其分界线的位置处。然后分别对两个子表再次分割……本题中33作为分割的中界线,第一趟排序后排在比它小的18、9、25、12后面。2、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为A、并B、自然连接C、笛卡尔积D、交标准答案:A知识点解析:暂无解析3、下列不属于软件工程的3个要素的是A、工具B、过程C、方法D、环境标准答案:D知识点解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。4、表达式’5’-’1’的值是()。A、整数4B、字符4C、表达式不合法D、字符6标准答案:A知识点解析:在C语言中,字符都是变为其对应的ASCII码值来参加算术运算的,但字符间的相对位置关系还是不变的,字符5和字符1的ASCII码值相差仍是4。5、下列描述中正确的是()。A、程序就是软件B、软件开发不受计算机系统的限制C、软件既是逻辑实体,又是物理实体D、软件是程序、数据和相关文档的集合标准答案:8知识点解析:软件是运行在计算机硬件之上的逻辑实体,包括程序,数据和相关的文档。软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制。6、信息隐蔽的概念与下述______概念直接相关。A、软件结构定义B、模块独立性C、模块类型划分D、模拟耦合度标准答案:2知识点解析:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件模块独立性的度量标准是耦合性和内聚性。一个模块的内聚性越强,则该模块的模块独立性越强。而内聚性是信息隐蔽和局部化概念的自然扩长。7、下列关于栈的叙述正确的是()。A、在栈中只能插入数据B、在栈中只能删除数据C、栈是先进先出的线性表D、栈是先进后出的线性表标准答案:8知识点解析:栈是一种特殊的线性表,其插入与删除运算都只在线性表的一端进行。在这种线性表的结构中,一端封闭,不允许插入与删除元素:另一端开口,允许插入与删除元素。在栈中不仅能插入数据,也能删除数据,选项A与选项B都错。栈是后进先出的线性表,而不是先进先出的线性表,选项C的说法错误,选项D正确。8、应用数据库的主要目的是为了()A、解决数据的保密问题B、解决数据的共享问题C、解决数据量大的问题D、解决数据的完整性问题标准答案:8知识点解析:暂无解析9、系统软件中最重要的是()A、操作系统B、语言处理程序C、工具软件D、数据库管理系统标准答案:1知识点解析:暂无解析10、栈和队列的共同点是()。A、都是先进先出B、都是先进后出C、只允许在端点处插入和删除元素D、没有共同特点标准答案:4知识点解析:栈和队列都是操作受限制的线性表,只允许在端点插入和删除。不同点是:栈只允许在表的一端进行插入和删除操作,而队列允许在表的—端进行插入操作,而在另一端进行删除操作。二、选择题(1分)(本题共11题,每题1.0分,共11分。)11、有下列程序:main(){intt,a=1,b=5,c=-2;while(a>b>C){t=a;a=b;b=t;c++;}printf("%d,%d,%d",a,b,c);}程序的输出结果是()。A、1,5,0B、1,5,-2C、5,1,-1D、5,1,-2标准答案:A知识点解析:本题考查while循环。先判断while循环的控制表达式是否成立,发现a>b>c不成立,所以不执行循环。直接输出a、b、c的值。12、判断char型变量cl是否为小写字母的正确表达式为()。A、‘a’<=cl<=‘z’B、(cl>=a)&&(cl<=z)C、(‘a’>=cl∣∣(‘z’<=cl)D、(cl>=‘a’)&&(cl<=‘z’)标准答案:D知识点解析:C语言规定,字符常量在程序中要用单引号括起来。首先判断c1是否为小写字母的主要条件c1>=‘a’和c1<=‘z’是逻辑与关系,其次选项A的这种形式C语言中没有,所以选项D正确。13、设变量x和Y均已正确定义并赋值,以下if语句中,在编译时将产生错误信息的是()。A、if(x++);B、if(x>y&&y!=0);C、if(x>y)x--elsey++;D、if(y<0){;}elsex++;标准答案:C知识点解析:选项C中,if(x>y)后面的“x--”是一个表达式而不是一个语句,所以在编译时会产生错误信息。14、当变量c的值不为2、4、6时,值也为“真”的表达式是A、(c==2)||(c==4)||(c==6)B、(c>=2&&c<=6)||(c!=3)||(c!=5)C、(c>=2&&c<=6)&&!(c%2)D、(c>=2&&c<=6)&&(c%2!=1)标准答案:B知识点解析:满足表达13式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,表达式B)都为“真”。15、下列关于线性链表的描述中,正确的是()。Ⅰ、只含有一个指针域来存放下一个元素地址Ⅱ、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)Ⅲ、结点由两部分组成:数据域和指针域。A、仅Ⅰ、ⅡB、仅Ⅰ、ⅢC、仅Ⅱ、ⅢD、全部标准答案:D知识点解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。16、若以下选项中的变量已正确定义,则正确的赋值语句是()。A、x1=26.8%3;B、1+2=x2;C、x3=0x12;D、x4=1+2=3;标准答案:4知识点解析:正确的赋值语句的左值不能为常量或表达式。选项A)中右值的表达式错;选项B)的左值为表达式,错误;选项D)的表达式x4=1+2=3,是先执行赋值表达式1+2=3,这本身就是错误的,1+2不是变量,不能赋值。17、以下程序的输出结果是______。main(){inta=3;printf("%\n",(a+=a-=a*a));}A、{B、1C、2D、-12标准答案:8知识点解析:赋值运算符的结合方向是自右至左,所以表达式a+a-=a*a先运算最右边的a*a得9,再运算a=a-9,即a=3-9,所以此时a的值由3变成了-6,最后运算a=a+(-6),即a-(-6)+(-6)=-12。18、有以下程序:main(){inta=666,b=888;printf("%d\n",a,b);}程序运行后的输出结果是()。A、错误信息B、666C、888D、666,888标准答案:2知识点解析:程序中的printf()函数的输出格式部分只说明了一个%d,而输出成员列表却有两个成员a和b,在这里将只输出第一个成员a值为666,所以,4个选项中选项B符合题意。19、设int型占2个字节,则unsignedint所能表示的数据范围是______。A、0~65535B、-3276~32767C、1~65536D、0~32767标准答案:1知识点解析:本题int型占2个字节,即16位,unsignedint所能表示的数据范围是0~(216(上标)-1),即0~65535。20、以下不合法的字符常量是______。A、’\018’B、’\’’’C、’\\’D、’\xcc’标准答案:A知识点解析:C语言的字符常量是用单引号(即撇号)括起来的一个字符。如’a’,’A’,’?’,’$’等都是字符常量。注意:’a’和’A’是不同的字符常量。除了以上形式的字符常量外,C还允许用—个"\"开头的字符序列。如’\ddd’表示1到3位八进制数所代表的字符,而八进制是由0到7这几个数字组成的,所以选项A是不合法的字符常量。21、以下关于C语言的叙述中正确的是A、C语言中的注释不可以夹在变量名或关键字的中间B、C语言中的变量可以在使用之前的任何位置进行定义C、在C语言算术表达式的书写中,运算符两侧的运算数类型必须一致D、C语言的数值常量中夹带空格不影响常量值的正确表示标准答案:B知识点解析:暂无解析三、选择题(2分)(本题共19题,每题1.0分,共19分。)22、若变量已正确定义,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\h",i);其输出结果是()。A、0,0B、0,1C、1,1D、程序进入无限循环标准答案:B知识点解析:do

温馨提示

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

评论

0/150

提交评论