国家二级C语言机试(选择题)模拟试卷7(共285题)_第1页
国家二级C语言机试(选择题)模拟试卷7(共285题)_第2页
国家二级C语言机试(选择题)模拟试卷7(共285题)_第3页
国家二级C语言机试(选择题)模拟试卷7(共285题)_第4页
国家二级C语言机试(选择题)模拟试卷7(共285题)_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷7(共9套)(共285题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是()。A、一个算法的空间复杂度大,则其时间复杂度也必定大B、一个算法的空间复杂度大,则其时间复杂度必定小C、一个算法的时间复杂度大,则其空间复杂度必定小D、算法的时间复杂度与空间复杂度没有直接关系标准答案:D知识点解析:算法的复杂度主要包括时间复杂度和空间复杂度。算法的时间复杂度是指执行算法所需要的计算工作量,算法的工作量用算法所执行的基本运算次数来度量,而算法所执行的基本运算次数是问题规模的函数,即算法的工作量=f(n),其中n是问题的规模;算法的空间复杂度,一般是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占用的空间、输入的初始数据所占的存储空间以及算法执行过程中所需要的额外空间。根据各自的定义可知。算法的时间复杂度与空间复杂度并不相关。2、以下叙述正确的是()。A、当输入数据时,必须指明变量的地址,例如,scanf("%f",&a);B、只有格式控制,没有输入项,也能正确输入数据到内存。例如,scanf("m=%d,n=%d");C、当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如,scanf("%5.1f",&a);D、输入项可以是一个实型常量,例如,scanf("%f",7.5);标准答案:A知识点解析:本题考查对scanf函数的理解。选项B)中没有给出输入项;选项C)中的格式字符指定了小数位数;选项D)中的输入项为一个常量;以上均是错误的。3、软件生命周期可分为定义阶段、开发阶段和维护阶段,下面属于定义阶段任务的是()。A、软件设计B、软件测试C、可行性研究D、数据库设计标准答案:C知识点解析:软件生命周期可分为定义阶段、开发阶段和维护阶段。软件定义阶段的任务是:确定软件开发工作必须完成的目标;确定工程的可行性。软件开发阶段的任务是:具体完成设计和实现定义阶段所定义的软件,通常包括总体设计、详细设计、编码和测试。其中总体设计和详细设计又称为系统设计,编码和测试又称为系统实现。软件维护阶段的任务是:使软件在运行中持久地满足用户的需要。4、下列叙述中正确的是()。A、链表结点中具有两个指针域的数据结构可以是线性结构,也可以是非线性结构B、线性表的链式存储结构中,每个结点必须有指向前件和指向后件的两个指针C、线性表的链式存储结构中,每个结点只能有一个指向后件的指针D、线性表的链式存储结构中,叶子结点的指针只能是空标准答案:A知识点解析:在链式存储方式中,每个结点由两部分组成:数据域和指针域,指针域用于指向该节点的前一个或后一个结点,所以选项B)、C)、D)说法错误。选项A)中,例如双向链表就具有两个指针,也属于线性结构,所以答案选A)。5、将数据库的结构划分成多个层次,是为了提高数据库的()。A、管理规范性B、数据处理并发性C、逻辑独立性和物理独立性D、数据共享标准答案:C知识点解析:数据库系统通常采用三级模式结构并且提供两级映射功能,其中的外模式/模式映射保证了数据库系统具有较高的逻辑独立性,而模式/内模式映射保证了数据库系统具有较高的物理独立性。6、E-R图中用来表示实体的图形是()。A、菱形B、三角形C、矩形D、椭圆形标准答案:C知识点解析:在E-R图中实体集用矩形表示,矩形框内写实体名;属性用椭圆表示,并用无向边将其与相应的“实体”或“联系”连接起来;联系用菱形表示,在菱形框内写联系名,并用无向边将其与有关实体连接起来,在无向边旁标上联系的类型(1:1、1:n或n:n)。7、计算机能直接执行的程序是()。A、源程序B、目标程序C、汇编程序D、可执行程序标准答案:D知识点解析:计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe,所以选择D选项。8、从工程管理角度看,软件设计一般分为两步完成,它们是A、概要设计与详细设计B、数据设计与接口设计C、软件结构设计与数据设计D、过程设计与数据设计标准答案:A知识点解析:软件设计是开发阶段最重要的步骤。从工程管理的角度来看可分为两步:概要设计和详细设计。概要设计是将软件需求转化为软件体系结构,确定系统级接口、全局数据结构或数据库模式;详细设计是指确立每个模块的实现算法和局部数据结构,用适应方法表示算法和数据结构的细节。从技术观点来看,软件设计包括软件结构设计(定义软件系统各主要部件之间的关系)、数据设计(将分析时创建的模型转化为数据结构)、接口设计(描述软件内部、软件与协作系统之间以及软件与人之间如何通信)、过程设计(把系统结构部件转换成软件的过程)四个步骤。9、以下叙述中错误的是()。A、算法正确的程序可以有零个输出B、算法正确的程序最终一定会结束C、算法正确的程序可以有零个输入D、算法正确的程序对于相同的输入一定有相同的结果标准答案:A知识点解析:算法的基本特性,正确的算法需要具有有穷性、确定性、可行性、有零个或多个输入、至少有一个输出,由此答案选A。10、下面属于黑盒测试方法的是A、语句覆盖B、逻辑覆盖C、边界值分析D、路径覆盖标准答案:C知识点解析:采用黑盒技术设计测试用例的方法有:等价类划分、边界值分析、错误推测、因果图和综合策略。11、下列叙述中错误的是()。A、可以用typedef将已存在的类型用一个新的名字来代表B、可以通过typedef增加新的类型C、用typedef定义新的类型名后,原有类型名仍有效D、用typedef可以为各种类型起别名,但不能为变量起别名标准答案:B知识点解析:本题考查typedef的用法。typedef并不是增加一种新的类型,而是对已存在的类型用一个新的名字来代表,所以B选项错误。12、有以下程序#inclUde#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;iA、1,3,5,B、2,4,8,C、3,5,7D、3,6,9,标准答案:D知识点解析:函数fun()的作用是求出二维数组a[][N]中每一行中的最大元素,所以在main()函数中执行完fun(x,y)后,数组y中的元素为二维数组x[N][N]每一行的最大元素。13、以下选项中表示一个合法的常量是(说明:符号□表示空格)A、123E0.2B、2.7e□C、0999□D、0Xab标准答案:D知识点解析:本题考查C语言中的常量。选项A字母E后面必须是整型数,浮点数错误:选项B字母e后面没有整型数:选项C以0开始表示8进制数,8进制数没有9;选项D是一个正确的16进制常数。14、设有定义:intx=0,*p;紧接着的赋值语句正确的是A、*p=NULL;B、p=NULL;C、p=x;D、木p=x;标准答案:B知识点解析:定义指针变量时,必须将指针变量初始化为NULL(为空),否则,如果不赋给它地址,系统会随机给它分配一个地址。15、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%2==0C、x%2!=0D、x%2==1标准答案:B知识点解析:A选项的值为不定值,但绝对不是0,算术运算符的优先级高于关系运算符的优先级,所以当x为大于1的奇数时,B选项的值为假,即0?C选项的值为真,即1,D选项的值为真,即1,选项B正确。16、当变量c的值不为2、4、6时,值也为“真”的表达式是A、(c==2)‖(c==4)‖(c==6)B、(c>=2&&c<=6)&&!(c%2)C、(c>=2&&c<=6)&&(c%2!=1)D、(c>=2&&c<=6)‖(c!=3)‖(c!=5)标准答案:D知识点解析:逻辑或运算中,只要有一项为真,表达式的值就为真,故选项D中c的值不为2、4、6时,那么表达式(c>=2&&c<=6)以及(c!=3)、(c!=5)必有一个成立,表达式的值也为真。17、有以下程序#includemain(){inta=5,b=1,t;t=(a<<2)|b;printf("%d\n",t);}A、11B、6C、21D、1标准答案:C知识点解析:本题考查位操作运算符。‘<<’是左移运算符,左移一位相当于乘2,‘|’是按位或运算符。5左移两位相当于乘4,得到20,20的二进制数是00010100,和00000001进行按位或操作得到00010101,即十进制的21。18、有以下程序#include<stdio.h>voidmain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf("%d",s+4;break;case3:printf("%d",s+3);default:printf("%d",s+1);break;}scanf("%d",&s);}}运行时,若输入123450,则输出结果是A、66656B、6566456C、66666D、6666656标准答案:B知识点解析:这道试题主要考查了switch和break语句,当变量s的值为1时,执行case1、case2两条语句,输出65;当变量s的值为2时,执行case2语句,输出6;变量s的值为3时,执行case3、default两条语句,输出64;变量s的值为4时,执行default语句,输入5;变量s的值为5时,执行default语句,输出6;变量s的值为0时,程序运行结束。19、以下叙述中正确的是A、对于“for(表达式1;表达式2;表达式3)循环体”首先要计算表达式2的值,以便决定是否开始循环B、对于“for(表达式1;表达式2;表达式3)循环体”,只在个别情况下才能转换成while语句C、只要适当地修改代码,就可以将do-while与while相互转换D、如果根据算法需要使用无限循环(即通常所称的“死循环”),则只能使用while语句标准答案:C知识点解析:while和do…while语句和for语句很容易进行相互转换。对于for循环的执行过程如下:①计算表达式l。②计算表达式2。若其值为非0,转步骤③;若其值为0,转步骤⑤。③执行一次for循环体。④计算表达式3,转向步骤②。⑤结束循环。任何循环都有可能成为死循环。20、有以下程序#includevoidmain(){inta[]={2,3,5,4},i;for(i=0;i<4;i++)switch(i%2){case0:switch(a[i]%2){case0:a[i]++;break;case1:a[i]--;}break;’case1:a[i]=0;}for(i=0;i<4;i++)printf("%d",a[i]);printf("\n");}程序运行后的输出结果是A、2050B、3344C、3040D、0304标准答案:C知识点解析:在主函数的for循环语句中,当循环变量i的值等于0,2时,执行switch中的case0语句,分别对数组元素a[0]和a[2]加1和减1,所以a[0]的值等于3,a[2]等于4。当循环变量i的值等于1,3时,执行switch中的case1语句,把数组元素a[1]和a[3]的值赋为0。所以输出数组a的元素,其结果为3040。21、若有定义语句:char*s1="OK",*s2="ok";以下选项中,能够输出"OK"的语句是A、if(strcmp(s1,s2)!=0)puts(s1);B、if(strcmp(s1,s2)!=0)puts(s2);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)==0)puts(s1);标准答案:A知识点解析:字符串比较函数strcmp的功能是对s1和s2所指字符串进行比较。如果s1<s2,返吲负数,如果s1==s2,返回0,如果s1>s2,返回正数,所以对于本题来说,能够输出“OK”的语句是选项A)所指的语句。22、以下语句中存在语法错误的是A、charss[][20]={"right?"};B、char*ss[6];ss[1]="right?";C、char*ss[]={"right?");D、charss[6][20];ss[1]="right?";标准答案:A知识点解析:选项A)中定义了二维数组ss,可以用于存储字符串,但是字符串的存储不能通过赋值,仅可以初始化或者输入得到,而选项C)和A)不同,选项C)为指针数组,对于指针变量可以保存常量字符串的地址。23、以下叙述中正确的是()。A、设有指针变量为double*p,则p+1将指针p移动8个字节B、函数的类型不能是指针类型C、函数的形参类型不能是指针类型D、基类型不同的指针变量可以相互混用标准答案:A知识点解析:考查指针与函数。指针进行算术运算的时候,数字"1"不再代表十进制整数"1",而是指一个存储单元长度,具体占用的空间依据指针变量的基本类型而定,double类型的变量占用8个字节,所以p+1将p移动了8个字节,A)正确。指针可以作为函数的参数参与数据传递过程,也可以作为函数的返回值被返回,故选项B)、C)错。指针变量的赋值运算只能在同一数据类型之间进行,选项D)错,答案选A)。24、有以下程序#include<stdio-h>voidfun(char*a,char*b){while(*a=’*’)a++;while(*b=*a){b++;a++;}}main(){char*s="****a*b****",t[80];fun(s,t);puts(t);}程序的运行结果是A、a*bB、*****a*bC、a*b****D、ab标准答案:C知识点解析:主函数main()定义了指向字符串的指针和一个字符数组,接着调用fun(s,t)函数,进行实参向形参传递,函数fun()第一个while语句判断*a中的值为“*”时继续扫描,当遇到不是“*”时结束,接着第二个while循环语句,将*a中从“a”开始的后续所有字符都赋予*b,也就是t[80]中的内容为“a*b****”。25、有以下程序#include#includevoidfun(int*p1,int*p2,int*s){s=(int*)calloc(1,sizeof(int));*s=*p1+*p2;free(s);}main(){inta[2]={1,2},b[2]={40,50},*q=a;fun(a,b,q);printf("%d\n",*q);}程序运行后的输出结果是A、42B、41C、1D、0标准答案:C知识点解析:本题考查把数组名作为函数参数,执行fun函数后,s的值并没有发生变化,仍然是指向a,所以输出结果为1,选项C正确。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、下列关于栈的叙述中,正确的是A、栈底元素一定是最后入栈的元素B、栈顶元素一定是最先入栈的元素C、栈操作遵循先进后出的原则D、以上三种说法都不对标准答案:C知识点解析:栈是限定只能在表的一端进行插入和删除操作的线性表,必须按“后进先出”的规则操作元素。2、下列叙述中正确的是A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C、顺序存储结构能存储有序表,链式存储结构不能存储有序表D、链式存储结构比顺序存储结构节省存储空间标准答案:A知识点解析:顺序存储方式主要用于线性的数据结构,它把逻辑上相邻的数据元素存储在物理上相邻的存储单元里,结点之间的关系由存储单元的邻接关系来体现。而链式存储结构的存储空间不一定是连续的。3、下列结构中属于非线性结构的是A、二叉链表B、二维数组C、循环队列D、双向链表标准答案:B知识点解析:线性结构是一个有序数据元素的集合。常用的线性结构有:线性表,栈,队列,双队列,数组,串:常见的非线性结构有:二维数组,多维数组,广义表,树(二叉树一等),图。循环队列、双向链表和二叉链表都是线性结构,而二维数组是非线性结构。4、结构化程序设计的基本原则不包括()。A、效率第一B、自顶向下C、限制使用GOTO语句D、逐步求精标准答案:A知识点解析:结构化程序设计方法的主要原则可以概括为:自顶向下,逐步求精,模块化和限制使用GOTO语句。5、合法的C语言数值常量是()。A、21.0Xa334.5e0B、018.5e-3-0xfC、.1344el.50abcD、0x8A10,0003.e5标准答案:A知识点解析:C语言常量数制中的八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B中,018是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整,而选项C中4e1.5是错误的。在选项D中,整型数据10,000的表示形式是错误的。6、结果为“假”的表达式是()。A、(3<4)==1B、(3+3)>5C、(3!=4)>2D、3<=4标准答案:C知识点解析:关系表达式和逻辑表达式的结果为非零或者0,其中0表示假,而非零表示真,3!=4的结果为真,即1,1>2的结果为假。7、若有定义:floatx=1.5;inta=1,b=3,c=2;,则正确的switch语句是()。A、switch(a+b){case1:printf(’’*\n’’);case2+1:printf(’’**\n’’);}B、switch((int)x);{case1:printf(’’*\n’’);case2:printf(’’**\n’’);}C、switch(x)D)switch(a+b){case1.0:printf(’’*\n’’);case2.0:printf(’’**’’\n”);}D、switch(a+b){case1:printf(’’*\n’’);casec:printf(’’**\n’’);}标准答案:A知识点解析:B选项中switch((int)x);语句中不应该有最后的分号。switch(expr1)中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C选项错误。case后面必须为常量表达式,所以D选项错误。8、某系统结构图如下图所示,则该系统结构图的宽度是A、2B、3C、4D、n标准答案:D知识点解析:宽度是指最大模块数的层的控制跨度。题目中系统第一层只有1个模块,第二层有n(n>3)个模块,第三层有4个模块,控制跨度为n,D选项正确。9、有以下程序:#include<stdio.h>intf(intx);main(){intn=1,m;m=f(f(f(n)));pfinff("%d\n",m);}intf(intx){returnx*2;}程序的运行结果是()。A、8B、2C、4D、1标准答案:A知识点解析:第一次调用m=f(f(f(1))),第二次为m=f(f(2)),第三次为m=f(4),即返回值为8。10、有如下程序#includemain(){if(’\0’==0)putchar(’X’);if(’0’==0)putchar(’Y’);if(’a’>’b’)putchar(’Z’);printf("\n");}程序运行后的输出结果是()。A、XB、XYZC、YZD、Y标准答案:A知识点解析:字符常量与其ASCII码值一一对应,比较和计算时使用字符数据对应的ASCII码进行运算。?\0?的ASCII码为0,?0?的ASCII码为48,?a?的ASCII码为97,?b?的ASCII码为98,所以只有第一条if语句的判定条件为真,所以答案选A。11、有三个关系R,S和T如下图所示:则由关系R和S得到关系T的操作是A、选择B、差C、交D、并标准答案:B知识点解析:由关系T中的数据可以看出,其数据由属于关系R但是不属于关系S的数据组成。所以关系T是由关系R和S通过差运算得到的。12、“商品”与“顾客”两个实体集之间的联系一般是A、一对一B、一对多C、多对一D、多对多标准答案:D知识点解析:实体集间的联系的个数可以是单个也可以是多个。两个实体集之间的联系实际上是实体集间的函数关系,这种关系有三种:一对一的联系,简记为1:1;一对多或多对一联系,简记为1:m或m:1;多对多联系,简记为m:n。本题中“商品”与“顾客”两个实体集之间的联系是多对多联系。因为一种“商品”可以被多个“顾客”购买,而一个“顾客”也可以购买多个“商品”。13、若有定义:doublea=22;inti=0,k=18;则不符合C语言规定的赋值语句是A、i=(a+k)<=(i+k);B、a=a++,i++;C、i=a%11;D、i=!a;标准答案:C知识点解析:在C语言中,求余运算符的运算对象只能是整型,在题目中,变量a是一个双精型实型变量。14、在以下给出的表达式中,与while(E)中的(E)不等价的表达式是A、(E>0||E<0)B、(!E==0)C、(E!=0)D、(E==0)标准答案:A知识点解析:在while(E)中,表达式E可以是C语言中任意合法的条件表达式,但不能为空,由它来控制循环体是否执行。在选项A)中表达式E>0||E<0是一个逻辑表达式。15、若有定义语句:char*s1="OK",*s2"=ok";以下选项中,能够输出"OK"的语句是A、if(strcmp(s1,s2)!=0)puts(s1);B、if(strcmp(s1,s2)!=0)puts(s2);C、if(strcmp(s1,s2)==1)puts(s1);D、if(strcmp(s1,s2)==0)puts(s1);标准答案:A知识点解析:字符串比较函数strcmp的功能是对s1和s2所指字符串进行比较。如果s1<s2,返回负数,如果s1==s2,返回0,如果s1>s2,返回正数,所以对于本题来说,能够输出“OK”的语句是选项A所指的语句。16、假定已建立以下链表结构,且指针p和q已指向如图所示的节点:则以下选项中可将q所指节点从链表中删除并释放该节点的语句组是A、p=q->next;free(q);B、p=:q;free(q);C、(*p).next=(*q).next;free(p);D、p->next=q->next;free(q);标准答案:D知识点解析:本题考查了在线性链表删除一个节点的方法,要删除q所指向的节点,只需要把q所指向的节点的前一个节点中的后继指针指向q所指向的节点的下一个节点即可,即p->next=q->next=再释放q所指向的节点,即free(q)。17、设有以下语句typedefstructTT{charc;inta[4];}CIN;则下面叙述中正确的是A、TT是struct类型的变量B、可以用TT定义结构体变量C、CIN是structTT类型的变量D、可以用CIN定义结构体变量标准答案:D知识点解析:C语言允许用typedef说明一种新的类型名,说明新类型名的语句为一般形式为:typedef类型名标识符在此,“类型名”必须是此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。在本题中用typedef定义CIN为TT的一种新的类型名,因而可以用它定义一个结构体变量。18、以下选项中合法的常量是A、2.7eB、999C、123E0.2D、0Xab标准答案:D知识点解析:0xab是十六进制表示的常量。19、若各选项中所用变量己正确定义,函数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){……}标准答案:A知识点解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或chaz。时除外)。在选项A)中,调用的子函数在调用后面定义,所以不正确。在选项B)、C)中,被调用函数在主函数之前定义,再在主函数中调用,所以是正确的;在选项D)中,在主函数中先对子函数floatfun(inti,inti)进行了声明,然后进行调用。20、有下列程序:main(){inta[4][4]={{1,4,3,2),{8,6,5,7),{3,7,2,5),{4,8,6,1)},i,k,t;for(i=0;i<3;i++)for(k=i+1;k<4;k++)if(a[i][i]<a[k][k]){t=a[i][i];a[i][i]=a[k][k];a[k][k]=t;}for(i=0;i<4;i++)printf("%d,",a[0][i]);}程序运行后的输出结果是A、6,2,1,1,B、1,1,2,6,C、2,3,4,6,D、6,4,3,2,标准答案:D知识点解析:利用二重for循环对二维数组af4][4]的主对角线上的元素{1,6,2,1}实现按列从大到小排序,所以数组a[4][4]的值变为{{6,4,3,2,},{8,2,5,7},{3,7,1,5},{4,8,6,1}},最后输出数组a[4][4]第一行上的元素,所以输出结果为6,4,3,2。21、若要定义一个具有5个元素的整型数组,以下错误的定义语句是A、inta[5]={0};B、intb[]={0,0,0,0,0};C、intc[2+3]D、inti=5,d[i];标准答案:D知识点解析:本题考查一维数组的定义,C语言中一维数组的定义方式为:类型说明符数组名[常量表达式];。选项A正确:选项B初始化了5个元素,因此数组长度为5;选项C常量表达式2+3的值为5,正确:选项D数组长度不是常量表达式,错误。22、以下叙述中正确的是A、在C程序中的八进制和十六进制,可以是浮点数B、整型变量可以分为int型、short型、long型和unsigned型四种C、八进制数的开头要使用英文字母o,否则不能与十进制区分开D、英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符标准答案:B知识点解析:C程序中的实型常量只有十进制一种数制,所以A错误,八进制数以0打头,所以C错误,C语言中整数只有十进制,八进制,十六进制三种没有二进制数制,所以D错误。23、以下叙述中正确的是A、字符变量在定义时不能赋初值B、字符常量可以参与任何整数运算C、同一英文字母的大写和小写形式代表的是同一个字符常量D、转义字符用"\"符号开头标准答案:B知识点解析:A选项中,字符变量在定义时可以赋初值;C选项中,同一英文字母的大写和小写形式代表的是不同的字符常量;D选项中,转义字符以反斜线"\"开头的。因此B选项正确。24、.设有如下的说明和定义struct{inta;char*s;}x,*p=&x;x.a=4;x.s="hello";则以下叙述中正确的是A、(p++)->a与p++->a都是合语法的表达式,但二者不等价B、语句++p->a;的效果是使p增1C、语句++p->a;的效果是使成员a增1D、语句*p->s++;等价于(*p)->s++;标准答案:C知识点解析:本题考查结构体变量的引用,++p->a的效果是使成员a增1,p++->a不合法,*p->s++为字符e,与(*p)->s++不等价。25、有以下程序段charc1,c2;for(c1=’0’,c2=’9’;c1<c2;c1++,c2--)printf("%c%c",c1,c2);程序段的执行结果是()。A、0123456789B、0918273645C、0123498765D、9876543210标准答案:B知识点解析:程序定义两个字符变量c1和c2。for循环中,首先为c1赋值“0”,为c2赋值“9”,接着判断c1和c2的大小。由于字符变量可以作为整型数处理,数字字符的ASCII值按字面数值的大小顺序连续递增,因此c1小于c2成立,执行循环体输出“09”,再将c1自增1、c2自减1后,执行下一轮循环,直到c1=’5’,c2=’4’时,c1<c2不成立,循环终止。最终程序段输出:0918273645。故本题答案为B选项。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、支持子程序调用的数据结构是A、栈B、树C、队列D、二叉树标准答案:A知识点解析:栈是一种限定在一端进行插入与删除的线性表。在主函数调用子函数时,要首先保存主函数当前的状态,然后转去执行子函数,把子函数的运行结果返回到主函数调用子函数时的位置,主函数再接着往下执行,这种过程符合栈的特点。所以一般采用栈式存储方式。2、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为A、15B、16C、20D、0或35标准答案:D知识点解析:循环队列的队头指针和尾指针都等于15,此循环队列中元素的个数有两种情况,第一种情况是队头指针和尾指针都是第一次到达15,此时元素个数为0:第二种情况是队头指针第一次到达15,而尾指针第二次到达15,此时元素个数为35。3、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为12层,每层只有一个结点。4、以下选项中合法的变量是A、5aB、A%C、_10_D、sizeof标准答案:C知识点解析:对于变量的命名要利用标识符命名,所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。其中标识符构成:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线:因此选项A中数字开头,选项B出现了非法字符%,而选项D中sizeof为关键字,不能为变量命名。5、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:因为一间宿舍可以住多个学生,即多个学生住在一间宿舍中,但一个学生只能住一间宿舍,所以实体宿舍和学生之间是一对多的关系。6、对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为A、9B、10C、45D、90标准答案:C知识点解析:线性表的长度为n,最坏情况下冒泡排序需要比较的次数为n(n-1)/2。7、在E—R图中,用来表示实体联系的图形是()。A、椭圆形B、矩形C、菱形D、三角形标准答案:C知识点解析:在E—R图中,实体集用矩形,属性用椭圆,联系用菱形。8、下列选项中不属于面向对象程序设计特征的是A、继承性B、多态性C、类比性D、封装性标准答案:C知识点解析:面向对象程序设计的三个主要特征是:封装性、继承性和多态性。封装性即只需知道数据的取值范围和可以对该数据施加的操作,而无需知道数据的具体结构以及实现操作的算法。继承性是指使用已有的类定义作为基础建立新类的定义技术。对象根据所接受的消息而做出动作,同样的消息被不同的对象接受时可导致完全不同的行动,该现象称为多态性。9、下面不属于软件设计原则的是A、抽象B、模块化C、自底向上D、信息隐藏标准答案:C知识点解析:软件设计的基本原则包括抽象、信息隐藏、模块化、局部化、确定性、一致性、完备性和可验证性。10、在源程序的开始处加上#include进行文件引用的原因,以下叙述正确的是()。A、stdio.h文件中包含标准输入/输出函数的函数说明,通过引用此文件以便能正确使用printf、scanf等函数B、将stdio.h中标准输入/输出函数链接到编译生成的可执行文件中,以便能正确运行C、将stdio.h中标准输入/输出函数的源程序插入到引用处,以便进行编译链接D、将stdio.h中标准输入/输出函数的二进制代码插入到引用处,以便进行编译链接标准答案:A知识点解析:stdio.h包含标准库函数头文件,很多库函数的声明都在stdio.h这个文件中,包含之后就可以用其中的库函数,例如printf函数,scanf函数等。11、下列描述中正确的是A、软件交付使用后还需要再进行维护B、软件工具交付使用就不需要再进行维护C、软件交付使用后其生命周期就结束D、软件维护是指修复程序中被破坏的指令标准答案:A知识点解析:通常将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。软件生命周期分为软件定义、软件开发及软件运行维护三个阶段。已交付的软件投入运行后,应在运行使用中不断地维护,根据新提出的需要进行必要而且可能的扩充和删改。12、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%21=0C、x%2=0D、x%2=1标准答案:C知识点解析:由于x为大于1的奇数,因此x%2取余的值为1,和0不相等。13、下列描述中正确的是A、软件测试的主要目的是发现程序中的错误B、软件测试的主要目的是确定程序中错误的位置C、为了提高软件测试的效率,最好由程序编制者自己来完成软件测试的工作D、软件测试是证明软件没有错误标准答案:A知识点解析:软件测试是为了发现错误而执行程序的过程。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例;一个成功的测试是发现了至今尚未发现的错误的测试。为了达到好的测试效果,应该由独立的第三方来构造测试,程序员应尽量避免检查自己的程序。14、以下叙述中正确的是()。A、char,c1,c2,*c3,c4[40];是合法的变量定义语句B、数组下标的下限由数组中第一个非零元素的位置决定C、数组下标的下限由数组中第一个被赋值元素的位置决定D、数组下标的下限是1标准答案:A知识点解析:A选项正确,charc1,c2,*c3,c4[40]表示定义了两个字符变量c1、c2,一个字符指针c3,一个字符数组c4。数组的下限永远为0,选项B、C、D错,答案选A。15、在软件开发中,需求分析阶段产生的主要文档是A、软件集成测试计划B、软件详细设计说明书C、用户手册D、软件需求规格说明书标准答案:D知识点解析:在软件开发过程中,需求分析阶段产生的主要文档是软件需求规格说明书。16、一间宿舍可住多个学生,则实体宿舍和学生之间的联系是A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:两个实体集间的联系可以有下面几种:一对一的联系、一对多或多对一的联系和多对多的联系。由于一个宿舍可以住多个学生,所以它们的联系是一对多联系。17、一个教师讲授多门课程,一门课程由多个教师讲授。则实体教师和课程间的联系是A、1:1联系B、1:m联系C、m:1联系D、m:n联系标准答案:D知识点解析:一个教师可讲授多门课程,一门课程可由多个教师讲授,则实体教师和课程的联系是多对多的联系。18、关于C语言程序的叙述中正确的是()。A、当用scanf从键盘输入数据时,每行数据在未按下回车键(Enter键)前,可以任意修改B、复合语句存语法上包含多条语句,其中不能定义局部变量C、空语句就是指程序中的空行D、花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的标准答案:A知识点解析:当使用scanf函数从键盘输入数据时,可以输入间隔符,但输入回车后scanf函数即接收了这一行数据,不能再修改,选项A正确;在复合语句中可以定义变量为局部变量,选项B错误;而空语句为“;”,不是空行,选项C错误;对于选项D,{}还可以表明复合语句的开头结尾,或者循环体的开头结尾等,选项D错误。19、有以下程序#includevoidmain(){ints;scanf("%d",&s);while(s>0){switch(s){case1:printf("%d",s+5);case2:printf(“%d”,s+4);break;case3:printf(“%d”,s+3);default:printf(“%d”,s+1);break;}scanf(“%d”,&s);}}运行时,若输入123450,则输出结果是A、66656B、6566456C、66666D、6666656标准答案:B知识点解析:这道试题主要考查了switch和break语句,当变量s的值为1时,执行case1、case2两条语句,输出65;当变量s的值为2时,执行case2语句,输出6;变量s的值为3时,执行case3、default两条语句,输出64;变量s的值为4时,执行default语句,输入5;变量s的值为5时,执行default语句,输出6:变量s的值为0时,程序运行结束。20、以下选项中不属于C语言程序运算符的是A、sizeofB、()C、<>D、&&标准答案:C知识点解析:sizeof为测试内存的运算符,()为算术运算符,&&为逻辑运算符。而<>不是C语言的运算符,C语言中!=表示不等于。21、以下叙述中正确的是A、C语言程序总是从最前面的函数开始执行B、C语言程序总是从main函数开始执行C、C语言程序中main函数必须放在程序的开始位置D、C语言程序所调用的函数必须放在main函数的前面标准答案:B知识点解析:C语言中一个源程序都有一个且只能有一个main函数,即主函数;C语言规定必须用main作为主函数名。其后的一对圆括号中可以是空的,但不能省略。程序中的main()是主函数的起始行,也是C程序执行的起始行。每一个程序都必须有一个且只能有一个主函数。一个C程序总是从主函数开始执行,到main函数体执行完后结束,而不论main函数在整个程序中的位置如何。而调用函数的定义位置和调用没有直接关系。22、下列定义变量的语句中错误的是A、floatUS$;B、doubleint_;C、charFor;D、im_int;标准答案:A知识点解析:C语言规定,变量的标识符只能由字母、数字或下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项B)定义的变量标识符int和选项D)定义的变量标识符int与C语言的关键字int是不同的,是正确的变量标识。选项C)定义的变量标识符For与C语言中的关键字for是两个不同的标识符,而在选项A)包含有特殊字符$,因而其不符合C语言的变量命名规定。23、用树形结构表示实体之间联系的模型是A、关系模型B、网状模型C、层次模型D、以上三个都是标准答案:C知识点解析:层次模型的基本结构是树形结构,这种结构方式在现实世界中很普遍,它们自顶向下、层次分明。24、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、差C、交D、并标准答案:B知识点解析:由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过差运算得到的。25、以下选项中合法的常量是A、2.7eB、999C、123E0.2D、0Xab标准答案:D知识点解析:0xab是十六进制表示的常量。26、有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={’’One*World’’,’’One*Dream!’’},*p=str[1];printf(’’%d,’’,strlen(p));printf(’’%s\n’’,p);}程序的运行结果是()。A、10,One*Dream!B、9,One*Dream!C、9,One*W0rldD、10,One*World标准答案:A知识点解析:p是指向二维字符数组第二行One*Dream!的数组指针,所以长度是10,打印输出的也是该字符串。27、以下选项中,当x为大于1的奇数时,值为0的表达式是A、x/2B、x%2==0C、x%2!=0D、x%2==1标准答案:B知识点解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项B)等于关系表达式的结果为假,即等于0。28、有以下程序:#include<stdio.h>main(){FILE*pf;char*s1="China",*s2="Beijing";pf=fopen.("abc.dat","wb+");fwrite(s2,7,1,pf);rewind(pf);/*文件位置指针回到文件开头*/fwrite(s1,5,1,pf);fclose(pf);}程序执行后,abc.dat文件的内容是()。A、ChinaB、ChinangC、ChinaBeijingD、BeijingChina标准答案:B知识点解析:本题考查文件操作函数:fwrite和rewind函数。题目中先是将s2字符串写入adc.dat中,然后将写指针回到文件开头,然后写入s1字符串,那么s1字符串就将前5个字符覆盖,所以最终结果为Chinang,B选项正确。29、有以下程序#include#definef(x)x*x*xmain(){inta=3,s,t;s=f(a+1);t=f((a+1));printf("%d,"d\n",s,t);}程序运行后的输出结果是A、10,10B、10,64C、64,10D、64,64标准答案:B知识点解析:根据题目中宏f(x)的定义,f(a+1)=a+1*a+1*a+1=a+a+a+1=10,而f((a+1))=(a+1)*(a+1)*(a+1)=4*4*4=64。30、有以下程序#includevoidfun(char**p){++p;printf("%s\n”,"p);}main(){char*a[]=("Morning","Afternoon","Evening","Night");fun(a);}程序的运行结果是A、fternoonB、MorningC、orningD、Afternoon标准答案:D知识点解析:在程序中,指针的指针变量a和p都是指向字符串的指针。执行fun(a)语句时,p指向的是7符串数组a的第一个字符串“Moming”,p自加1之后,*p指向了字符串数组a的第2个字符串“Aftermoon”。31、设有定义:inta=1,b=2,c=3;以下语句中执行效果与其它三个不同的是A、if(a>b)c=a;a=b;b=c;B、if(a>b){c=a,a=b,b=c;}C、if(a>b)c=a,a=b,b=c;D、if(a>b){c=a;a=b;b=c;}标准答案:A知识点解析:在C语言中,用分号表示一条语句的结束,用{}把几条语句放在一块表示一个语句块,其整体表示一个功能。因而在题目给出的四个选项中,选项B、C、D表示的功能相同,而选项A表示的是一条if语句,两条赋值语句。32、有以下程序,程序运行后的输出结果是main(){intm=12,n=34;printf("%d%d",m++,++n);printf("%d%d\n",n++,++m);}A、12353514B、12353513C、12343514D、12343513标准答案:A知识点解析:本题主要考查自加运算符,自加运算符++在变量前表示先增加然后再使用,++在变量后表示先使用然再增加。本题中,第一个prinff语句m++表示先输出m的值,然后m增加1,因此首先输出的是12,然后m的值变成13,++n表示n首先增加1变成35然后输出,因此输出的是35;在第二个printf语句中,n++是先输出n的值然后增加,即输出35,n的值变为36,++m表示先增加m的值再输出,m的值由13变成14,故最后输出的是14。33、有以下程序#includemain(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序的运行结果是()。A、453423B、432543C、233445D、233423标准答案:A知识点解析:考查循环嵌套。内层循环是外层循环的一部分,外层循环每循环一次,内层循环要一直循环到结束。该程序的执行流程就是,外层循环i从3到1,内层循环j从1到2,每次内层循环输出i+j的值。内层循环结束后输出回车。由此,易得出第一行的输出结果为:3+13+2<回车>即45<回车>,以此类推,答案选A。34、有以下程序structS{inta;intb;};main(){structSa,*p=&a;a.a=99;printf("%d\n",___________);}程序要求输出结构体rfl成员a的数据,以下不能填入横线处的内容是A、a.aB、*p.aC、p->aD、(*p).a标准答案:B知识点解析:如果p指向结构体,那么下面三种形式都可以访问结构体的成员:结构体变量.成员名、(*p).成员名、p->成员名。35、在一个C源程序文件中所定义的全局变量,其作用域为A、由具体定义位置和extern说明来决定范围B、所在程序的全部范围C、所在函数的全部范围D、所在文件的全部范围标准答案:A知识点解析:全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用extern说明符扩展全局变量的作用域(当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序:该变量是一个已在外部定义了的全局变量,已经分配了存储单元,不需要再为它分配存储单元。这时全局变量的作用域从extern说明处起,延伸到该函数末尾)。当一个程序由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变量,而在其他用到这些全局变量的文件中用extern对这些变量进行说明。36、以下叙述中正确的是A、不能用字符串常量对字符数组名进行整体赋值操作B、字符串常量“Hello”会被隐含处理成一个无名字符型数组,它有5个元素C、“charstr[7]="string!";”在语法上是合法的,运行也是安全的D、“char*str;str="Hello";”与“charstr[];str="Hello";”效果是一样的标准答案:A知识点解析:字符数组仅仅可以采用定义时初始化以及输入得到数据,在程序其他部分不允许对其进行赋值,字符串常量中除了实际字符之外还有结束标志,选项B)错误,而选项C)中,没有空间存放字符串结束标志,因此运行是不安全的。选项D)中第一个str为指针,可以赋值,而后面的为数组,在程序中赋值出错。37、有以下程序,程序运行后的输出结果是#include<stdio.h>#definefix)x*x*xmain(){inta=3,s,t;s=f(a+1);t=f((a+1));printf("%d,%d\n",s,t);}A、10,10B、10,64C、64,10D、64,64标准答案:B知识点解析:根据题目中宏f(x)的定义,运算过程应为:s=f(a+1)=a+1*a+1*a+1=a+a+a+1=10,因此最后s的结果为10,而t=f((a+1))=(a+1)*(a+1)*(a+1)=4*4*4=64的结果为64。38、若要定义一个具有5个元素的整型数组,以下错误的定义语句是A、inta[5]={0};B、intb[]={0,0,0,0,0};C、intc[2+3]D、inti=5,d[i];标准答案:D知识点解析:本题考查一维数组的定义,C语言中一维数组的定义方式为:类型说明符数组名[常量表达式];。选项A正确:选项B初始化了5个元素,因此数组长度为5;选项C常量表达式2+3的值为5,正确:选项D数组长度不是常量表达式,错误。39、若有以下程序#include<stdio.h>int*f(int*s,int*t){intk;if(*s<*t){k=*s;*s=*t;*t=k;}returns;}main(){inti=3,j=5,*p=&i,*q=&j,*r;r=f(p,q);printf("%d,%d,%d,%d,%d\n",i,j,*p,*q,*r);}则程序的输出结果是A、3,5,5,3,5B、3,5,3,5,5C、5,3,5,3,5D、5,3,3,5,5标准答案:C知识点解析:函数f为返回值为指针的函数,主要功能是返回s和t指向空间值大的数据的地址,同时如何s指向空间数据大于t指向空间的数据,那么交换。主函数p和q指向i和j,值为3和5,j的值大于i的值,因此调用函数f以后,返回i的地址,r指向j,同时i和j的值交换,i=5,j=3,p和q的指向不变,p指向i,q指向j。40、有以下程序:#includevoidswap(char*x,char*y){chart;t=*x;*x=*y;*y=t;}main(){char*s1="abc",*s2="123";swap(s1,s2);printf("%s,%s\n",s1,s2);}程序执行后的输出结果是()。A、321,cbaB、abc,123C、123,abcD、1bc,a23标准答案:D知识点解析:字符串是一个特殊的数组,所以按照数组的规则,s1应该指向的是数组的首地址,即"abc"的第一个字符的地址。s2指向的是"123"的第一个字符的地址。调用swap函数之后交换的是两个字符串的第一个字符’a’和’1’的内容,所以打印输出为D。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共40题,每题1.0分,共40分。)1、深度为7的二叉树共有127个结点,则下列说法中错误的是()。A、该二叉树是满二叉树B、该二叉树有一个度为1的结点C、该二叉树是完全二叉树D、该二叉树有64个叶子结点标准答案:B知识点解析:满二叉树满足深度为m的二叉树最多有2m-1个结点,本题中二叉树深度为7且有127个结点,满足27-1=127,达到最大值,故此二叉树为满二叉树,也是完全二叉树。满二叉树第k层上有2k-1结点,则该二叉树的叶子结点数为27-1=64个。满二叉树不存在度为1的结点。2、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A、10B、8C、6D、4标准答案:C知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。3、有以下程序#includevoidmain(){intn=2,k=-1;while(!(k>0‖n++));printf("%d%d\n",k,n);}程序运行后的输出结果是()。A、02B、13C、57D、12标准答案:D知识点解析:在程序中整型变量n的初始值等于2,整型变量k的初始值等于1,在执行while语句时,由于表达式k的值大于0为真,所以不再需要判断“n++”是否为真,“(k>0∥n++)”表达式的值为真。“!(k>0∥n++)”表达式的值为假,所以while语句中的条件不满足,循环语句不会执行,变量n的值也不会加1,所在输出变量k和n的值是1和2。4、下面不属于需求分析阶段任务的是A、确定软件系统的功能需求B、确定软件系统的性能需求C、需求规格说明书评审D、制定软件集成测试计划标准答案:D知识点解析:需求分析阶段的工作可分为4个阶段:需求获取、需求分析、编写需求规格说明书、需求评审。5、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是A、必须是整数值B、必须是正数C、可以是任意合法的数值D、必须是逻辑值标准答案:C知识点解析:在if语句中,表达式可以是任意合法的数值。当其值为非零时,执行if语句,为0时执行else语句。6、在带链队列中,经过一系列正常的操作后,如果front=rear,则队列中的元素个数为A、0或1B、0C、1D、队列满标准答案:A知识点解析:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的链式存储也称为链队列。为了便于操作,可给链队列添加1个头结点,并令头指针指向头结点。队列为空的判断条件是头指针和尾指针的值相同,且均指向头结点。当队列为空(0)或1时,front=rear。7、以下叙述中正确的是A、if语句只能嵌套一层B、不能在else子句中再嵌套if语句C、if子句和else子句中可以是任意的合法的C语句D、改变if-else语句的缩进格式,会改变程序的执行流程标准答案:C知识点解析:含else子句的if语句的格武为if(表达式)语句1else语句2其中if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句,对于if和else语句的嵌会原则是比较自由的。8、对于现实世界中事物的特征,在实体一联系模型中使用()。A、属性描述B、关键字描述C、二维表格描述D、实体描述标准答案:A知识点解析:在实体-联系模型中,用属性来描述现实世界中对象的属性所表示的对象的性质、特征和行为。9、设有定义:intk=0;,以下选项的4个表达式中与其他3个表达式的值不相同的是()。A、++kB、k+=1C、k++D、k+1标准答案:C知识点解析:++k,先使得k的值自增1后再使用,k++是先取得k的值再将k的值自增1,所以C选项中表达式的值为0,而其他3个表达式的值均为1,所以选择C选项。10、有以下程序:#includemain(){inti,array[6]={1,5,0,4};for(i=0;i<5;i++)printf(“%d”,array[i]);printf(“\n”);}程序运行后的输出结果是()。A、04040B、15040C、15540D、12120标准答案:B知识点解析:本题主要考查一维数组的输出。由于数组中有6个元素,但初始化数组的时候只给出4个元素,所以array[5]=0,array[6]=0,前面几位元素依次输出,不够位数补0,所以选项B正确。11、有以下程序main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;}pr2ntf("%d,%d\n",a,b);}程序运行后的输出结果是A、8,11B、10,14C、7,11D、9,18标准答案:B知识点解析:在这段程序中变量a的初值等于1,变量b的初值等于2。第1次执行for循环语句后,变量a的值等于3,变量b的值等于3。第2次执行for循环后,变量a等于6,变量b的值等于7。第3次执行for循环后,变量a等于9,变量b的值等于14。第4次执行for循环后,变量a等于10,这时退出for循环,此时变量b的值等于14。因而程序输出变量a,b的值分别为10,14。12、设有如下程序:#includechars[20]=“Beijing”,*P;P=s:则执行P=s;语句后,以下叙述正确的是()。A、s和P都是指针变量B、s数组中元素的个数和P所指字符串长度相等C、可以用*P表示s[0]D、数组s中的内容和指针变量P中的内容相同标准答案:C知识点解析:程序定义了字符数组s和字符型指针变量p,并且使得p指向数组,执行p=s;语句后,*p即表示s[0];s数组中元素的个数和p所指字符串长度不相等,因为s数组中元素的个数包括字符串结束标志“\0”,而p所指字符串长度不包括“\0”;s是字符型数组,p是指针变量,数组s中的内容和指针变量p中的内容不相同,数组中存放的是字符串,而指针变量p存放的是数组的首地址,因此C选项正确。13、若intx=12;doubley=3.141593;则printf(’’%d%8.6f’’,x,y);的输出结果是()。A、123.141593B、123.1415930C、12,3.141593D、123.1415930标准答案:A知识点解析:本题考查格式化输出函数printf,在printf函数调用里面首先输入整型变量x的值12.然后按照’’%8.6f’’格式输出double类型变量y的值,’’%8.6f’’表示输出8位,小数点后输出6位,这里的8位是指输出的总长度。14、以下关于C语言的叙述中正确的是()。A、预处理命令通常位于函数体外面,但也可以位于函数体中间B、C语言中的变量定义须在其他语句之前C、在C语言程序的书写中,一个语句必须单占一行D、一个C语言源程序可以由一个或多个源文件组成,每个源文件可由自己的main函数标准答案:A知识点解析:源程序中可以有预处理命令(include命令仅为其中的一种)。C语言中的变量可以在使用之前的任何位置进行定义。C语言程序的书写中,多个语句可以位于一行,但为了增强可读性,一般每行只有一条语句。一个C语言源程序可以由一个或多个源文件组成,但仅可以有一个main函数。15、有以下程序#includeintfun(inta,intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){Printf("%d\n",fun(4,2));}程序的运行结果是A、1B、2C、3D、4标准答案:B知识点解析:由程序可知函数fun(inta,intb)是一个递归函数。所以当t函数中调用fun(4,2)时,其执行过程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值为2。16、已定义以下函数intfun(int*P){return*P;}fun函数的返回值是()。A、一个整数B、不确定的值C、形参P中存放的值D、形参P的地址值标准答案:A知识点解析:返回值为指针变量指向的数据,该数据已被定义为整型,因此A选项正确。17、以下程序的输出结果是()。#includemain(){inta=8,b=6,m=1;switch(a%4){case0:m++;break;case1:m++;switch(b%3){default:m++;case0:m++;break;}}printf("%d\n",m);}A、1B、2C、3D、4标准答案:B知识点解析:本题考查switch语句。因为a=8,a%4=0,所以执行case0后面的语句,将m加1,遇到break语句跳出switch。18、以下关于retum语句的叙述中正确的是A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处标准答案:B知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值。19、以下选项中,不合法的C语言用户标识符是A、AaBcB、a-bC、a_bD、_1标准答案:B知识点解析:在C语言中的用户标识符只能由字母,数字和下划母组成,并且第一个字符必须是字母或下划线,在选项A)中出现了非法的字符--。20、以下选项中合法的变量是A、5aB、A%C、_10_D、sizeof标准答案:C知识点解析:对于变量的命名要利用标识符命名,所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。其中标识符构成如下:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线;因此选项A)中数字开头,选项B)出现了非法字符%,而选项D)中sizeof为关键字,不能为变量命名。21、以下叙述中正确的是A、continue语句的作用是:使程序的执行流程跳出包含它的所有循环B、break语句只能用在循环体内和switch语句体内C、在循环体内使用break语句和continue语句的作用相同D、break语句只能用于switch语句体中标准答案:B知识点解析:只能在循环体内和switch语句体内使用break语句。continue语句的作用是结束本次循环,即跳过本次循环体中continue语句后面的语句,立刻进行下一次的循环条件判断,可以理解为仅结束本次循环。而break语句可以使程序流程跳出switch语句体,也可用break语句在循环结构中终止循环体。22、关于字符数组的定义中有语法错误的是()。A、charstr[3][10];str[1]=’’guest’’;B、charstr[][10]={’’guest’’};C、char*str[3];str[1]=’’guest’’;D、char*str[]={’’guest’’};标准答案:A知识点解析:本题考查字符数组的定义和使用。选项A定义了一个二维字符数组,第二句是直接给字符数组赋值,错误。C语言中不能直接给字符数组赋值;选项,B、C和D都是正确的。23、以下选项中关于程序模块化的叙述错误的是A、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块B、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:B知识点解析:如果应用结构化程序设计方法设计程序,那么可采用自顶向下,逐步细化的设计方法把若干独立模块组装成所要求的程序。24、有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen("myfile.dat","w");fputs("abc",fp);felose(fp);fp=fopen("myfile.dat","a+");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%s",str);puts(str);felose(fp);}程序的运行结果是()。A、abcB、28cC、ad9c28D、因类型不一致而出错标准答案:C知识点解析:本题考查文件操作函数:fprintf()函数。fprintf()函数向文件输出,将输出的内容输出到硬盘上的文件,或是相当于在文件的设备上执行两次fprintf后,文件中有abc28,所以C选项正确。25、设变量均已正确定义并赋值,以下与其他三组输出结果不同的一组语句是A、x++;printf("%d\n",x);B、++x;printf("%d\n",x);C、n=x++:printf("%d\n",n);D、n=++x;printf("%d\n",n);标准答案:C知识点解析:本题考查自增运算符。++在前表示先自增然后使用,++在后面表示先使用然后自增。选项A中首先执行x++,执行完后x自增1,然后printf输出的是x自增后的值;选项B首先执行++x,x的值增加1,接着输出x的值:选项C中++在x的后面,因此n的值是x自增前的值,printf输出的是x自增前的值;选项D中++在x的前面,因此x首先自增,然后再赋值给n,n的值是x自增后的值,输出的也是x自增后的值。26、以下选项中正确的定义语句是A、doublea=b=7;B、doublea:b;C、double,a,b;D、doublea=7,b=7;标准答案:D知识点解析:在C语言中,可以用一条语句同时定义几个同类型的变量,变量之间用逗号隔开。27、已知字符’A’的ASCII代码值是65,字符变量c1的值是’A’,c2的值是’D’。则执行语句printf("%d,%d",c1,c2-2);的输出结果是A、A,68B、A,BC、65,66D、65,68标准答案:C知识点解析:在C语言中,字符常量

温馨提示

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

评论

0/150

提交评论