版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷27(共9套)(共255题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、以上三种说法都不对标准答案:D知识点解析:栈是先进后出的线性表,队列是先进先出的线性表,二者均为线性结构。2、以下选项中不属于C语言标识符的是A、用户标识符B、关键字C、常量D、预定义标识符标准答案:C知识点解析:C语言的标识符可分为以下3类:①关键字。C语言预先规定了一批标识符,它们在程序中都代表着固定的含义,不能另作他用。这些字符称为关键字。例如,int、dotlble、if、else、while、for等。②预定义标识符。即预先定义并具有特定含义的标识符。③用户标识符。由用户根据需要定义的标识符称为用户标识符,又称自定义标识符,一般用来给变量、函数、数组等命名。3、下列关于二叉树的叙述中,正确的是A、叶子结点总是比度为2的结点少一个B、叶子结点总是比度为2的结点多一个C、叶子结点数是度为2的结点数的两倍D、度为2的结点数是度为1的结点数的两倍标准答案:B知识点解析:由二叉树的性质可以知道在二叉树中叶子结点总是比度为2的结点多一个。4、执行以下程序段后,s的值为()。inta[]={1,2,3,4,5,6,7,8,9},s=0,k;for(k=0;k<8;k+=2)s+=*(a+k);prinff(“%d\n”,s);A、13B、16C、17D、45标准答案:B知识点解析:数组元素为:a[0]=1,a[1]=2…a[8]=9。k=0时,s=s+*(a+k)=0+1=1;k=2时,s=1+*(a+2)=l=3=4;k=4时,s=4+5=9;k=6时,s=9+7=16。5、以下正确的字符串常量是A、’abc’B、OlympicGamesC、""D、\\\标准答案:C知识点解析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反斜线开头后跟一个特定的字符,用来代表一个特定的ASCII字符。利用两个’\\’表示一个反斜杠,因此选项D)的表示无法确认表示几个反斜杠。6、建立表示学生选修课程活动的实体联系模型,其中的两个实体分别是()。A、学生和学号B、课程和课程号C、课程和成绩D、学生和课程标准答案:D知识点解析:实体是概念世界中的基本单位,是客观存在并可以相互区别的事物。要建立表示学生选修课程活动的实体联系模型,能互相区别并可以联系起来的实体是学生和课程。7、有以下程序:#include<stdio.h>charf(charx){returnx*x%10+′0′;}main(){chara;intb=0;for(a=0;a<5;a+=1){b=f(a);putchar(b);}}则程序的输出结果是()。A、014916B、01234C、01496D、00000标准答案:C知识点解析:该题目中x*x%10,即x和x相乘后,结果再对10求余操作。主函数中通过for语句使变量a从0到4进行取值,当a=0时,调用函数f后,返回值为0,赋给b,并且进行字符输出;当a=1时,返回值为1赋给b,并且进行字符输出;当a=2时,返回值为4赋给b,并且进行字符输出;当a=3时,返回值为9赋给b,并且进行字符输出;当a=4时,返回值为6赋给b,并且进行字符输出。故C选项正确。8、以下选项中,合法的一组C语言数值常量是()。A、12.0Xa234.5e0B、028.5e-3-0xfC、.1774e1.50abcD、0x8A10,0003.e5标准答案:A知识点解析:C语言中,八进制整型常量的开头数字是0,十六进制整型常量的开头数字是0x或0X。C语言中的实型常量有两种表示形式:小数形式,表示的实型常量必须要有小数点;指数形式,以e或E后跟一个整数来表示以10为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B选项中028错误,八进制中没有数字8。C选项中4e1.5中e后面的指数不是整数。D选项中10,000数字之间不能有逗号。9、下列描述中错误的是()。A、在数据库系统中,数据的物理结构必须与逻辑结构一致B、数据库技术的根本目标是要解决数据的共享问题C、数据库设计是指在已有数据库管理系统的基础上建立数据库D、数据库系统需要操作系统的支持标准答案:A知识点解析:在数据库系统中,物理独立性是指数据的物理结构(包括存储结构、存取方式等)的改变。如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。10、有以下程序main(){intx=1,y=0;if(!x)y++;elseif(x=0)if(x)y+=2;elsey+=3;printf("%dha",y);}程序运行后的输出结果是A、2B、0C、1D、3标准答案:B知识点解析:x=1,if和elseif的条件都不满足,故y值不改变输出。11、若在定义语句:inta,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是A、scanf(’’%d%d%dtt,a,b,c);B、scanf(’’%dt.,a,b,c);C、scanf(’’%d’’,p);D、scanf(’’%d’’,&p);标准答案:C知识点解析:程序语句inta,b,c,*p=&c;定义了三个整型变量a,b,c,和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为”scanf(“格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。12、有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf(’’a=%db=%dc=%d\n’’,a,b,c);程序的输出结果是A、a=10b=50c=30B、a=10b=30c=10C、a=10b=50c=10D、a=50b=30c=50标准答案:C知识点解析:本题的程序段首先定义三个整型变量a,b,c,并且其初始值分别等于10,50,30,然后判断a>b是否成立,如果条件成立,则把b的值赋给a,把c的值赋给b。由a和b的初始值可知,此条件表达式不成立,所以a和b的值保持不变。再执行下一条语句,把a的值赋给c,所以c的当前值等于10,最后由输出语句输出变量a,b,c的当前值,分别为10,50.10。13、以下关于retum语句的叙述中正确的是A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处标准答案:B知识点解析:return语句主要用于返回函数的值。在一个自定义函数中,可以根据不同的情况设置多条return语句返回函数的值。14、数据库设计过程不包括A、概念设计B、逻辑设计C、物理设计D、算法设计标准答案:D知识点解析:数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和物理设计。15、以下选项中,合法的一组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)中,整型数据10,000的表示形式是错误的。16、学校的每个社团都有一名团长,且一个同学可同时担任多个社团的团长,则实体团长和实体社团间的联系是A、一对多B、多对多C、多对一D、一对一标准答案:A知识点解析:一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。本题中,一个团长可以对应多个社团,一个社团只有一个团长,因此是一对多关系。17、以下叙述中正确的是A、整型常量和实型常量都是数值型常量B、常量的类型不能从字面形式上区分,需要根据类型名来决定C、预定义的标识符是C语言关键字的一种,不能另作它用D、只能在函数体内定义变量,其他地方不允许定义变量标准答案:A知识点解析:整型常量和文型常量都是数值型常量,选项A)正确;常量的类型可以从字面上区分,比如整型常量不能有小数点,组成字符为0~9等,选项B)错误;预定义标识符,即预先定义并具有特定含义的标识符,可以另作他用,不过更改了原有的含义,选项C)错误;变量可以定义在程序中任何的地方,属于不同的变量,选项D)错误。18、若变量x、y己正确定义并贼值,以下符合C语言语法的表达式是A、++x,y=x-B、x+1=yC、x=x+10=x+yD、double(x)/10标准答案:A知识点解析:用逗号将表达式连接起来的式子称为逗号表达式。其表达式的一般形式为:表达式1,表达式2,……,表达式n。最后一个表达式的值就是此逗号表达式的值。所以选项A)为C语言中的逗号表达式。赋值表达式的左侧只能是变量,不能是常量或表达式。强制类型转换表达式的形式为:(类型名)(表达式),其中(类型名)称为强制类型转换运算符,数据类型两边的圆括号不能省略。19、设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是A、++kB、k+=1C、k++D、k+1标准答案:C知识点解析:++k,先使得k的值自增1后再使用,k++是先取得k的值再将k的值自增1,所以C选项中表达式的值为0,而其他三个表达式的值均为1,所以选择C?20、若有以下程序main(){inta=-2,b=0;do{++b;}while(a++);printf("%d,%d\n",a,b);}则程序的输出结果是A、0,2B、1,2C、1,3D、2,3标准答案:C知识点解析:由于a的初始值等于-2,所以while循环语言执行三次结束,第一次a=-2,b=1,然后判断循环条件a++非零,执行第二次循环体a=-1,b=2,判断循环条件非零,执行循环体a=0,b=3,判断循环条件为0,此时变量a的值等于1。21、与数学表达式x≥y≥z对应的C语言表达式是A、(x>=y>=z)B、(x>=y)&&(y>=z)C、(x>=y)!(y>=z)D、(x>=y)||(y>=x)标准答案:B知识点解析:若要表示x大于等于y,同时y大于等于z,需要用逻辑与表达式连接。22、以下叙述中正确的是A、对于变量而言,“定义”和“说明”这两个词实际上是同一个意思B、在复合语句中不能定义变量C、全局变量的存储类别可以是静态类D、函数的形式参数不属于局部变量标准答案:C知识点解析:用static说明符说明全局变量时,此变量可称作静态全局变量。静态全局变量只限于本编译单位使用,不能被其他编译单位所引用。在一个函数内部定义的变量(包括形参)是局部变量,它只在本函数范围内有效。不同函数中可以使用相同名字的局部变量,它们代表不同的对象,互不影响。在函数内部复合语句中也可以定义变量,这些变量都是局部变量,只在本复合语句中有效。23、有以下程序段charname[20];intnum;scanf("name=%snum=%d",name,&num);当执行上述程序段,并从键盘输入:name=Lilinum=1001<回车>后,name的值为A、name=Lilinum=1001B、name=LiliC、Lilinum=D、Lili标准答案:D知识点解析:在输入格式控制"name=%snum=%d"中,普通字符"name=num="在输入时要原样输入,而格式控制符%s和%d对应各自的输入项,将输入的数据赋给相应的输入项。本题中输入"name=Lilinum=1001<回车>"后,将字符串Lili赋给字符数组name,整数1001赋给变量num。因此D选项正确。24、若有定义typedefint*T;Ta[10];则a的定义与下面哪个语句等价A、int(*a)[10];B、int*a[10];C、int*a;D、inta[10];标准答案:B知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,其中本题中int*用T来代替,所以定义Ta[10];就相当于是int*a[10];选项B正确。25、以下叙述中正确的是()。A、当对文件的读(写)操作完成之后,必须将它关闭,否则可能导致数据丢失B、打开一个已存在的文件并进行了写操作后,原有文件中的全部数据必定被覆盖C、在一个程序中当对文件进行了写操作后,必须先关闭该文件然后再打开,才能读到第1个数据D、C语言中的文件是流式文件,因此只能顺序存取数据标准答案:A知识点解析:B)选项中打开一个已存在的文件并进行了写操作后,原有文件中的全部数据不一定被覆盖,也可以对源文件进行追加操作等。C选项中在一个程序中当对文件进行了写操作后,不用先关闭该文件然后再打开,才能读到第1个数据,可以用fseek()函数进行重新定位即可。D选项中,C语言中的文件可以进行随机读写。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中正确的是A、程序必须包含所有三种基本结构才能成为一种算法B、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达C、只有简单算法才能在有限的操作步骤之后结束D、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令标准答案:D知识点解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基小结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。2、以下描述中,不是线性表顺序存储结构特征的是()。A、可随机访问B、需要连续的存储空间C、不便于插入和删除D、逻辑相邻的数据物理位置上不相邻标准答案:D知识点解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。3、下面描述中,不属于软件危机表现的是A、软件过程不规范B、软件开发生产率低C、软件质量难以控制D、软件成本不断提高标准答案:A知识点解析:软件危机主要表现在以下6个方面:①软件需求的增长得不到满足。②软件开发成本和进度无法控制。③软件质量难以保证。④软件不可维护或维护程度非常低。⑤软件的成本不断提高。⑥软件开发生产率的提高赶不上硬件的发展和应用需求的增长。4、在进行逻辑设计时,将E-R图中实体之间联系转换为关系数据库的()。A、元组B、关系C、属性D、属性的值域标准答案:B知识点解析:E-R模型与关系模型间的转换关系如下表所示。5、有以下程序main(){inta=-2,b=0;while(a++&&++b);printf(’’%d,%d\n’’,a,b);)程序运行后输出结果是A、0,3B、1,2C、1,3D、0,2标准答案:B知识点解析:循环体为空,共执行2次。第一次变量a初值为-2,b初值为0,表达式a++&&++b值为l,同时a的值为-1,b的值为1,第二次循环条件判断以后,a的值为0,b的值2,执行循环体空,第三次判断条件表达式值为0,不执行循环体,而a的值为1,但是表达式a++的值为0,因此不计算表达式++b的值,b的值仍为2。6、设有定义:chars[81];inti=0;,以下不能将一行(不超过80个字符)带有空格的字符串正确读入的语句或语句组是()。A、gets(s);B、while((s[i++]=getchar())!:’\n’);s[i]=’\0’;C、scanf(’’%s’’,s);D、do{scanf(’’%c’’,&s[i]);}while(s[i++]!=’\n’);s[i]=’\0;标准答案:C知识点解析:使用scanf()输入字符串时,空格和回车符都作为输入数据的分隔符而不能被读入,而应该使用gets(s)。7、下面不属于对象基本特点的是A、标识唯一性B、可复用性C、多态性D、封装性标准答案:B知识点解析:对象有下列一些基本特点,即标识唯一性、分类性、多态性、封装性和模块独立性。所以选项B正确。8、以下叙述中正确的是A、函数调用时,不必区分函数名称的大小写B、调用函数时,函数名必须与被调用的函数名完全一致C、函数名允许用数字开头D、在函数体中只能出现一次return语句标准答案:B知识点解析:在标准C中,函数的定义形式为:函数返回值的类型名函数名(类型名形式参数1,类型名形式参数2,…){说明部分语句部分}需要说明的是函数名和形式参数都是由用户命名的标识符,在同一程序中,函数名必须惟一,形式参数名只要在同一函数中惟一即可,与其他函数中的变量可以同名。return语句的作用是返回函数的值,在函数中可以出现多个或者没有。9、下面选项中关于编译预处理的叙述正确的是A、凡是以#}号开头的行,都被称为编译预处理命令行B、预处理命令行必须使用分号结尾C、预处理命令行不能出现在程序的最后一行D、预处理命令行的作用域是到最近的函数结束处标准答案:A知识点解析:在C语言中,凡是以“#”号开头的行,都称为编译预处理命令行。这些预处理命令组成的预处理命令行必须在一行的开头以“#”号开始,每行的末尾不能用“;”号结束,以区别于c语句、定义和说明语句。根据需要,命令行可以出现在程序的任何一行的开始部位,其作用一直持续到源文件的末尾。10、若有定义语句charc=’\101’;则变量c在内存中占A、2个字节B、3个字节C、1个字节D、4个字节标准答案:C知识点解析:每个字符变量被分配一个字节的内存空间,因此只能存放一个字符。字符值是以ASCII码的形式存放在变量的内存单元之中的。11、有以下程序#includeintfun(inta,intb){if==0)returna;elsereturn(fun(--a,--b));}main(){printf("%d\n",fun(4,2));}程序的运行结果是A、1B、2C、3D、4标准答案:B知识点解析:由程序可知函数fun(inta,intb)是一个递归函数。所以当主函数中调用fun(4,2)时,其执行过程如下:fun(4,2)->fun(3,1)->fun(2,0),其返回值为2。12、以下选项中,当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正确。13、有以下程序main(){inta=3;do{printf("%d,",a-=2);}while(!(-a);printf("\n");}程序运行后的输出结果是A、1,B、1,-2,C、3,0,D、1,0标准答案:B知识点解析:循环体执行两次。首先输出a=1,然后判断表达式!(--A,a为0,循环条件表达式值为1,执行第二次循环体,输出a=-2。判断循环条件表达式值为0,循环退出。14、有以下程序#includemain(){intx=8;for(;x>0;x--){if(x%3){printf("%d,",x--);continue;)pfintf("%d,",--x);}}程序的运行结果是A、8,7,5,2,B、9,7,6,4,C、7,4,2,D、8,5,4,2,标准答案:D知识点解析:“x--”表示先执行程序,再令x的值减1;而“--x”表示令x的值减1,再执行程序。x=8时,x%3为非0值,执行语句{prinf("%d,",x--);continue;},输出“8,”,此时经过x--,x的值变为7,跳出此次循环;执行x--,x=6,x%3=0,后面语句不执行,执行语句printf("%d,",--x);,输出“5,”;执行for语句中的x--,得到x=4,判断x%3,输出“4,”,执行两次x--后,x=2,执行{printf("%d,",x--);continue;}后,输出“2,”;然后执行两次x--后,x=0,不符合“x>0”,循环全部结束。15、若以下选项中的变量a,b,y均已正确定义并赋值,则语法正确的switch语句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b;caseb:y=a+b;}D、switcha*b{case10:y=a+b;default:y=a-b;}标准答案:A知识点解析:使用switch语句直接处理多个分支,其一般形式为:switch(表达式){case常量表达式1:语句1;break;case常量表达式a:语句n;break;default:语句n+1;break;}switch.语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与基个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句。对于选项B),case语句和常量之间没有空格,而选项C)中的case后面为变量,选项D)中switch后面没给出圆括号。16、若有以下程序main(){inta=6,b=0,c=0;for(;a&&(b==0);){b+=a;a-=c++;}printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是A、6,0,0B、5,6,0C、6,6,1D、5,6,1标准答案:C知识点解析:循环条什a&&(b==0),a非零同时b==0则执行循环体,否则退出。循环体执行一次,此时b=6,a=6,c=1。17、有以下程序#includeintf(intx,inty){return((y-x)*x);}main(){inta=3,b=4,c=5,d;d=f(f(a,b),f(a,c));printf("%d\n",d);}程序运行后的输出结果是()A、9B、10C、8D、7标准答案:A知识点解析:考查函数的返回值。d=f(f(a,b),f(a,c))=f((b-a)*a,(c-a)*a)=f(3,6)=(6-3)*3=9,所以答案选A。18、若有语句:char*line[5];,以下叙述中正确的是A、定义line是一个数组,每个数组元素是一个基类型为char的指针变量B、定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C、定义line是一个指针数组,语句中的*号称为间址运算符D、定义line是一个指向字符型函数的指针标准答案:A知识点解析:本题考查指针数组的定义。本题中line是一个指针数组,有5个元素,每个元素都是一个指针变量。19、若有以下程序#include<stdio.h>main(){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。20、设有定义doublea[10],*s=a;以下能够代表数组元素a[3]的是A、(*s)[3]B、*s[3]C、*s+3D、*(s+3)标准答案:D知识点解析:语句*s=a,使用指针变量s指向一维数组a的首地址,所以*(s+3)表示的是引用数组a[3]。21、若变量已正确定义for(x=0,y=0;(y!=99&&x<4);x++)则以上for循环A、执行3次B、执行4次C、执行无限次D、执行次数不定标准答案:B知识点解析:本题重点考察for语句的循环次数,for(x=0,y=0;(y!=99&&x<4);x++),y!=99&&x<4即循环条件当y不等于99以及x<4时,执行循环语句,当有一个条件不成立时,均结束循环,因此循环4次,B选项正确。22、有以下程序#includemain(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;printf("%c\n",a);}程序运行后的输出结果是A、HB、hC、AD、a标准答案:B知识点解析:条件运算符构成的选择结构的一般形式为:表达式1?表达式2:表达式3。其求值规则为:如果表达式1的值为真,则以表达式2的值作为条件表达式的值,否则以表达式2的值作为整个条件表达式的值。该题目中首先给字符变量a赋值为’H’。语句a=(a>=’A’&&a<=’Z’).(a+32):a;即将大写字母变为小写字母。因此B选项正确。23、下列关于栈叙述正确的是A、算法就是程序B、设计算法时只需要考虑数据结构的设计C、设计算法时只需要考虑结果的可靠性D、以上三种说法都不对标准答案:D知识点解析:算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以A)错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。24、在软件开发中,需求分析阶段产生的主要文档是A、可行性分析报告B、软件需求规格说明书C、概要设计说明书D、集成测试计划标准答案:B知识点解析:A错误,可行性分析阶段产生可行性分析报告。C错误,概要设计说明书是总体设计阶段产生的文档。D错误,集成测试计划是在概要设计阶段编写的文档。B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。25、有以下程序#includeintfun(int(*s)[4],intn,intk){intm,i;m=s[0][k];for(i=1;i<n;i++)if(s[i][k]>m)m=s[i][k];returnm;}main(){inta[4][4]={{1,2,3,4},{11,12,13,14},{21,22,23,24},{31,32,33,34}};printf("%d\n",fun(a,4,0));}程序的运行结果是A、4B、34C、31D、32标准答案:C知识点解析:本题重点考察二维数组名作为实参进行参数传递,在主函数中调用了fun函数,实参为二维数组名a和两个整数4、0,这样对应定义fun函数首部也有三种形式,这里采用了第一种形式,也就是行指针,这样在fun函数对s[i][j]进行操作实际上就是对主函数中的a[i][j]进行操作,再分析fun函数的作用便可知,是求二维数组第0列中最大的那个元素。因此C选项正确。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共40题,每题1.0分,共40分。)1、以下叙述中正确的是A、程序必须包含所有三种基本结构才能成为一种算法B、如果算法非常复杂,则需要使用三种基本结构之外的语句结构,才能准确表达C、只有简单算法才能在有限的操作步骤之后结束D、我们所写的每条C语句,经过编译最终都将转换成二进制的机器指令标准答案:D知识点解析:C语句构成了函数,函数构成的程序,经过编译转换成二进制代码后可以运行,算法是指为解决某个特定问题而采取的确定且有限的步骤,可以利用代码来描述算法,而算法+数据结构才是程序,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成。由这三种基本结构组成的算法可以解决任何复杂的问题,反之则不一定,所有算法必须在有限步骤后结束。2、在深度为7的满二叉树中,叶子结点的个数为A、32B、31C、64D、63标准答案:C知识点解析:所谓满二叉树是指这样的一种二叉树:除最后一层外,每一层上的所有结点都有两个子结点。也就是在满二叉树中,每一层上的结点数都是最大结点数,即在满二叉树的第k层上有2k-1个结点,且深度为m的满二叉树有2m-1个结点。对于深度为7的满二叉树,叶子结点所在的是第7层,一共有27-1=64个叶子结点。全部结点共27-1=127个。3、对长度为n的线性表做快速排序,在最坏情况下,比较次数为()。A、nB、n-1C、n(n一1)D、n(n一1)/2标准答案:D知识点解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。快速排序法也是一种互换类的排序方法,但由于它比冒泡排序法的速度快,因此称为快速排序法。最坏情况下快速排序退化为冒泡排序。4、以下程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<=5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");}A、#*#*$B、*#*#$C、*#*#*#$D、*#*#*#$标准答案:D知识点解析:本题考查对continue语句功能的了解,由于循环体中有if语句存在,所以在循环过程中将会有选择地执行continue语句,遇到continue语句时,将会跳过循环体后半部分,提前结束本次循环,进入下一循环的条件判断。本题中,当i值为奇数时,表达式i%2值为1,输出*#,否则无输出。5、数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)之间的关系是()。A、DBS就是DB,也就是DBMSB、DBS包括DB和DBMSC、DB包括DBS和DBMSD、DBMS包括DB和DBS标准答案:B知识点解析:数据库(DB)是指长期存储在计算机内的、有组织的、可共享的数据集合;数据库管理系统(DBMS)是用来管理数据及数据库的系统;数据库系统(DBS)是由数据库、数据库管理系统、数据库管理员、硬件等在一起的总称。因此DBS包括DB和DBMS。6、有以下定义语句,编译时会出现编译错误的是A、chara=’\n’;B、chara="aa";C、chara=’a’;D、chara=’\x2d’;标准答案:B知识点解析:在选项B中,由两个字符aa组成一个字符串赋给一个字符变量a时会出错。7、关于C语言标识符,以下叙述中错误的是()。A、标识符可全部由数字组成B、标识符可全部由下画线组成C、标识符可全部由小写字母组成D、标识符可全部由大写字母组成标准答案:A知识点解析:C语言标识符只能由字母、数字、下画线构成,且只能以字母、下画线开头,故选项A不正确。8、有以下程序:#includemain(){charx=2,y=2,z;z=(Y<<1)&(x>>1);prinff(“%d\n”,z);}程序的输出结果是()。A、1B、0C、4D、8标准答案:B知识点解析:本题考查位运算<<和&。y<<1为4,x>>1为1,二者与运算后为0,故B选项正确。9、面向对象方法中,继承是指A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:面向对象方法中,继承是使用已有的类定义作为基础建立新类的定义技术。广义地说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们。10、有以下程序#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()函数中的格式说明符基本相同。②空白字符:空白字符会使scanf()函数在读操作中略去输入中的一个或多个空白字符。③非空白字符:一个非空白字符会使scanf()函数在读入时剔除掉与这个非空白字符相同的字符。由于在scanf函数中,几个变量之间没有任何间隔,所以输入的时候,也同样不应该有间隔。11、有以下程序段inta,b,c;a=10;b=50;c=30;if(a>b)a=b,b=c;c=a;printf("a=%db=%dc=%d\n",a,b,c);程序的输出结果是A、a=10b=50c=30B、a=10b=30c=10C、a=10b=50c=10D、a=50b=30c=50标准答案:C知识点解析:本题的程序段首先定义三个整型变量a,b,c,并且其初始值分别等于10,50,30,然后判断a>b是否成立,如果条件成立,则把b的值赋给a,把c的值赋给b。由a和b的初始值可知,此条件表达式不成立,所以a和b的值保持不变。再执行下一条语句,把a的值赋给c,所以c的当前值等于10,最后由输出语句输出变量a,b,c的当前值,分别为lO,50,10。12、在带链队列中,经过一系列正常的操作后,如果front=rear,则队列中的元素个数为A、0或1B、0C、1D、队列满标准答案:A知识点解析:队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的链式存储也称为链队列。为了便于操作,可给链队列添加1个头结点,并令头指针指向头结点。队列为空的判断条件是头指针和尾指针的值相同,且均指向头结点。当队列为空(0)或1时,front=rear。13、设有定义语句intx[6]={2,4,6,8,5,7),*p=x,i;要求依次输出x数组6个元素中的值不能完成此操作的语句是A、for(i=0;i<6;i++)printf("%2d",*(p++));B、for(i=0;i<6;i++)printf("%2d",*(p+i));C、for(i=0;i<6;i++)printf("%2d",*p++);D、for(i=0;i<6;i++)printf("%2d",(*p)++);标准答案:D知识点解析:指针p指向数组x,因此可以使用p来输出数组x的值。选项A中,*(p++)表示先取出p指向的元素的值,然后p++指向下一个元素,满足要求;选项B中*(p+i)每次i的值发生变化,(p+i)指向x数组的x[i]元素,因此*(p+i)是取出数组x的x[i]元素的值,满足要求;选项C和选项A相比,少了括号,由于.运算符的优先级比++要求,因此,因此*p++表示先取出p指向的元素的值,然后p再++指向下一个元素,满足要求:选项D中(*p)++表示先取出p指向的元素的值,然后该值++,p没有增加,每次循环都*p取出的x[0]的值,不满足要求。14、在结构化程序设计中,模块划分的原则是A、各模块应包括尽量多的功能B、各模块的规模应尽量大C、各模块之间的联系应尽量紧密D、模块内具有高内聚度、模块间具有低耦合度标准答案:D知识点解析:内聚性是对一个模块内部各个元素间彼此结合的紧密程度的度量。耦合性是对模块间互相连接的紧密程度的度量。在结构化程序设计中,模块划分应遵循高内聚、低耦合的原则,即减弱模块之间的耦合性和提高模块内聚性,有利于提高软件模块的独立性。15、软件调试的目的是A、发现错误B、改正错误C、改善软件的性能D、验证软件的正确性标准答案:B知识点解析:软件调试的任务是诊断和改正程序中的错误。程序调试活动由两部分组成,一是根据错误的迹象确定程序中的错误的确切性质、原因和位置。二是对程序进行修改,排除这个错误。16、表达式:(int)((double)9/2)一9%2的值是()。A、5B、4C、3D、2标准答案:C知识点解析:C语言的计算过程与常规相似,这个表达式的计算过程为,首先求出9除以2的商等于4,再把其强制转化为实型数据为4.0,然后再强制转4,减去9对2求余数1,得到其结果等于3。17、若有以下定义和语句:#includechars1[10]=“abcd!”,*s2="\n123\\";prinff(“%d%d\n”,strlen(s1),strlen(s2));程序的运行结果是()。A、107B、105C、55D、58标准答案:C知识点解析:strlen函数返回字符串的长度,求字符串长度时,遇到结束标志‘\0’为止,但是长度不包括结束标识。字符数组s1的后5个元素没有赋值,都为‘\0’,即”abed!”后为‘\0’,所以strlen(s1)的值为5。字符指针s2所指向的字符串中,\n为转义字符换行符,表示1个字符,\\也为转义字符,代表\,也是1个字符.其后为字符串结束标识‘\0’,所以strlen(s2)的值也为5,因此C选项正确。18、以下程序段的输出结果是()。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、1,2,3,4B、0,0,1,2C、编译有错D、0,1,2,0标准答案:C知识点解析:if语句执行一条语句,若需要多条语句时,则应该使用复合语句用{}括起来。因此题目“if(a=1)b=1;c=2;elsed=3;”,if分支有两条语句,没构成复合语句。19、下面函数的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A、将字符串S复制到字符串t中B、比较两个字符串的大小C、求字符串的长度D、将字符串t续接到字符串S中标准答案:D知识点解析:本题考查指针变量的运用。本题中的函数实质上是将字符串t续接到字符串s中。20、有以下程序(strcat函数用以连接两个字符串)#inolude#includemain(){chara[20]="ABCD\0EFG\0",b[]="TJK";streat(a,b);printf("%s\n",a);}程序运行后的输出结果是A、ABCDE\0FG\0IJKB、ABCDIJKC、IJKD、EFGIJK标准答案:B知识点解析:在字符串中字符’\0’表示字符串的结束标忐,所以字符串a和b相连接的结果为ABCDIJK。21、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是A、关键字可用作用户标识符,但失去原有含义B、在标识符中大写字母和小写字母被认为是相同的字符C、用户标识符可以由字母和数字任意顺序组成D、预定义标识符可用作用户标识符,但失去原有含义标准答案:D知识点解析:预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin等和编译预处理命令名(如define和include)。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义:22、有以下程序#includemain(){intx,y,z;x=y=1;z=x++,y++,++y;printf("%d,%d,%d\n",x,y,z);)程序运行后的输出结果是A、2,3,1B、2,3,2C、2,3,3D、2,2,1标准答案:A知识点解析:在程序中,整型变量x、y的初值都为1,赋值语句z=x++,y++,++y右边的“x++,y++,++y”是一个逗号表达式,所以逗号表达式的值为++y的值。执行逗号表达式“x++,y++,++y”后,x的值为2,y的值为3,z取逗号表达式的值,为1。23、设有定义:struet{charmark[12];intnum1;doublenum2;}t1,t2;,若变量均已正确赋初值,则下列语句中错误的是()。A、t1=t2;B、t2.num1=t1.num1;C、t2.mark=t1.mark;D、t2.num2=t1.num2;标准答案:C知识点解析:本题考查结构体变量的引用。C选项中mark为结构体中的数组,不能直接赋值,所以C选项错误。24、若在定义语句:inta,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是A、scanf("%d%d%d",a,b,c);B、scanf("%d",a,b,c);C、scanf("%d",p);D、scanf("%d",&p);标准答案:C知识点解析:程序语句inta,b,c,*p=&c;定义了三个整型变量a,b,c,和一个整型指针变量p,并且把变量c的地址赋给p。scanf函数的一般形式为“scanf(“格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。25、以下函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=’\0’){a++;b++;}}A、使指针a指向b所指字符串B、检查a和b所指字符串中是否有’0\’C、将a所指字符串赋给b所指空间D、将a所指字符串和b所指字符串进行比较标准答案:C知识点解析:题目中在while语句的条件中是把字符*a的值赋给字符*b,然后再判断字符*b的值是否等于字符串的结束字符(’\0’),当不等于结束字符(’\0’)时,把字符指针变量a,b分别加1,指向它们的下一个字符,直到字符串a的结束。这样程序执行的结果就是把字符串a赋给了b所指的存储空间,选项C正确。26、有以下程序,程序运行后的输出结果是main(){intx=35,B;charz=’B’;B=((x)&&(z<’b’));printf("%d\n",B);}A、0B、35C、1D、66标准答案:C知识点解析:表达式((x)&&(z<’b’)),x为35非零,考虑表达式z<’b’,成立,则B的值为1。27、若以下选项中的变量a,b,y均己正确定义并赋值,则语法正确的switch语句是A、switch(a*a+b*b){default:break;case3:y=a+b;break;case2:y=a-b;break;}B、switch(a+b){case1:case3:y=a+b;break;case0:case4:y=a-b;}C、switch(a+9){casea:y=a-b:caseb:y=a+b:}D、switcha*b{case10:y=a+b;default:y=a-b;}标准答案:A知识点解析:使用switch语句直接处理多个分支,其一般形式为:switch(表达式){case常量表达式1:语句1:break;case常量表达式n:语句n:break;defauh:语句n+1;break;}switch语句的执行流程是:首先计算switch后面圆括号中表达式的值,然后用此值依次与各个case的常量表达式比较,若圆括号中表达式的值与某个case后面的常量表达式的值相等,就执行此case后面的语句,执行后遇break语句就退出switch语句;若圆括号中表达式的值与所有case后面的常量表达式都不等,则执行default后面的语句n+1,然后退出switch语句。对于选项B),case语句和常量之问没有空格,而选项C)中的case后面为变量.选项D)中switch后面没给出圆括号。28、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#include#defineN10voidfun(intx[N]){inti=0;while(iA、x+iB、x[i+1]C、x+(i++)D、x[++i]标准答案:C知识点解析:本题考查数组和scanf函数的使用。程序通过、while循环来给数组元素赋值,赋值语句通过调用scanf函数来实现。scanf函数从键盘接收数据,第二个参数是数据保存的地址.因此选项B和选项D不是地址,错误。选项A和选项C是地址,但是选项A的i值不会发生变化,循环体内每次都是给同一个元素赋值,不满足要求,选项C正确。29、有以下定义和语句:structworkers{intnum;charname[20];charc;struct{intday;intmonth;intyear;}s;);structworkersw,*pw;pw=&w;能给W中year成员赋1980的语句是A、w.year=1980;B、pw->year=1980;C、w.S.year=1980;D、*pw.year=1980;标准答案:C知识点解析:本题主要考查的是结构体变量的嵌套定义,也就是说一个结构体变量也可以是一个结构体。在本题中works这个结构体中包含了结构体s。所以对结构体变量w中year成员的引用是w.s.year。30、以下结构体说明和变量定义中,正确的是A、typedefstructabc{intn;doublem;}ABC;ABCx,y;B、structabc{intn;doublem);structabcx,y;C、structABC{intn;doublem;}structABCx,y;D、structabc{intn;doublem;};abcx,y;标准答案:A知识点解析:选项B中结构体定义中每个成员后面的分号都不能省略,doublem后没分号,因此错误。选项C结构体类型定义完毕后,}外没加分号。选项D中定义变量要加上关键字struct。31、有以下程序#include<stdio.h>main(){intk=4,m=1,p;fun(inta,intb){intstaticm=0,i=2:p=fun(k,m);i:i+m+1;printf("%d,",p);m=i+a+b;p=fun(k,m);returnm;}printf("%d\n",p);}程序运行后的输出结果是A、8,17B、7,16C、8,8D、7,17标准答案:A知识点解析:本题考查了静态变量以及局部变量的同名问题。主函数中调用fun函数两次,第一次调用fun(4,1),形参a和b接收以后,i值为3,m的值为8,调用结束返回8存放到p中并且输出p的值为8,除了静态变量m和i。变量a,b撤销。第二次调用fun(4,1),接收实参值以后,i为3+8+1,而m为12+4+1,即输出函数值17。32、有以下程序#includemain(){charb[4][10];inti;for(i=0;i<4;i++)scanf("%s",b[i]);printf("%s%s%s%s\n",b[0],b[1],b[2],b[3]);}执行时若输入:Figflowerisred.<回车>则输出结果是()。A、Figflowerisred.B、Figflowerisred.C、Figflowerisred.D、Figflowerisred.标准答案:A知识点解析:scanf()输入字符串的时候,空格和回车符均为分隔符,所以不能记录空格,即b[1]="Fig",b[2]="flower",b[2]="is",b[3]="red.",所以输出结果为选项A33、有以下程序:#includeintb=2:intfun(int*k){b=*k+b;retum(b);}main(){intat[10]={1,2,3,4,5,6,7,8),i;for(i=2;i<4;i++){b=fun(&a[i])+b;printf("%d",b);}printf("\n");}程序运行后的输出结果是A、810B、1028C、1012D、1016标准答案:B知识点解析:i=2时,fun(&a[2])返回值是b=b+a[1]=2+3=5,b=b+b=5+5=10;i=3时,fun(&a【3】)返回值是b=b+a[3]=10+4=14,b=b+b=14+14=28。34、有以下程序#includevoidfunc(intn){staticintnum=1;num+=n;printf("%d",num);}main(){func(3);func(4);printf("\n");}程序运行后的输出是()。A、48B、45C、35D、34标准答案:A知识点解析:func()有一个静态变量num,静态变量的初始化只进行一次,其值在程序运行过程中一直存在。调用func(3)时num被初始化为1,语句"num+=n;"计算得num值为4,输出结果为4;调用func(4)时num为上一次计算的结果4,再次计算num=8,输出结果为8,。答案选A。35、设有定义charstr[]="Hello";则语句printf("%d%d",sizeof(str),strlen(str));的输出结果是A、5,5B、6,6C、6,5D、5,6标准答案:C知识点解析:本题考查sizeof和strlen对字符串的处理不同之处,sizeof求出字符串的字符个数,包括结尾符。Strlen求出字符串的实际字符,不包括结尾符。所以答案为6,5,C选项正确。36、以下关于typedef的叙述错误的是A、typedef只是将已存在的类型用一个新的名字来代表B、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名C、用typedef可以增加新类型D、用typedef为类型说明一个新名,通常可以增加程序的可读性标准答案:C知识点解析:C语言允许用typedef说明一种新的类型名,其一般形式为:typedef类型名标识符;在此“类型名”必须是在此语句之前已有定义的类型标识符。“标识符”是一个用户定义标识符,用作新的类型名。Typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来的类型名依然有效,这样可以增加程序的可读性。37、有以下程序#include<stdio.h>structtt{intx;structtt*y;)*p;structtta[41={20,a+1,15,a+2,30,a+3,17,a};main(){inti;p=a;for(i=1;i<=2;i++){printf("%d,",p->x);p=p->y;}}程序的运行结果是A、20,15,B、30,17C、15,30,D、20,30,标准答案:A知识点解析:程序定义了结构体类型tt,其成员包括一个整型数据x和指向其自身结构的指针变量y。程序在定义结构体数组a的同时对其进行了初始化。其元素a[0]的成员y被赋值为元素a[1]的地址,a[1].y被赋值为a[2]的地址,a[2].y被赋予a[3]的地址,a[3].y被赋予a[0]的地址。这就形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。在主函数中,通过一个for循环语句,输出该链表前2个节点数值成员的值,即a[0].x和a[1].x。38、有以下程序#include<stdio.h>#include"string.h"typedefstruct{charname[9];charsex;floatscore[2];}STU;voidf(STUa){STUb={"Zhao",’m’,85.0,90.0};inti;strcpy(a.name,b.name);a.sex=b.sex;for(i=0;i<2;i++)a.score[i]=b.score[i];}程序的运行结果是A、Qian,m,85,90B、Zhao,m,85,90C、Zhao,f,95,92D、Qian,f,95,92标准答案:B知识点解析:本题考查在结构体中函数的实参和形参的传递,调用f(c)后,实参传向形参,进行f()函数功能的实现,但程序中没有返回语句,故形参不能将值传回实参,它们值的传递具有不可逆性,所与printf输出的还是c中实参的值。39、有以下程序voidfun1(char*p){char*q;q=p;while(*q!=’\0’){(*q)++;q++;}}main(){chara[]={"Program"},*p;p=&a[3];fun1(p);printf("%s\n",a);}程序执行后的输出结果是A、PrphsbnB、ProhsbnC、ProgsbnD、Program标准答案:B知识点解析:在函数voidfun1(char*p)中,语句(*q)++的功能是q所指的字符加1,变成其后面的字符;q++就是指针q指向下一个字符的位置。所以在主函数中,语句p=&a[3]的作用是使指针p指向字符数组a[]中的第四个字符的位置,即p指向字符’g’;然后调用函数fun1(p)后,字符’g’变成’h’,字符’r’变成’s’,字符’a’变成’b’,字符’m’变成’n’,因而字符数组a[]中的内容就成“Prohsbn”。40、面向对象方法中,继承是指A、一组对象所具有的相似性质B、一个对象具有另一个对象的性质C、各对象之间的共同性质D、类之间共享属性和操作的机制标准答案:D知识点解析:继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列叙述中正确的是A、循环队列中的元素个数随队头指针与队尾指针的变化而动态变化B、循环队列中的元素个数随队头指针的变化而动态变化C、循环队列中的元素个数随队尾指针的变化而动态变化D、循环队列中的元素个数不会变化标准答案:A知识点解析:所谓循环结构就是将队列存储空间的最后一个位置绕到第一个位置上,形成逻辑上的环状空间,循环使用。在循环队列中,用队尾指针rear指向队列中的队尾元素,用队头指针front指向队头元素的前一个位置,因此,队列中的元素数等于从队头指针front指向的后一个位置与队尾指针rear指向位置之间的元素数量。2、某图书集团数据库中有关系模式R(书店编号,书籍编号,库存数量,部门编号,部门负责人),其中要求(1)每个书店的每种书籍只在该书店的一个部门销售;(2)每个书店的每个部门只有一个负责人;(3)每个书店的每种书籍只有一个库存数量。则关系模式R最高是()。A、1NFB、2NFC、3NFD、BCNF标准答案:B知识点解析:由题可知关系模式R有三个函数依赖:(书店编号,书籍编号)→部门编号(书店编号,部门编号)→负责人(书店编号,书籍编号)→库存数量由此可知,(书店编号,书籍编号)可以唯一标识关系模式R中的每个元组,因此属于关系模式的主键。在此关系模式中,每个属性都是不可再分的,R属于1NF,且“书店编号”和“书籍编号”单独之一都不能决定其他非主属性,所以R属于2NF;但(书店编号,书籍编号)可以决定“部门编号”,“部门编号”又可决定“部门负责人”,存在传递依赖,所以不属于3NF,更不是BCNF。3、若有定义语句:intm[][3]={1,2,3,4,5,6,7};,则与该语句等价的是()。A、intm[][3]={{1,2,3},{4,5},{6,7}};B、intm[][3]={{1,2},{3,4},{5,6,7}};C、intm[][3]={{1,2,3},{4,5,6},{7}};D、intm[][3]={{1},{2,3,4},{5,6,7}};标准答案:C知识点解析:考查二维数组的初始化。初始化二维数组的时候,若给数组的全部元素均赋初值,此时第一维的元素个数可以不指定,部分赋值时,最后一行元素不写完整,此时数组第一维元素个数仍然可以不指定。题中为按行给数组m赋值,最后一行只有部分赋初值,答案选C。4、有以下程序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的每一个值,内层循环的自变量j每次从i开始,每次循环后增1,直到j等于3结束。所以在每次外循环开始后,内层循环在一行先打印i*i=两个乘数的积,然后回车换行,下次循环从下一行开始打印输出结果。5、设有定义:doublea[10],*s=a;,以下能够代表数组元素a[3]的是()。A、(*s)[3]B、*(s+3)C、*s[3]D、*s+3标准答案:B知识点解析:题中,首先定义了double型的数组a,并将数组首地址赋给指针s。s[3]能够表示a[3],故选项A、C不能表示a[3];选项D的*s+3=a[0]+3。故本题答案为B选项。6、下面不属于软件测试实施步骤的是A、集成测试B、回归测试C、确认测试D、单元测试标准答案:B知识点解析:软件测试实施的步骤有单元测试、集成测试和确认测试。7、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组组成的,记为R∩S。8、有两个关系R和T如下:则由关系R得到关系T的操作是A、选择B、投影C、交D、并标准答案:A知识点解析:由关系R和T所包含的元素可知,关系R经过选择操作就可以得到关系T。9、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是A、关键字可用作用户标识符,但失去原有含义B、在标识符中大写字母和小写字母被认为是相同的字符C、用户标识符可以由字母和数字任意顺序组成D、预定义标识符可用作用户标识符,但失去原有含义标准答案:D知识点解析:预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin等和编译预处理命令名(如define和include)。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义:10、若有定义语句:intx=12,y=8,z;在其后执行语句z=0.9+x/y;则z的值为A、1.9B、1C、2D、2.4标准答案:B知识点解析:由于x,y,z都是整型数据,所以x除以y的值为整型数值1,1和0.9相加得到1.9,再转换为整型数1赋给整型变量z。11、以下C语言用户标识符中,不合法的是A、_1B、AaBcC、a_bD、a--b标准答案:D知识点解析:本题考查用户标识符,C语言中,用户标识符只能由字母、下划线和数组组成,且必须以字母或者下划线开始。选项A)、B)和C)都是正确的,选项D)中的case是C语言关键字,不能作为用户标识符,是错误的。12、设有某函数的说明为int*func(inta[10],intn);则下列叙述中,正确的是A、说明中的a[10]写成a[]或*a效果完全一样B、形参a对应的实参只能是数组名C、func的函数体中不能对a进行移动指针(如a++)的操作D、只有指向10个整数内存单元的指针,才能作为实参传给a标准答案:A知识点解析:函数func为返回值为指针的函数,有两个形参,形参数组a为指针变量,保存实参数组的首地址,其元素个数由实参数组决定,因此说明中的a[10]写成a[]或*a效果完全一样。13、有如下程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);其输出结果是A、123.141593B、12,3.141593C、123.1415930D、123.141593标准答案:D知识点解析:本题考查printf语句。primf()函数是格式化输出函数,一般用于向标准输出设备按规定格式输出信息。在编写程序时经常会用到此函数。printf()函数的调用格式为:printf("<格式化字符串>",<参量表>)。其中,“格式化字符串”包括两部分内容:一部分是正常字符,这些字符将按原样输出;另一部分是格式化规定字符,以“%”开始,后跟一个或几个规定字符,用来确定输出内容格式。格式化字符串的格式是:%[标志][输出最小宽度][精度][长度]格式字符①标志:标志字符为-、+、空格等,其意义如下所示:-:结果左对齐,右边填空格;+:输出符号(正号或负号);空格:输出值为正时冠以空格,为负时冠以负号。②输出最小宽度:用十进制整数来表示输出的最少位数(包括小数点在内至少要输出这么多位)。若实际位数多于定义的宽度,则按实际位数输出;若实际位数少于定义的宽度,则右对齐,左边留空;有负号,左对齐,右边留空;表示宽度的数字以0开始,则右对齐,左边留空。③精度:精度格式符以“.”开头,后跟十进制整数。它的意义是:如果输出数字,则表示小数的位数,若实际位数大于所定义的精度数,则四舍五入,若不足则补0;如果输出的是字符,则表示输出字符的个数,若实际位数大于所定义的精度数,则截去超过的部分;④长度:长度格式符为h和l两种,b表示按短整型量输出,l表示按长整型量输出。14、有以下程序#includemain(){inta=3;do{printf("%d,",a-=2);}while(!(--a));printf("\n");}程序运行后的输出结果是()。A、1,-2,B、1,C、3,0,D、1,0标准答案:A知识点解析:循环条件是表达式"!(--a)",即当--a为0时,循环才会继续进行。该程序中do-while循环了两次,第一次循环输出a-=2的值,即1。之后判定循环条件为真,进入第二次循环输出值-2,判定循环条件为"!(-3)",为假,结束循环,所以输出的结果为选项A)。15、有以下程序#includeintf(intn);main(){inta=3,s;s=f(a);s=s+f(a);printf("%d\n",s);}intf(intn){staticinta=1;n+=a++;returnn;}程序运行后的输出结果是A、9B、8C、7D、10标准答案:A知识点解析:在主函数中第一次调用f(a)时,得到变量s的值等于4,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度翻新装修卫生间工程赔偿合同3篇
- 2024年度高校环保项目合作协议
- 造价咨询合同
- 签订方协议的流程 2篇
- 2024年度融资合同及融资款支付借条3篇
- 化工原理自测题:第四、五章(自)
- 场地使用安全协议书
- 人教版九年级化学第五单元3利用化学方程式的简单计算课时1利用化学方程式的简单计算(一)分层作业课件
- 钢管架施工工程质量保修合同3篇
- 护士护理交班制度
- 电化学储能电站并网运行与控制技术规范 第3 部分:并网运行验收
- 公车拍卖质量保证措施
- 工商管理大学生职业生涯规划
- 大学生生涯发展展示 (二版)
- 平面设计生涯发展展示
- 公司的人才培养与团队建设
- 2024年江苏省普通高中学业水平测试小高考生物、地理、历史、政治试卷及答案(综合版)
- 上海2022届高三数学·一模试卷 填空选择 汇编
- 三年级数学(上)计算题及答案
- 《学术型英语写作》课件
- 校园垃圾分类
评论
0/150
提交评论