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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷13(共9套)(共255题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数()。A、不同,但元素的存储顺序与逻辑顺序一致B、不同,且其元素的存储顺序可以与逻辑顺序不一致C、相同,元素的存储顺序与逻辑顺序一致D、相同,但其元素的存储顺序可以与逻辑顺序不一致标准答案:C知识点解析:在线性表的顺序存储结构中,其存储空间连续,各个元素所占的字节数相同,在存储空间中是按逻辑顺序依次存放的。2、下面叙述中正确的是A、线性表是线性结构B、栈与队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构标准答案:A知识点解析:线性表是最简单的、最常用的一种线性结构。所谓线性链表指的是采用链式存储结构的线性表。栈和队列其实是一种特殊的线性表。树是一种简单的非线性结构,二叉树是树的一种。3、有以下程序:#includeintb=2;intfun(int*k){b=*k+b;return(b);}voidmain(){inta[10]={1,2,3,4,5,6,7,8},i;for(i=2;i<4;i++){b=fun(&a[i])+b;prinff(“%d”,b);}prinff(“\n”);}程序运行后的输出结果是()。A、1012B、810C、1028D、1016标准答案:C知识点解析:因为b是全局变量,所以它的值在整个程序结束才会消失。for循环中,第一次循环,i=2,a[2]=3,所以fun(&a[i]=3+2=5,b=5,所以b:fun(&a[i])+b=5+5=10;第二次循环,b=10,然后fun(&a[i])代入a[3]=4,这时fun(&a[i]=10+4=14,所以b=fun(&a[i])+b=14+14=28。4、在快速排序法中,每经过一次数据交换(或移动)后()。A、只能消除一个逆序B、能消除多个逆序C、不会产生新的逆序D、消除的逆序个数一定比新产生的逆序个数多标准答案:B知识点解析:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。快速排序的思想是:从线性表中选取一个元素,设为T,将线性表中后面小于T的元素移到前面,而前面大于T的元素移到后面,结果就将线性表分成两部分(称两个子表),T插入到其分割线的位置处,这个过程称为线性表的分割,然后再用同样的方法对分割出的子表再进行同样的分割。快速排序不是对两个相邻元素进行比较,可以实线通过一次交换而消除多个逆序,但由于均与T(基准元素)比较,也可能会产生新的逆序。5、有以下程序#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf(’’%d\n’’,F(a++,b++));}程序运行后的输出结果是()。A、12B、15C、16D、20标准答案:A知识点解析:此题考查的是编译预处理命令以及自加运算符。“F(a++,b++)”先取a和b的值,参加运算,再把a和b的值分别加1,所以“F(a++,b++)=F(3,4)=3*4=12”。6、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下列各项中属于应用软件的是()。A、学生成绩管理系统B、C语言编译程序C、UNIX操作系统D、数据库管理系统标准答案:A知识点解析:软件按功能可以分为:应用软件、系统软件、支撑软件、操作系统、编译程序、汇编程序、网络软件、数据库管理系统都属于系统软件,所以B、C、D选项都是系统软件,只有A选项是应用软件。7、有如下程序段:intx=12;doubley=3.141593;printf(“%d%8.6f”,x,y);其输出结果是()。A、123.141593B、123.141593C、12,3.141593D、123.1415930标准答案:A知识点解析:printf函数中格式字符“%8.6”的含义是:变量y的输出宽度为8(包括小数点),小数点后面保留6位小数,且右对齐,所以选择A选项。8、下列关于数据库设计的叙述中,正确的是A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。9、数据库应用系统中的核心问题是A、数据库设计B、数据库系统设计C、数据库维护D、数据库管理员培训标准答案:A知识点解析:在数据库应用系统中的一个核心问题就是设计一个能满足用户要求,性能良好的数据库,这就是数据库设计。所以数据库设计是数据库应用的核心。10、以下叙述中正确的是A、在scanf函数的格式串中,必须有与输入项一一对应的格式转换说明符B、只能在printf函数中指定输入数据的宽度,而不能在scanf函数中指定输入数据占的宽度C、scanf函数中的字符串,是提示程序员的,输入数据时不必管它D、复合语句也被称为语句块,它至少要包含两条语句标准答案:A知识点解析:输入函数的调用格式:scanff格式控制,输入项1,输入项2….)格式控制的土要作用是指定输入时的数据转换格式,格式串中,必须含有与输入项一一对应的格式转换说明符选项A正确,在scanf函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数指定小数位的宽度,选项B错误,scanf函数中的格式控制字符串是为了输入数据用的,无论其中有什么字符,也不会输出到屏幕上,因此若想在屏幕上输出提示信息,应该首先使用printf函数输出,选项C错误,复合语句还可以是空语句呢,并没有规定语句条数,选项D错误。11、软件设计中模块划分应遵循的准则是A、低内聚低耦合B、高内聚低耦合C、低内聚高耦合D、高内聚高耦合标准答案:B知识点解析:耦合性与内聚性是模块独立性的两个定性标准。一般一个较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。12、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%dkn",r);}则程序的输出结果是A、10B、6C、7D、3标准答案:C知识点解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3;第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。13、一个工作人员可使用多台计算机,而一台计算机被多个人使用,则实体工作人员与实体计算机之间的联系是A、一对一B、一对多C、多对多D、多对一标准答案:C知识点解析:如果一个工作人员只能使用一台计算机且一台计算机只能被一个工作人员使用,则关系为一对一:如果一个工作人员可以使用多台计算机,但是一台计算机只能被一个工作人员使用,则关系为一对多:如果一个工作人员可以使用多台计算机,一台计算机也可以被多个工作人员使用,则关系为多对多。14、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。A、1B、0C、2D、不知道a的值,不能确定标准答案:A知识点解析:逻辑或“||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为1,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零。15、以下叙述中正确的是A、用户自己定义的函数只能调用库函数B、不同函数的形式参数不能使用相同名称的标识符C、在C语言的函数内部,可以定义局部嵌套函数D、实用的C语言源程序总是由一个或多个函数组成标准答案:D知识点解析:一个C语言源程序可以由一个或多个源文件组成,每个源文件可由一个或多个函数组成,这些函数可以是自定义函数,也可以是库函数,各个函数之问没有主从关系,不能嵌套定义函数。16、有以下程序main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf(’’%d*%d=%d’’,i,j,i*j);printf(’’\n’’);}}A、1*1=11*2=21*3=32*1=22*2=43*1=3B、1*1=11*2=22*2=41*3=32*3=63*3=9C、1*1=11*2=21*3=32*2=42*3=63*3=9D、1*1=12*1=22*2=43*1=33*2=63*3=9标准答案:C知识点解析:外层for循环的自变量i从1开始,每次循环后增1,直到i等于3结束。对于外层循环自变量i的每一个值,内层循环的自变量i每次从i开始,每次循环后增l,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打印一=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。17、以下叙述正确的是A、C语言程序是由过程和函数组成的B、C语言函数可以嵌套调用,例如:fun(fun(x))C、C语言函数不可以单独编译D、C语言中除了main函数,其他函数不可作为单独文件形式存在标准答案:B知识点解析:在C语言中,允许函数的嵌套调用,即递归调用。在C语言中不存在过程的概念,在C语言中函数允许单独编译,可以作为单独的文件形式存在。18、负责数据库中查询操作的数据库语言是A、数据定义语言B、数据管理语言C、数据操纵语言D、数据控制语言标准答案:C知识点解析:负责数据库中查询操作的数据库语言是数据操纵语言。19、在下列关系运算中,不改变关系表中的属性个数但能减少元组个数的是A、并B、交C、投影D、笛卡儿乘积标准答案:B知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S。形式定义如下:R∩s≡{t∈R∧t∈S}=R-(R-S)。所以不改变关系表中的属性个数,但能减少元组个数的是关系表之间的交操作。20、以下合法的字符型常量是A、’\x13’B、’\081’C、’65’D、’/n’标准答案:A知识点解析:本题考查字符型常量。选项A)正确,使用了转义字符“\”,x13表示16进制的13;选项B)同样使用了转义字符,但081错误,以0开始表示8进制,8进制数字的范围是0-7,没有8:选项C)错误,65是一个字符串,不是字符;选项D)错误,换行符是“\n”。21、下面描述错误的是A、模块的独立性与模块的信息隐蔽和局部化无关B、内聚性和耦合性是模块独立程度的定性度量标准C、一个模块的内聚性越高则该模块的独立性越强D、一个模块的耦合性越高则该模块的独立性越弱标准答案:A知识点解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其它模块的联系最少且接口简单。一般较优秀的软件设计,应尽量做到高内聚,低偶合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。所以选项A正确。22、以下选项中,合法的一组C语言数值常量是A、12.0Xa234.5e0B、028.5e-3-0xfC、.1774e1.50abcD、0x8A10,0003.e5标准答案:A知识点解析:八进制数其开头必须是数字“0”,其数字包括0~7,而在选项B中,028是错误的。浮点数据的指数形式表示常量中,C语言规定字母e或E之前必须要有数字,且e或E之后的指数必须为整数,而选项C中4e1.5是错误的。在选项D中,整型数据lO,000的表示形式是错误的。23、关于结构体类型的叙述中正确的是()。A、结构体类型中各个成分的类型必须是一致的B、在定义结构体类型时,编译程序就为它分配了内存空间C、结构体类型中的成分只能是C语言中预先定义的基本数据类型D、一个结构体类型可以由多个称为成员(或域)的成分组成标准答案:D知识点解析:C语言中的结构体类型,它是由若干“成员”组成,每一个成员可以是一个基本数据类型或者是一个构造类型。在说明和使用之前先定义它,也就是构造它。24、有以下程序#includevoidmain(){chars[]="012xy\08s34f4w2";inti,n=0;for(i=0;s[i]!=0:i++)if(s[i]>=’n’0&&s[i]<=’9’)n++;printf("%d\n",n);}程序运行后的输出结果是A、0B、7C、3D、8标准答案:C知识点解析:在主函数中的for循环语句中,当s[i]的值不等于0~9之间的数字时,结束循环语句的执行。由字符数组s的初值可以得到for循环语句执行了三次,所以变量n的值等于3。25、在数据库系统中,数据模型包括概念模型、逻辑模型和A、物理模型B、空间模型C、时间模型D、以上三个均包含标准答案:A知识点解析:数据模型按照不同的应用层次分为以下3种类型,概念模型着重于对客观世界中复杂事物的描述及对它们内在联系的刻画;逻辑模型,是面向数据库系统的模型,着重于在数据库系统一级的实现;物理模型,是面向计算机物理实现的模型,此模型给出了数据模型在计算机上物理结构的表示。故选项A正确。26、若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++)printf("*****\n");下面关于语句执行情况的叙述中正确的是A、循环体执行两次B、循环体执行一次C、循环体一次也不能执行D、构成无限循环标准答案:D知识点解析:本题考查for循环。本题的for循环初始条件为i=0,k=-1;循环结束条件为k=1永远为真(k不为0),因此循环不能结束。27、设变量己正确定义,则以下能正确计算f=n!的程序段是A、f=0;for(i=1;i<=n;i++)f*=i;B、f=1;for(i=1;i<n;i++)f*=i;C、f=1;for(i=n;i>1;i++)f*=i;D、f=1;for(i=n;i>=2;i--)f*=i;标准答案:D知识点解析:本题主要考查for循环的使用。题目要求计算阶乘n!,通过for循环来实现,循环变量i可以从1到n(包括n)或者从n到1,在循环体内做累乘。选项A中,累乘变量的初值为0,最终计算结果也为0;选项B中循环次数为n-1次,累乘结果少乘了n;选项C是死循环;选项D正确。28、有下列程序:voidf(int*q)main(){inti=0;{inta[5]={1,2,3,4,5},i;for(;i<5;i++)(*q)++;)f(a);for(i=0;i<5;i++)print("%d,",a[i]);}程序运行后的输出结果是A、2,2,3,4,5,B、6,2,3,4,5,C、i,2,3,4,5,D、2,3,4,5,6,标准答案:B知识点解析:voidf(int*q)函数的功能是对(*q)的值连续5次自加1。在main()函数中f(a)语句把一维数组a[5]的首地址作为实参,传递给函数f(int*q)的形参q,然后在函数f(int*q)内,a[0]连续5次自加1后,a[0]的值就变成6。所以输出为6,2,3,4,5。29、有以下程序main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2:elsed=3;printf("%d,%d,%d,%d\n",a,b,c,d);}程序输出A、0,0,0,3B、1,1,2,0C、编译有错D、0,1,2,0标准答案:C知识点解析:if语句的格式为:ifr表达式)语句1else语句2if和else是C语言的关键字。“语句1”称为if子句,“语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句。因此题目“if(a=1)b=1;c=2;elsed=3;”,if分支有两条语句,没构成复合语句。30、下面关于“EOF”的叙述,正确的是A、EOF的值等于0B、文本文件和二进制文件都可以用EOF作为文件结束标志C、EOF是在库函数文件中定义的符号常量D、对于文本文件,龟etc函数读入最后一个字符时,返回值是EOF标准答案:C知识点解析:EOF是在stdio.h库函数文件中定义的符号常量,其值等于-1。EOF用作文件结束标志,在二进制或者文本文件内部有一个位置指针,用以指示文件内部的当前读写位置。使用fgetc函数,每读写一次,该指针均向后移动,31、以下叙述中正确的是A、使用typedef说明新类型名时,其格式是:typedef新类型名原类型名:B、使用typedef说明新类型名时,后面不能加分号C、在程序中,允许用typedef来说明一种新的类型名D、在使用typedef改变原类型的名称后,只能使用新的类型名标准答案:C知识点解析:C语言允许用typedef说明一种新类型名。定义形式:typedef类型名标识符;其中“类型名”必须是在此语句之前已定义的类型标识符;“标识符”是一个用户定义标识符,用作新的类型名;typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。32、若有以下程序main(){intc;c=10^5;printf(’’%dkn’’,c);)则程序的输出结果是A、15B、10000C、5D、105标准答案:A知识点解析:按位异或(^)的运算规则是:参与运算的两个运算数中相对应的二进制位上,若数相同,则该位的结果为0;若数不同,该位的结果为1。整数10和5的二进制编码分别为1010和0101,异或结果为1111,其十进制数据位15。33、由以下while构成的循环,循环体执行的次数是intk=0;while(k=1)k++;A、一次也不执行B、执行一次C、无限次D、有语法错,不能执行标准答案:C知识点解析:循环条件表达式为赋值表达式k=1,因此循环执行无限次。34、以下能正确定义二维数组是A、inta[][3];B、inta[][3]={2*3};C、inta[][3]={};D、inta[2][3]={{1},{2},{3,4});标准答案:B知识点解析:C语言中定义二维数组,必须指定二维数组每一维的大小。选项A)没有指定数组a行的大小,错误;选项B),虽然没有指定行大小,但是可以通过大括号里面的元素个数计算出行的大小为l,因此是正确的:选项C)同样没有指定行的大小,也不能通过元素个数计算行的个数,错误:选项D)定义的是二行三列数组,但是后面数据是三行,超出范围,所以错。35、有以下程序#include<stdio.h>#include<string.h>voidmain(){charstr[][20]={"One*World","One*Dream?"},*p=str[1];printf("%d,",strlen(p));printf("%s\n",p);}程序运行后的输出结果是A、9,One*Dream!B、10,One*Dream!C、9,One*WorldD、10,One*World标准答案:B知识点解析:在主函数中定义了二维字符数组str,并对它赋初值。定义字符指针p,并把字符串str[1]的地址赋给它。所以这时字符指针p指向字符串“One*Dream!”,然后在两个输出语句中,分别输出这个字符串的长度10和字符串本身。36、有以下程序#include<stdio.h>intf(intn);main(){inta=3,s;intf(intn){staticinta=1;s=f(a);n+=a++:s=s+f(a);returnn;printf("%d\n",s);}}程序运行后的输出结果是A、9B、8C、7D、10标准答案:A知识点解析:在主函数中第一次调用f(a)时,得到变量s的值等于4,在第二次调用f(a)时,在子函数f中由于变量a是一个局部静态变量,所以这次其值等于2,因而在主函数中第二次调用f(a)后,其返回值等于5,最后变量s的值等于9。37、若有语句:char*line[5];,以下叙述中正确的是A、定义line是一个数组,每个数组元素是一个基类型为char的指针变量B、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C、定义line是一个指针数组,语句中的*号称为间址运算符D、定义line是一个指向字符型函数的指针标准答案:A知识点解析:本题考查指针数组的定义。本题中line是一个指针数组,有5个元素,每个元素都是一个指针变量。38、若有以下程序#includechar*a="you",b[]="welcome#you#to#China!";main(){inti,j=0;char*p;for(i=0;b[i]!=’\0’;i++){if(*a==b[i]){p=&b[i];for(j=0;a[j]!=’\0’;j++){if(a[j]!=*p)break;p++;}if(a[j]==’\0’)break;}}printf("%s\n",p);}则程序的输出结果是()。A、#to#China!B、#you#to#China!C、me#you#to#China!D、#China!标准答案:A知识点解析:该段代码的作用是查找字符串b中包含和a指向的字符串相同的字符串的位置,并用指针p记录匹配字符串结束后下一个字符的地址,即是第二个’#’字符的下标,所以输出字符串的结果为选项A)。39、有以下程序#includemain(){chara[5][10]={"one","two","three","four","five"};inti,j;chart;for(i=0;i<2;i++)for(j=i+1;j<5;j++)if(a[i][0]>a[j][0]){t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}puts(a[1]);}程序运行后的输出结果是A、owoB、fwoC、twoD、fix标准答案:B知识点解析:考查二维数组元素的引用。当i为0时,代码处理结果为第一个字符串的第一个字符与第四个字符串的第一个字符调换,当i为1时,代码处理结果为第而个字符串的第一个字符与第五个字符串的第一个字符调换,所以a[1]为fwo。40、有以下程序#includemain(){intk=5;while(--k)printf("%d",k-=3);printf("\n");}执行后的输出结果是A、1B、2C、4D、死循环标准答案:A知识点解析:--k先自减在使用,所以第一次判断条件即为while(4),条件为真执行打印k的值k=4-3,结果为1,第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。所以选择A选项。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、下列选项中,不能用作标识符的是A、_1234B、_1_2C、jnt_2_D、2_int_标准答案:D知识点解析:C语言中标识符必须以字母或者下划线开始,选项D中是以数字开始的不能作为标识符。2、设有定义:longx=745321L,则能正确输出变量x的语句是()。A、printf("x=%d\n",x);B、printf("x=%LD\n",x);C、printf("x=%d1\n",x);D、printf("x=%1d\n",x);标准答案:D知识点解析:本题考查C语言中长整型数据的输出。在题中格式控制符只有采用格式字符%1d,且必须是小写字母d,才能表示输出长整型数据x。3、软件生命周期是指()。A、软件的运行和维护B、软件的需求分析、设计与实现C、软件的实现和维护D、软件产品从提出、实现、使用维护到停止使用退役的过程标准答案:D知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。4、带链的栈与顺序存储的栈相比,其优点是A、入栈与退栈操作方便B、可以省略栈底指针C、入栈操作时不会受栈存储空间的限制而发生溢出D、所占存储空间相同标准答案:C知识点解析:带链的栈与顺序存储的栈相比优点是不受连续存储空间大小的限制,即不需考虑栈满的问题,故选项C正确。5、以下不合法的数值常量是()。A、8.0E0.5B、1e1C、011D、0xabcd标准答案:A知识点解析:A选项中E后面的指数必须为整型数据,所以错误。C选项中011表示的是八进制常量,0xabcd表示的是十六进制常量。6、表达式(int)((double)9/2)-9%2的值是()。A、0B、3C、4D、5标准答案:B知识点解析:先将整型数据9强制转换成double型,然后除以2,得到的结果与double型保持一致,即为4.5,然后将4.5强制转换成整型数据4,然后计算9%2的值为1,最后计算4-1的值为3,所以选择B选项。7、有以下程序main(){inta=0,b=0,c=0,d=0;if(a=1)b=1;c=2:elsed=3:printf(’’%d,%d,%d,%d\n’’,a,b,C,d);)程序输出A、0,0,0,3B、1,1,2,0C、编译有错D、0,1,2,0标准答案:C知识点解析:if语句的格式为:if(表达式)语句1else语句2if和else是C语言的关键字。”语句1”称为if子句,”语句2”称为else子句,这些子句只允许为一条语句,若需要多条语句时,则应该使用复合语句。因此题目if(a=1)b=1;c=2;elsed=3;if分支有两条语句,没构成复合语句。8、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。A、1B、0C、2D、不知道a的值,不能确定标准答案:A知识点解析:逻辑或“||”要求只要两边的运算对象有一个非零,结果就为真。虽然不知道a的值,但是若a为1,则左边运算对象为1;若a的值不是1,则右边运算对象的值为1,所以总能保证一边非零。9、有以下程序:#i13clude<stdio.h>main(){inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A、852B、963C、741D、875421标准答案:A知识点解析:第1次for循环,y的值为9,y%3的值为0,满足条件打印--y,即先减一后打印,所以打印8;第2次for循环,y的值为7,y%3的值为l,不执行打印语句;第3次for循环,y的值为6,y%3的值为0,满足条件打印--y,即先减一后打印,所以打印5;第4次for循环,y的值为4,不满足if条件,不执行打印语句;第5次for循环,y的值为3,满足if条件,打印输出2;第6次for循环,y的值为1,不满足条件,不执行打印语句。10、有定义语句:char*s1=’’OK’’,*s2=’’ok’’;以下选项中,能够输出’’K’’的语句是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所指的语句。11、有以下程序#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。12、在C语言中,函数返回值的类型最终取决于A、函数定义时在函数首部所说明的函数类型B、return语句中表达式值的类型C、调用函数时主调函数所传递的实参类型D、函数定义时形参的类型标准答案:A知识点解析:C语言中函数的返回值类型是由定义函数时在函数首部所声明的类型确定的。13、若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。A、1B、0C、2D、不知道a的值,不能确定标准答案:A知识点解析:逻辑表达式的值只有0或者1,逻辑或运算符"||"两侧的运算对象只要有一个为真,该逻辑表达式的值就为真。在题中的逻辑表达式中,判定的是a==1和a!=1相或的值,易得知该逻辑表达式的值为真,即1,答案选A。14、表示关系式x≤y≤z的C语言表达式的是A、(x<=y)‖(y<=z)B、(x<=y<=z)C、(x<=y)&&(y<=z)D、(x<=y)!(y<=z)标准答案:C知识点解析:表示三个变量的关系,要利用逻辑表达式,用逻辑与连接。15、若有以下程序,则程序的输出结果是#include<stdio.h>main(){charc1,c2;c1=’C’+’8’-’3’;c2=’9’-’0’;printf("%c%dha",c1,c2);}A、H9B、H’9’C、F’9’D、表达式不合法输出无定值标准答案:A知识点解析:字符常量允许进行简单的算术运算,则’C’+5表示H,而’9’-’0’则表示数值9。16、若、x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是A、abs(x-y)<10B、x-y>-10&x-y<10C、!(x-y)<-10||!(y-x)>10D、(x-y)*(x-y)<100标准答案:C知识点解析:数学关系|x-y|<10表示x和y的差的绝对值小于10,选项A)使用了abs求绝对值函数,满足要求;选项B)是x和y的差值在.10和10之间,满足要求;选项C)是x和y的差值大于-10或者y和x的差值小于10,不满足要。17、若有以下程序,编译时出现错误,你认为出错的是#includemain(){inta=0,b=0,c=0,d;c=(a+=b,b+=a);/*第4行*/d=c;;/*第5行*/;/*第6行*/printf("%d,%d,%d\n",a,b,c);/*第7行*/}A、第4行B、第5行C、第6行D、第7行标准答案:A知识点解析:第4行出错,在第4行括号中两个逗号不可以为空。单独的分号为C语言的空语句,是编译程序可以识别并且编译的,因此第5、6行都是正确的。18、有以下程序#incltadeintfun(chars[])main(){intn=0;{chars[10]={’6’,’1’,’*’,’4’,’*’,’9’,’*’,’0’,’*’};while(*s<=’n’9&&*s>=’n’0)printf("%d\n",fun(s));{n=10*n+*s-’0’;s++;}}return(n);}程序的运行结果是A、61490B、61C、9D、5标准答案:B知识点解析:在fun函数中,while循环的功能是逐个取字符数组s的字符判断其是否是数字。若是则将这些数字组成一个数保存到变量n中,并返回变量n的值。所以在主函数中调用fun(s)时,将把字符数组s中的数字组成一个数输出。因为当指针s指向数组的第3位时,即字符’*’,循环条件不成立,循环结束,返回n的值。所以输出n的值为61。19、有以下程序structS{intn;inta[20];);voidf(structS*p){inti,j,t;for(i=0;i<p->n-1;i++)for(j=i+1.j<p->n.j++)if(p->a[i]>p->a[j]){t=P->a[i];p->a[i]=p->a[j];p->a[j]=t;}}main(){inti;structSs={10,{2,3,l,6,8,7,5,4,10,9));f(&s);for(i=0;i<s-n;i++)printf(’’%d,’’,s.a[i]);}A、10,9,8,7,6,5,4,3,2,1,B、2,3,1,6,8,7,5,4,10,9,C、10,9,8,7,6,1,2,3,4,5,D、l,2,3,4,5,6,7,8,9,10标准答案:D知识点解析:voidf(structS*p)函数的功能使用了结构体指针变量实现对一维数组的元素从小到火排序。用关系表达式p->a[i]>p->a[j]实现一维数组中相邻元素两两比较,大的元素向后移,小的元素向前移。在主函数中语句f(&s);的功能实现对结构体变量s中一维数组的元素从小到大的排序,所以循环语句的输出结果为1,2,3,4,5,6,7,8,9,10。20、若k是int类型变量,且有以下for语句1for(k=-1;k<0;k++)printf("****\n");下面关于语句执行情况的叙述中正确的是A、循环体执行两次B、循环体执行一次C、循环体一次也不执行D、构成无限循环标准答案:B知识点解析:本题考查for循环的使用。在程序中,for循环的初始值k=-1,循环结束条件是k<0,每次循环k增加1,第一次进入循环的时候k为-1,k小于0,执行打印,然后k的值变成0,下次进入循环k不小于0,循环结束,因此循环只能执行一次。21、以下程序段完全正确的是A、intk,*p=&k;scanf("%d",p);B、int*p;scanf("%d",p);C、int*p;scanf("%d",&p);D、intk,*p;*p=&k;scanf("%d",p);标准答案:A知识点解析:选项B没有对指针进行初始化,无效指针。选项C错在没有对指针进行初始化,无效指针,并且在scanf("%d",&p)中无需再进行取地址操作。选项D,语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。22、若有以下说明和语句intc[4][5],(*p)[5];能够正确引用c数组元素的是A、p+1B、*(p+3)C、*(p+1)+3D、*(p[0]+2)标准答案:D知识点解析:本题考查数组和指针,在本题中c是二维数组,指针p指向二维数组c,p其实是指向c数组的第一行。因此选项A中p+1指向c数组的第二行;选项B中,p+3表示p指向c数组的第三行,因此*(p+3)表示取出c数组第三行首元素的地址:选项C和选项B类似,表示取出数组c第二行首元素地址然后加3;选项D中p[0]+2表示数组第一行第三列元素的地址,因此*(p[0]+2)是取出该元素的值。23、设有定义charstr[]="Hello";则语句printf("%d%d",sizeof(str),strlen(str));的输出结果是A、66B、65C、55D、56标准答案:B知识点解析:sizeof主要用于测试变量所占的实际内存,而strlen函数主要测试字符串中实际字符的个数,字符串"Hello"占有内存6个字节,而字符串中共有5个字符。24、以下叙述中正确的是A、int*p1;int**p2;int*p3;都是合法的定义指针变量的语句B、指针变量只能通过求地址运算符(&)来获得地址值C、语句p=NULL;与p=\0;是等价的语句D、语句p=NULL;执行后,指针p指向地址为0的存储单元标准答案:A知识点解析:B选项描述不正确,指针变量可以通过求地址运算符(&)来获得地址值,可以通过指针变量获得地址值,还可以通过标准函数获得地址值;C选项中,p=NULL;和p=0;或p=’\0’;等价;D选项中,语句p=NULL;执行后,指针p并不是指向地址为0的存储单元,而是具有一个确定的值-"空"。因此A选项正确。25、设p是指针变量,语句p=NULL;等价于A、p=’0’;B、p=’’;C、p="";D、p=0;标准答案:D知识点解析:p=NULL;等价p=0;因此D选项正确。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、算法的效率只与问题的规模有关,而与数据的存储结构无关B、算法的时间复杂度是指执行算法所需要的计算工作量C、数据的逻辑结构与存储结构是一一对应的D、算法的时间复杂度与空间复杂度一定相关标准答案:B知识点解析:算法的时间复杂度是指执行算法所需要的计算工作量。算法的工作量用算法所执行的基本运算的次数来度量,而算法所执行的基本运算次数是问题规模的函数:算法的空间复杂度一般是指执行这个算法所需要的内存空间。算法的时间复杂度与空间复杂度并不相关。数据的逻辑结构就是数据元素之间的逻辑关系,它是从逻辑上描述数据元素之间的关系,是独立于计算机的;数据的存储结构是研究数据元素和数据元素之间的关系如何在计算机中表示,它们并非一一对应。算法的执行效率不仅与问题的规模有关,还与数据的存储结构有关。2、有以下程序:#includemain(){printf(“%d\n”,NULL);}程序运行后的输出结果是()。A、1B、变量无定义,输出不确定C、一1D、0标准答案:D知识点解析:NULL为一个符号常量,对应的ASCⅡ码值为0,答案选D。3、有以下程序:#includemain(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;prinff(“%c\n”,a);}程序运行后的输出结果是()。A、hB、HC、AD、a标准答案:A知识点解析:考查条件运算符。条件表达式的形式为:表达式1?表达式2:表达式3,计算“表达式1”的值,若为“真”,取“表达式2”的值作为整个条件表达式的值;若为“假”,取“表达式3”的值作为整个条件表达式的值。字符参与运算时一般计算其ASCⅡ码,并且一个字母的小写一大写=32(ASCⅡ码),该程序将大写字母转成对应的小写字母,答案选A。4、有以下程序:#includevoidmain(){chara,b,C,d;scanf(“%c%c”,&a,&b);c=getchar();d=getchar();prinff(“%c%c%c%c\n”,a,b,c,d);}当执行程序时,按下列方式输入数据(从第一列开始,代表回车,注意:回车是一个字符):1234则输出结果是()。A、1234B、12C、123D、1234标准答案:C知识点解析:scanf()函数的一般调用形式为:scanf(格式控制,输入地址列表)。其中,格式控制是用双引号括起来的字符串,包括格式字符和普通字符,格式是是由“%”和格式字符组成。getchar()函数的功能是从标准输入设备上读入一个字符。根据程序中的格式控制可知,接收输入时分别把1赋给了a,2赋给了b,然后getchar()函数提取一个换行符赋给c,再提取一个字符3赋给d。所以程序的输出结果为:123。5、一个栈的初始状态为空。现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是A、12345ABCDEB、EDCBA54321C、ABCDE12345D、54321EDCBA标准答案:B知识点解析:栈是按照“先进后出”或“后进先出”的原则组织数据的。所以出栈顺序是EDCBA54321。6、有以下程序:#includemain(){intk=一17:prinff(“%d,%0,%x\n”,k,1一k,1一k);}程序的运行结果是()。A、一17,22,12B、一17,12,22C、一17,一22,一12D、17,22,12标准答案:A知识点解析:整型常量有3种表示方法,分别是十进制数表示法、八进制数表示法和十六进制数表示法。十进制整常量没有前缀,输出格式控制符为%d;八进制整常量以0作为前缀,输出格式控制符为%0;十六进制整常量以0X或0x作为前缀,输出格式控制符为%x。1一k=18,整型常量18用八进制表示为22,十六进制表示为12,故A选项正确。7、下面选项中不是关系数据库基本特征的是()。A、不同的列应有不同的列名B、不同的列应有不同的数据类型C、与行的次序无关D、与列的次序无关标准答案:B知识点解析:关系数据库中的二维表一般满足7个性质:①元组(行)个数是有限的——元组个数有限性。②元组(行)均不相同——元组的唯一性。③元组(行)的次序可以任意交换——元组的次序无关性。④元组(行)的分量是不可分割的基本特征——元组分量的原子性。⑤属性(列)名各不相同——属性名唯一性。⑥属性(列)与次序无关,可以任意交换——属性的次序无关性。⑦属性(列)的分量具有与该属性相同的值域——分量值域的统一性。8、对长度为n的线性表作快速排序,在最坏情况下,比较次数为()。A、nB、n—1C、n(n—1)D、n(n—1)/2标准答案:D知识点解析:快速排序最坏情况就是每次选的基准数都和其他数做过比较,共需比较(n—1)+(n—2)+…+1=n(n—1)/2,故D项正确。9、度为3的一棵树共有30个结点,其中度为3、1的结点个数分别为3、4。则该树中的叶子结点数为A、14B、15C、16D、不可能有这样的树标准答案:B知识点解析:根据题目可知本树中还有度为2的结点。树的总结点=(度1*个数+度2*个数…)+1,这里我们设度为2的结点数为x,那么30=3*3+2*x+1*4+1=2*x+14,由此可计算出x=8。树的叶子结点数等于总结点减去所有度不为0的结点,也就是30-3-8-4=15。10、有三个关系R、S和T如下。则由关系R和S得到关系T的操作是A、自然连接B、差C、交D、并标准答案:B知识点解析:由三个关系R、S和T的结构可以知道,关系T是由关系R、S经过差运算得到的。11、若有以下程序#includemain(){inta=1,b=2,c=3,d=4,r=0;if(a!=1);elser=1;if(b==2)r+=2;else;if(c!=3)r+=3;else;if(d==4)r+=4;printf("%d\n",r);}则程序的输出结果是A、10B、6C、7D、3标准答案:C知识点解析:程序代码中有四条并列的if语句,第一条if表达式a!=1不成立,执行else分支,r=1;第二条if表达式b==2成立,执行r+=2,r=3:第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。12、在满足实体完整性约束的条件下A、一个关系中应该有一个或多个候选关键字B、一个关系中只能有一个候选关键字C、一个关系中必须有多个候选关键字D、一个关系中可以没有候选关键字标准答案:A知识点解析:在关系数据库中,实体完整性的概念是主属性不能为空。在满足实体完整性的前提下,必须在关系中存在主属性,也就是在关系中应该有候选关键字。一个关系中可以有一个或者多个候选关键字。13、以下程序的输出结果是()。#includemain(){inti,j,m=1;for(i=1;i<3;i++){for(j=3;j>0;j--){if(i*j>3)break;m*=i*j;}}printf(’’m=%d\n’’,m);}A、m=3B、m=4C、m=5D、m=6标准答案:D知识点解析:本道题考查了for循环的嵌套应用。对于外层for循环来说,变量i从1增到2,循环执行2次。当变量i的值等于1时,对于内层for循环来说,变量j从3减到1,求得变量m的值等于6。当变量i的值等于2时,第一遍执行内层for循环,变量j的值等于3,那么m的值等于6,其值大于3,这时执行break语句,退出内层for循环的执行。14、计算机能直接执行的程序是A、源程序B、目标程序C、汇编程序D、可执行程序标准答案:D知识点解析:计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe。所以选择D选项。15、可在C程序中用作用户标识符的一组标识符是A、and_2007B、Datey-m-dC、HiDr.TomD、caseBigl标准答案:A知识点解析:本题考查用户标识符,C语言中,用户标识符只能由字母、下划线和数组组成,且必须以字母或者下划线开始。选项A)正确:选项B)中使用了字符“-”:选项C)使用了字符“.”:选项D)中的case是C语言关键字,不能作为用户标识符。16、以下不能输出字符A的语句是(注:字符A的ASCII码值为65,字符a的ASCII吗值为97)A、printf(t"%c\n",’a’-32)B、printf("%d\n",’A’);C、printf("%c\n",65);D、printf("%c\n",’B’-1);标准答案:B知识点解析:在选项B)的输出函数中,大写字符’A’以整型数据的形式输出。17、有以下程序#includemain(){inta1,a2;charc1,c2;scanf("%d%c%d%c",&a1,&c1,&a2,&c2);printf("%d,%c,%d,%c",a1,c1,a2,c2);}若想通过键盘输入,使得a1的值为12,a2的值为34,c1的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是(以下口代表空格,代表回车)A、12口a口34口bB、12,a,34.bC、12a34bD、12口a34口b标准答案:C知识点解析:本题考查scanf语句。scanf()函数是格式化输入函数,它从标准输入设备(键盘)读取输入的信息。其调用格式为:scanf("<格式化字符串>",<地址表>)格式化字符串包括以下3类不同的字符。①格式化说明符:格式化说明符与前面用的printf()函数中的格式说明符基本相同。②空白字符:空白字符会使scanfi()函数在读操作中略去输入中的一个或多个空白字符。③非空白字符:一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。由于在scanf函数中,几个变量之间没有任何间隔,所以输入的时候,也同样不应该有间隔。18、以下叙述中错误的是A、gets函数用于从终端读入字符串B、getchar函数用于从磁盘文件读入字符C、fputs函数用于把字符串输出到文件D、fwfite函数用于以二进制形式输出数据到文件标准答案:B知识点解析:本题考查的是输入输出函数的使用,gcts和getchar函数用十从标准输入设备终端读入字符串和字符,并非从磁盘文件读入,fputs用于把字符串输出剑文件,fwritc用于以二进制形式输出数据到文件。19、设有以下函数:voidfun(intn,char*s){……)则下面对函数指针的定义和赋值均正确的是A、void*Pf();pf=fun;B、void(*pf)(int,char*);pf=fun;C、void*Pf();*pf=fun;D、void(*pf)(int,char);pf=&fun;标准答案:B知识点解析:函数指针的定义形式是:数据类型标识符(*指针变量名)():void(*pf)()定义了一个没有返回值的函数指针pf,在给函数指针变量赋值时,只需给出函数名而不必给出参数。所以给pf给赋值时,把函数名fun赋给pf即可。20、有以下程序charfun(char*c){if(*c<=’Z’&&*c>=’A’)*c-=’A’-’a’:return*c;}main(){chars[81],*p=s;gets(s);while(*P){*P=fun(p);putchar(*P);p++;)printf("\n");}若运行时从键盘上输入OPENTHEDOOR,程序的输出结果是A、oPENtHEdOORB、openthedoorC、OPENTHEDOORD、OpenTheDoor标准答案:B知识点解析:函数fun的主要功能是判断字符是否为大写字符,如果是则转换为小写字符,主函数读入大写字符串,转换成小写。21、有以下程序#includeintf(intm){staticintn=0;n+=m;returnn;}main(){intn=0;printf("%d,",f(++n));printf("%d\n",f(n++));}程序运行后的输出结果是()。A、1,2B、1,1C、2,3D、3,3标准答案:A知识点解析:静态变量是在编译时就被分配存储空间,所占用存储单元直到程序结束时才释放,其初始化只进行一次。函数f()的功能是用n累加所有调用该函数时传入的m的值,所以第一次调用函数f(++n),传入的参数为1,返回的值为1;第二次调用函数f(n++),传入的参数仍为1,返回时n在原先的基础上继续累加1,返回值为2,所以输出结果为选项A)。22、有以下程序#includemain(){chara=4;printf("%d\n",a=a<<1);}A、8B、16C、40D、4标准答案:A知识点解析:本题主要考查按位右移运算。a=4的二进制为00000100,a<<1后为00001000,其值为十进制数值8。23、有以下程序voidfun(intn,int*s){intf;if(n==1)*s=n+1;else{fun(n-1,&f);*s=f;))main(){intx=0;fun(4,&x);printf("%d\n",x);}程序运行后的输出结果是A、1B、3C、4D、2标准答案:D知识点解析:函数fun为递归调用函数,如果n的值为1,那么后面形参指向的空间存放n+1,否则继续计算fun(n-1)的值。调用分析过程如下:fun(4,&x)-→fun(3,&x)-→fun(2,&x)-→fun(1,&x)在回归的过程中,对于x内的数据并没有改动。24、有以下程序#includemain(){chars[]={"012xy"};inti,n=0;for(i=0;s[i]!=0;i++)if(s[i]>=’a’&&s[i]<=’z’)n++;printf("%d\n",n);}程序运行后的输出结果是A、0B、2C、3D、5标准答案:B知识点解析:程序首先给字符数组s[]赋值为"012xy",for循环语句的功能是遍历字符串,通过if条件语句对字符串中的小写字母计数,在符串中小写字母为2个,即n=2。因此B选项正确。25、有以下程序#include<stdio.h>voidmain(){char*s="\ta\018bc";for(;*s!=’\0’;s++)printf("*");printf(”\n”);}程序运行后的输出结果是()。A、******B、*********C、*****D、*******标准答案:A知识点解析:main函数中定义一个字符指针s,指向字符串“\ta\018bc”。f0r循环遍历s指向的字符串中的字符,然后输出“*”。根据题意可以理解为s指向的字符串中有多少个字符,就输出多少个“*”。s指向的字符串中字符分别是\t(转义字符)、a、\01(转义字符)、8、b、c,总共6个。故本题答案为A选项。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。A、15B、16C、20D、0或35标准答案:D知识点解析:front=rear,说明队列为满或者为空,所以答案选择D。2、以下选项中能表示合法常量的是A、\007B、1.5E2.0C、’\’D、1,200标准答案:A知识点解析:选项D,1200中间不能有逗号,否则编译时会认为是1或山错。选项B,2.0错误,必须为整数。选项C,要表示字符斜杠常量’\’,应该在反斜杠的前面再加是一个反斜杠。选项A为字符书常量,为正确选项。3、有以下程序:#includeintf(intx){returnx*x+1:}voidmain(){inta,b=0;for(a=0;a<3;a++){b=b+f(a);putchar(‘A’+b);}printf(“\n”);}程序运行后的输出结果是()。A、ABEB、BDIC、BCFD、BCD标准答案:B知识点解析:第一次循环时,b=1,输出结果为B;第二次循环时,b=3,输出结果为D;第三次循环时,b=8,输出结果为I。4、下列选项中,能够满足“只要字符串s1等于字符串s2,则执行ST”要求的是A、if(s1==s2)ST;B、if(strcpy(s1,s2)==1)ST;C、if(strcmp(s2,s1)==0)ST;D、if(s1-s2==0)ST;标准答案:C知识点解析:在C语言中要对两个字符串的大小进行比较,就需要调用字符串比较函数strcmp(),如果这个函数的返回值等于0,说明两个字符串柑等。5、学校的每个社团都有一名团长,且一个同学可同时担任多个社团的团长,则实体团长和实体社团间的联系是A、一对多B、多对多C、多对一D、一对一标准答案:A知识点解析:一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。本题中,一个团长可以对应多个社团,一个社团只有一个团长,因此是一对多关系。6、下列叙述中正确的是()。A、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B、打开一个已存在的文件并进行写操作后,原有文件中的全部数据必定被覆盖C、在一个程序中对文件进行写操作后,必须先关闭该文件然后再打开才能读到第一个数据D、C语言中的文件是流式文件,因此只能顺序存取数据标准答案:A知识点解析:B选项中打开一个已存在的文件并进行写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C选项中在一个程序中对文件进行写操作后,不是先关闭该文件然后再打开才能读到第一个数据,用fseek()函数进行重新定位即可。D选项中,C语言中的文件可以进行随机读写。7、有以下程序#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。8、有以下程序#includemain(){inta=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);}程序运行后输出结果是A、0,2B、0,3C、1,3D、1,2标准答案:D知识点解析:本题重点考察while语句,变量a和b分别赋初值为-2和1,while语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句。a++即a参与运算后,a的值再自增1。++b即b自增1后再参与其它运算。当表达式的值为0时,退出循环,最后输出a和b的值为1和2。因此D选项正确。9、一个运动队有多个队员,一个队员仅属于一个运动队,一个队一般都有一个教练,则实体运动队和队员的联系是A、一对多B、一对一C、多对一D、多对多标准答案:A知识点解析:因为一个实体运动队有多个队员,一个队员仅属于一个运动队。所以实体运动队和队员的联系是一对多。选项A正确。10、有以下程序#includemain(){inta=7;while(a--);printf("%d\n",a);}程序运行后的输出结果是()。A、-1B、0C、1D、7标准答案:A知识点解析:考查while循环语句。while(a--);的循环条件是若a值不为0,则循环,每次判定循环条件的时候是选用a进行判定,然后a自减1,再执行循环体的空语句";",当a=0的时候,循环条件不满足,不再进行循环,a--后,a的值为-1,答案选A。11、有下列程序:voidf(int*q)main(){inti=0;{inta[5]={1,2,3,4,5},i;for(;i<5;i++)(*q)++;)f(a);for(i=0;i<5;i++)print("%d,",a[i]);}程序运行后的输出结果是A、2,2,3,4,5,B、6,2,3,4,5,C、i,2,3,4,5,D、2,3,4,5,6,标准答案:B知识点解析:voidf(int*q)函数的功能是对(*q)的值连续5次自加1。在main()函数中f(a)语句把一维数组a[5]的首地址作为实参,传递给函数f(int*q)的形参q,然后在函数f(int*q)内,a[0]连续5次自加1后,a[0]的值就变成6。所以输出为6,2,3,4,5。12、有以下程序段charname[20];intnum;scanf("name=%s"num=%dt",name,&num);当执行上述程序段,并从键盘输入:name=Lilinum=1001后,name的值为A、name=LiliB、Lilinum=C、name=Lilinum=1001D、Lili标准答案:D知识点解析:在题目中以字符串的形式给字符数组赋值,所以字符数组name的值为Lili。13、把以下四个表达式用作if语句的控制表达式时,有一个选项与其他三个选项含义不同,这个选项是A、k%2B、k%2==1C、(k%2)!=0D、!k%2==1标准答案:D知识点解析:本题考查if语句和if语句构成的选择。选项A)表示k除以2的余数,如果余数为1则if成立,否则不能成立,即if判断k是否为奇数;选项B)是判断k除以2的余数是否等于1,函数和选项A)相同;选项C)表示k除以2的余数不为0,和选项A)一致;选项D)中,!运算符优先级高于%预算符,先计算!k,然后再取余数,并判断余数是否等于1。14、若以下选项中变量全部为整型变量,且己正确定义并赋值,则语法正确的switch语句是A、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}B、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}C、switch(a+9){casec1:y=a-b;casec2:y=a+b;}D、switcha*b{case10:x=a+b;default:y=a-b;}标准答案:B知识点解析:本题考查switch的使用。选项A)中的case0和case4没有break语句:选项B)正确;选项C)中的case后面不是常量,错误;选项D)中switch后面没有括号。15、以下选项中有语法错误的是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)都是正确的。16、若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是A、形参只是形式上的存在,不占用具体存储单元B、函数的形参和实参分别占用不同的存储单元C、同名的实参和形参占同一存储单元D、函数的实参和其对应的形参共占同一存储单元标准答案:B知识点解析:在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。17、以下叙述中正确的是A、对于变量而言,“定义”和“说明”这两个词实际上是同一个意思B、在复合语句中不能定义变量C、全局变量的存储类别可以是静态类D、函数的形式参数不属于局部变量标准答案:C知识点解析:用static说明符说明全局变量时,此变量可称作静态全局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。存一个函数内部定义的变量(包括形参)是局部变量,它只存本函数范围内有效。不同函数中可以使用相同名字的局部变量,它们代表不同的对象,Ⅱ不影响。在函数内部复合语句中也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。18、若有定义语句:intyear=2009,*p=&year;以下不能使变量year中的值增至2010的语句是A、(*p)++;B、++(*p);C、*p++;D、*p+=1;标准答案:C知识点解析:由于自加运算符++的运算级高于间接运算*的运算级,所以选项A的表达式*p++不能使变量year中的值增至2010。19、若有定义语句:inta[3][6];,按在内存中的存放顺序,a数组的第10个元素是A、a[0][4]B、a[1][3]C、a[0][3]D、a[1][4]标准答案:B知识点解析:本题考查多维数组的定义和使用。a是一个二维数组,有3行6列,即每行6个元素,a的第lO个元素位于第二行的第四个位置,即a[1][3]。20、有以下程序:#include<stdio.h>voidfun(char*c){while(*c){if(*c>=’a’&&*c<=’z’)*c=*c-(’a’-’A’);c++;}}voidmain(){chars[81];gets(s);fun(s);puts(s);}当执行程序时从键盘上输入HelloBeijing<回车>,则程序的输出结果是A、HELLOBEIJINGB、HelloBeijingC、helloBeijingD、hELLOBeijing标准答案:A知识点解析:子函数fun的功能是把小写字母转换成大写字母,所以程序的输出结果为选项A)。21、有如下程序#includeintsum(int*array,intlen){if(len==0)returnarray[0];elsereturnarray[0]+sum(array+1,len-1);}main()

温馨提示

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

评论

0/150

提交评论