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

下载本文档

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

文档简介

国家二级C语言机试(选择题)模拟试卷20(共9套)(共270题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共25题,每题1.0分,共25分。)1、数据库系统的核心是()。A、数据模型B、软件开发C、数据库设计D、数据库管理系统标准答案:D知识点解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。2、有以下程序#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)是一个递归函数。所以当主函数中调用“fun(4,2)”时,其执行过程如下“fun(4,2)->fun(3,1)->fun(2,0)”,其返回值为2。所以正确答案为选项B)。3、已知下面的程序段,正确的判断是()。#defineM2#defineN(m)((M+1)*m)……x=3*(M+N(5));A、程序错误,不允许嵌套定义B、x=51C、x=25D、程序错误,宏定义不允许有参数标准答案:B知识点解析:C语言中的宏定义允许嵌套定义,也允许带变量。在对源程序编译时,先有一个预处理过程,其中一个任务就是替换宏定义。预处理程序扫描源程序若干遍,能够识别出嵌套的宏定义和带参数的宏定义。将参数代入整理得x=51。4、有以下程序,程序运行后的输出结果是main(){intm=12,n=34;printf(“%d%d”,m++,++n);printf(“%d%d\n”,n++,++m);}A、12353514B、12353513C、12343514D、12343513标准答案:A知识点解析:本题主要考查自加运算符,自加运算符++在变量前表示先增加然后再使用,++在变量后表示先使用然再增加。本题中,第一个printf语句m++表示先输出m的值,然后m增加,因此首先输出的是12,然后m的值变成13,++n表示n首先增加l变成35然后输出,因此输出的是35;在第二个printf。语句中,n++是先输出11的值然后增加,即输出35,n的值变为36,H仰表示先增加m的值再输出,m的值由13变成14,故最后输出的是14。5、公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是()。A、1:1B、m:1C、1:mD、m:n标准答案:C知识点解析:一个部门可以有多名员工,所以实体部门和职员间的联系是1:m联系。6、从工程管理角度看,软件设计一般分为两步完成,它们是A、概要设计与详细设计B、数据设计与接□设计C、软件结构设计与数据设计D、过程设计与数据设计标准答案:A知识点解析:软件设计是开发阶段最重要的步骤。从王程管理的角度来看可分为两步:概要设计和详细设计。概要设计是将软件需求转化为软件体系结构,确定系统级接口、全局数据结构或数据库模式:详细设计是指确立每个模块的实现算法和局部数据结构,用适应方法表示算法和数据结构的细节。从技术观点来看,软件设计包括软件结构设计(定义软件系统各主要部件之间的关系)、数据设计(将分析时创建的模型转化为数据结构)、接口设计(描述软件内部、软件与协作系统之间以及软件与人之问如何通信)、过程设计(把系统结构部件转换成软件的过程)四个步骤。7、支持子程序调用的数据结构是()。A、栈B、树C、队列D、二叉树标准答案:A知识点解析:栈支持子程序调用。栈是一种只能在一端进行插入或删除的线性表。在主程序调用子函数时要首先保存主程序当前的状态,然后转去执行子程序,最终把子程序的执行结果返回到主程序中调用子程序的位置,继续向下执行,这种调用符合栈的特点,所以A选项正确。8、已定义以下函数intfun(int*p){return*p;}fun函数的返回值是()。A、一个整数B、不确定的值C、形参P中存放的值D、形参P的地址值标准答案:A知识点解析:返回值为指针变量指向的数据,该数据已被定义为整型,因此A选项正确。9、下列叙述中错误的是()。A、用户定义的函数中可以没有return语句B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C、用户定义的函数中若没有return语句,则应当定义函数为void类型D、函数的return语句中可以没有表达式标准答案:B知识点解析:本题重点考查函数返回值的相关知识。函数的值只能通过return语句返回主调函数,在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为“空类型”,类型说明符为void。因此选择B选项。10、有以下程序:#include<stdio.h>intfun(){staticintx=1;x*=2:returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf(’’%d\n’’,s);}程序的运行结果是()。A、10B、30C、0D、64标准答案:D知识点解析:本题中静态局部变量x,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第1次循环s的值为2;第2次循环中,返回的x值为4,所以s的值为8;第3次循环,返回的x值为8,所以s的值为64。11、如果定义floata[10],x;则以下叙述中正确的是A、表达式a+l是非法的B、语句a=&x;是非法的C、三个表达式a[1]、*(a+1)、*&a[1]表示的意思完全不同D、表达式木&a[1]是非法的,应该写成木(&(a[1]))标准答案:B知识点解析:定义语句floata[10],x;以后,数组名a表示了数组元素的首地址,是常量在程序中不能更改,因此选项A是的描述是正确的。而指向运算符和取址运算符,是互反运算符优先级相同,*&a[1]和*(&a[1])含义相同。12、有以下程序#includemain(){FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");for(i=0;i<6;i++)fprintf(fp,"%d\n",a[i]);rewind(fp);for(i=0;i<6;i++)fscanf(fp,"%d",&a[5-i]);fclose(fp);for(i=0;i<6;i++)printf("%d,",a[i]);}程序运行后输出结果是A、1,2,3,4,5,6,B、6,5,4,3,2,1,C、4,5,6,1,2,3,D、1,2,3,3,2,1,标准答案:B知识点解析:本题考查文件操作函数,fprintf和rewind函数,rewind函数将文件内部的位置指针重新指向一个流(数据流/文件)的开头,程序首先是将数组a的六个数写入d2文件中,然后又将a数组从后往前覆盖到d2中的内容,所以结果为6,5,4,3,2,1,选项B正确。13、以下不合法的字符常量是()。A、’\\’B、’\"’C、’\018’D、’\xcc’标准答案:C知识点解析:转义字符中,八进制的表示形式为\ddd,但是八进制中不能包含数字8,所以C选项不合法。14、有以下程序,程序运行后的输出结果是#include<stdio.h>main(){inta=3;printf("%d\n",(a+=a-=a*a));}A、9B、0C、3D、-12标准答案:D知识点解析:对于表达式“a+=a=a*a”相当于“a=a-(a*a)”,然后汁算“a=a+a”,a的初值为3,则表达式的值为-12。15、有以下程序#include#includeStructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,"ZhangDa",1098.0};a=fla);printf("%d,%s,%6.1fln",a.a,a.b,a.c);}structAf(StructAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;returnt;}程序运行后的输出结果是A、1002,ZhangDa,1202.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1001,ZhangDa,1098.0标准答案:B知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),在函数f(a)qp对结构体变量a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。16、要求通过while循环不断读入字符,当读入字母N时结束循环。若变量已正确定义,以下正确的程序段是A、while(ch=getchar0=’N’)printf("%c",ch);B、while(ch=getchar()=="N")printf("%c",ch);C、while((ch=getchar())!=’N’)printf("%c",ch);D、while((ch=getchar())==’N’)printf("%c",ch);标准答案:C知识点解析:while循环的执行过程如下:①计算while后面圆括号中表达式的值,当值为非0时,执行步骤②;当值为0时,执行步骤④;②执行循环体一次:③转去执行步骤①;④退出循环。在选项C中,表达式(ch=getchar())!=’N’表示输入的字符不等于N,如果这个条件表达式成立,则执行循环体,打印输出输入的字符。如果这个条件表达式不成立,即输入的字符等于N,则退出循环。17、以下叙述中错误的是A、typedef的作用是用一个新的标识符来代表已存在的类型名B、typedef说明的新类型名必须使用大写字母,否则会出编译错误C、可以用typedef说明的新类型名来定义变量D、用typedef可以说明一种新的类型名标准答案:B知识点解析:typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原来类型名依然有效。为了便于识别,一般习惯将新的类型名用大写字母表示。18、以下叙述中正确的是A、continue语句使得整个循环终止B、break语句不能用于提前结束for语句的本层循环C、使用break语句可以使流程跳出switch语句体D、在for语句中,continue与break的效果是一样的,可以互换标准答案:C知识点解析:break语句通常用在循环语句和开关语句中。当break用于开关语句switch中时,可使程序跳出switch而执行switch以后的语句;当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,即满足条件时便跳出循环。continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。A、B和D三个选项中均有错误。因此C选项正确。19、有以下程序structA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,"ZhangDa",1098.0};f(a);printf("%d,%s,%6.1tha",a.a,a.b,a.c);}voidf(structAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序运行后的输出结果是A、1002,ChangRong,1202.0B、1001,ZhangDa,1098.0C、1001,ChangRong,1098.0D、1002,ZhangDa,1202.0标准答案:B知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),形参t接收实参的数据,在函数f(t)中对结构体变量t的各个成员进行了赋值操作,需要注意的,形参和实参之间是数据传递,因此对形参的操作对实参不产生影响,因此在主函数输出仍然输出变量a的数据20、以下叙述中错误的是A、用typedef可以说明一种新的类型名B、typedef的作用是用一个新的标识符来代表已存在的类型名C、可以用typedef说明的新类型名来定义变量D、typedef说明的新类型名必须使用大写字母,否则会出编译错误标准答案:D知识点解析:本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,新类型可以使用小写,所以D选项错误。21、设有定义:struct{charmark[12];intnum1;doublenum2;}t1,t2;若变量均已正确赋初值,则以下语句中错误的是()。A、t2.mark=t1.mark;B、t2.num1=t1.num1;C、t1=t2;D、t2.num2=t1.num2;标准答案:A知识点解析:同类型的结构体之间可以直接赋值,数组却不可以,答案选A。22、有以下函数:intfun(char*x,char*y){intn=0;while((*x==*y)&&*x!=’\0’){x++;y++;n++;}returnn;}函数的功能是()。A、将y所指字符串赋给x所指存储空间B、查找x和y所指字符串中是否有’\0’C、统计x和y所指字符串中最前面连续相同的字符个数D、统计x和y所指字符串中相同的字符个数标准答案:C知识点解析:本题中由循环条件可知遇到’\0’或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。23、在E-R图中,用来表示实体联系的图形是A、椭圆形B、矩形C、菱形D、三角形标准答案:C知识点解析:在E-R图中实体集用矩形,属性用椭圆,联系用菱形。24、学生和课程的关系模式定义为:S(S#,Sn,Sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课);SC(S#,C#,G)(其属性分别学号、课程号和成绩)。关系中包含对主属性传递依赖的是()。A、S#→SdB、S#→Sd,(S#,C#)→GC、S#→Sd,Sd→DcD、C#→P#,(S#,C#)→G标准答案:C知识点解析:关系SC的主属性为(S#、C#),但在SC中S#(学号)单独就可以决定Sd(所在系)。sd(所在系)可决定Dc(所在系的系主任),故对主属性传递依赖的是S#→Sd,Sd→Dc。25、以下叙述中错误的是()。A、C语言程序在运行过程中的所有计算都以二进制方式进行B、C语言程序在运行过程中的所有计算都以十进制方式进行C、所有C语言程序都需要编译、链接无误后才能运行D、C语言程序中字符变量存放的是字符的ASCII值标准答案:B知识点解析:C程序在运行过程中的所有计算都以二进制方式进行,所以B选项错误。故本题答案为B选项。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、以下选项中不合法的标识符是A、FORB、&aC、printD、_00标准答案:B知识点解析:介法的标识符要满足组成字符为a~z以及A~z,数字字符0到9和下划线,其中数字不开头,不能是关键字。选项B)中,&不属于组成字符,是错误的。2、若变量已正确定义并赋值,以下不能构成C语句的选项是A、A=a+b;B、B++;C、a=a+bD、A?a:b;标准答案:C知识点解析:C语言语句的表示为分号,不加分号的表达式不能看成C语句。3、以下选项中不合法的标识符是A、FORB、&aC、printD、——00标准答案:B知识点解析:合法的标识符要满足组成字符为a~z以及A~z,数字字符0到9和下划线,其中数字不开头,不能是关键字。选项B中,&不属于组成字符,是错误的。4、以下选项中不合法的标识符是A、.FORB、&aC、printD、0标准答案:B知识点解析:合法的标识符要满足组成字符为a~z以及A~z,数字字符0到9和下划线,其中数字不开头,不能是关键字。选项B中,&不属于组成字符,是错误的。5、在数据处理中,其处理的最小单位是()。A、数据B、数据项C、数据结构D、数据元素标准答案:B知识点解析:数据元素是由多个数据项组成,数据是能够被计算机识别、存储和加工处理的信息载体,数据处理的最小单位是数据项。6、按照C语言规定的用户标识符命名规则,不能出现在标识符中的是A、连接符B、大写字母C、数字字符D、下划线标准答案:A知识点解析:在C语言中,合法标识符的命令规则是:标识符可以由字母、数字或下划线组成,并且第一个字符必须为字母或下划线。在C语言的标识符中,大写字母和小写字母被认为是两个不同的字符。选项A是连字符,不在C语言规定的命名变量标识符的范围内。7、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是A、关键字可用作用户标识符,但失去原有含义B、在标识符中大写字*和小写字*被认为是相同的字符C、用户标识符可以由字*和数字任意顺序组成D、预定义标识符可用作用户标识符,但失去原有含义标准答案:D知识点解析:预定义标识符是C语言中的标识符,在C语言中也有特定的含义,如函数printf、scanf、sin等和编译预处理命令名(如define和inc1ude)。预定义标识符可以作为用户标识符使用,只是这样会失去系统规定的原义。8、某二叉树共有7个结点,其中叶子结点只有1个,则该二叉树的深度为(假设根结点在第1层)A、3B、4C、6D、7标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为7层,每层只有一个结点。9、执行以下程序段后,w的值为()。intw=’A’,x=14,y=15;w=((x‖y)&&(w<’a’));A、-1B、NULLC、1D、0标准答案:C知识点解析:字符变量w的初值为字符“’A’”,其ASCH码值为65,字符“’at’”的ASCII码值为97,所以关系表达式“w<’a’”的值为1:变量x=14,变量y=15,“x‖y”为或,x、y均为真,所以x‖y的结果1。因而逻辑表达式“(x‖y)&&(w<’a’)”的值为1。10、下面函数调用语句含有实参的个数为()。func((exp1,exp2),(exp3,exp4,exp5));A、1B、2C、3D、5标准答案:B知识点解析:本题考查函数调用时的实参形式。这里有一个逗号运算的考查,(a,b)的运算结果为b,因而只有一个值,结合func的调用形式,可以知道实参的个数只有2个。11、某系统结构图如下图所示该系统结构图的宽度是()。A、2B、3C、4D、n标准答案:D知识点解析:系统结构图的宽度指的是整体控制跨度(最大模块数的层)的表示,上图中系统结构图的宽度为n,答案选D。12、带链队列空的条件是A、front=rear=NULLB、front=rear=-1C、front=NULL且rear=-1D、front=-1且rear=NULL标准答案:A知识点解析:带链队列空的条件有两个:一个是front=rear,一个是它们都等于空。13、数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()。A、控制流B、加工C、存储文件D、源和潭标准答案:A知识点解析:数据流图用于抽象描述一个软件的逻辑模型,它由一些特定的图符构成,包括4个方面,即加工、数据流、存储文件、源和潭。14、以下不构成无限循环的语句或语句组是A、n=0;do{++n;)while(n<=0);B、n=0;while(1){n++;}C、n=10;while(n);{n--;}D、for(n=0,i=1;;i++)n+=i;标准答案:A知识点解析:选项B)中while(1)永远为真所以进入死循环,选项C)中while(n=10)同理,选项D)中for循环没有循环限定条件也将进入无限循环,只有选项A)中while(n<=0)循环判定成立,循环将不进入无限循环。15、若有以下程序#includemain(){inta=1,b=2,c=3,d=4;if((a=2)&&(b=1))c=2;if((c==3)Il(d=-1))a=5;printf("%d,%d,%d,%d\n",a,b,c,d);)则程序的输出结果是A、2,1,2,-1B、2,2,2,4C、1,2,3,4D、5,1,2,-1标准答案:D知识点解析:代码中有两条并列的if语句,第一条if语句,逻辑与表达式(a=2)&&f1)=1)中,a=2,则执行b=1,得到该逻辑与表达式值为1,执行分支语句c=2;第二条if语句(c==3)‖(d=-1),c==3不成立,执行d=-1,而后得出整个逻辑与表达式值为1,执行分支语句a=5。16、下面描述中错误的是A、系统总体结构图支持软件系统的详细设计B、软件设计是将软件需求转换为软件表示的过程C、数据结构与数据库设计是软件设计的任务之一D、PAD图是软件详细设计的表示工具标准答案:A知识点解析:软件设计是将软件需求转换为软件表示的过程;数据结构与数据库设计是软件设计的任务之一;PAD图,即问题分析图,是一种主要用于描述软件详细设计的图形工具。17、有以下程序:#includemain(){inta[]={10,20,30,40},*P=a,i;for(i=0;i<=3;i++){a[i]=*p;P++;}prinff(“%d\n”,a[2]);}程序运行后的输出结果是()。A、30B、40C、10D、20标准答案:A知识点解析:for循环结束后,数组a的值并没有变化,由于数组是由0开始,所以a[2]的值是30。18、在一个C源程序文件中所定义的全局变量,其作用域为A、由具体定义位置和extern说明来决定范围B、所在程序的全部范围C、所在函数的全部范围D、所在文件的全部范围标准答案:A知识点解析:全局变量是在函数外部任意位置上定义的变量,它的作用域是从变量定义的位置开始,到整个源文件结束止。在同一编译单位内用extern说明符扩展全局变量的作用域(当全局变量定义在后,引用它的函数在前时,应该在引用它的函数中用extern对此全局变量进行说明,以便通知编译程序:该变量是一个已在外部定义了的全局变量,已经分配了存储单元,不需要再为它分配存储单元。这时全局变量的作用域从extern说明处起,延伸到该函数末尾)。当一个程序由多个编译单位构成,并且在每个文件中均需要引用同一个全局变量,这时只在其中一个文件中定义所有的全局变量,而在其他用到这些全局变量的文件中用extern对这些变量进行说明。19、有以下程序:#include<stdio.h>intf(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、7B、10C、8D、9标准答案:D知识点解析:调用f(a,b)函数返回3,调用f(a,c)函数返回6,所以外层调用f(f(a,1)),f(a,c));即调用f(3,6)函数返回9。20、学校的每个社团都有一名团长,且一个同学可同时担任多个社团的团长,则实体团长和实体社团问的联系是A、一对多B、多对多C、多对一D、一对一标准答案:A知识点解析:一对多关系是关系数据库中两个表之间的一种关系,该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。本题中,一个团长可以对应多个社团,一个社团只有一个团长,因此是一对多关系。21、设有定义:struet{charmark[12];intnum1;doublenum2;}t1,t2;,若变量均已正确赋初值,则一中错误的是()。A、t1=t2;B、t2.num1=t1.num1;C、t2.mark=t1.mark;D、t2.hum2=t1.num2:标准答案:C知识点解析:本题考查结构体变量的引用。C选项中mark为结构体中的数组,不能直接赋值,所以C选项错误。22、如果定义floata[10],x;则以下叙述中正确的是A、表达式a+1是非法的B、语句a=&x;是非法的C、三个表达式a[1]、*(a+1)、*&a[1]表示的意思完全不同D、表达式*&a[1]是非法的,应该写成*(&(a[1]))标准答案:B知识点解析:定义语句floata[10],x;以后,数组名a表示了数组元素的首地址,是常量在程序中不能更改,因此选项A是的描述是正确的。而指向运算符和取址运算符,是互反运算符优先级相同,*&a[1]和*(&a[1])含义相同。23、以下选项中合法的变量是A、5aB、A%C、_10_D、sizeof标准答案:C知识点解析:对于变量的命名要利用标识符命名,所谓标识符就是C语言中的变量名、函数名、数组名、文件名、类型名等。其中标识符构成:①标识符由字母、数字和下划线组成;②第一个字符必须为字母或下划线;因此选项A)中数字开头,选项B)出现了非法字符%,而选项D)中sizeof为关键字,不能为变量命名。24、一个工作人员可使用多台计算机,而一台计算机被多个人使用,则实体工作人员与实体计算机之间的联系是A、一对一B、一对多C、多对多D、多对一标准答案:C知识点解析:如果一个工作人员只能使用一台计算机且一台计算机只能被一个工作人员使用,则关系为一对一;如果一个工作人员可以使用多台计算机,但是一台计算机只能被一个工作人员使用,则关系为一对多;如果一个工作人员可以使用多台计算机,一台计算机也可以被多个工作人员使用,则关系为多对多。25、在满足实体完整性约束的条件下A、一个关系中应该有一个或多个候选关键字B、一个关系中只能有一个候选关键字C、一个关系中必须有多个候选关键字D、一个关系中可以没有候选关键字标准答案:A知识点解析:在关系数据库中,实体完整性的概念是主属性不能为空。在满足实体完整性的前提下,必须在关系中存在主属性,也就是在关系中应该有候选关键字。一个关系中可以有一个或者多个候选关键字。26、若变量已正确定义为int型,要通过语句scanf("%d,%d,%d"&a,&b,&c);给a赋值1、给b赋值2、给c赋值3,以下输入形式中错误的是(注:口代表一个空格符)A、口口口1,2,3B、1,口口口2,口口口3C、1,2,3D、1口2口3标准答案:D知识点解析:本题主要考查scanf函数的输入格式问题。scanf函数的一般形式为:scanf(格式控制字符串,地址1,地址2,…);格式控制字符串是由双撇号括起来的字符串,它主要由两种类型的字符组成:①格式说明符由“%”和格式字符组成,如%c,%d,%s,%f等。其作用是将输入的数据转换为指定的格式,赋给scanf的二个参量(是地址1)所指定的内存单元(可能一次使用多个)中。格式说明以“%”字符为标志。②普通字符,是需要用户在输入时原样输入的字符。在本题中格式控制字符串为“%d,%d,%d”,表示按十进制输入三个数据。要求在输入数据时,两个数据间一定以一个逗号“,”作为间隔符。27、有以下程序yoidfunl(char*p){char*q;q*p;while(*q!=’0’){(*q)++;q++;}}main(){chara[]={“Program”),*p;p=&a[3];funl(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’变成Ih,字符’r’变成’s’,字符’a’变成’b’,字符’m’变成’n’,因而字符数组a[]中的内容就成“Prohsbn”。28、下列函数的功能是voidfun(char*a,char*b){while((*b=*a)!=’\0’){a++;b++;}}A、使指针b指向a所指字符串B、将a所指字符串和b所指字符串进行比较C、将a所指字符串赋给b所指空间D、检查a和b所指字符串中是否有’\0’标准答案:C知识点解析:在while语句的条件中是把字符*a的值赋给字符*b,然后再判断字符*的值是否等于字符串的结束字符(’\0’),当不等于结束字符(’\0’)时,把字符指针变量a,b分别加1,指它们的下一个字符,直到字符串a的结束。这样程序执行的结果就是把字符串a赋给了b所指的存储空间。29、有以下程序#includemain(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序执行后的输出结果是()。A、x=8B、x=4C、x=6D、x=12标准答案:A知识点解析:continue语句是跳过当前循环层余下未执行的语句,继续执行下一次循环。外层循环i从0到1,内层循环j从0到3,外层循环2次,内层循环2*4为8次。每次内层循环若j值为偶数则x自加1,每次外层循环x自加两次,所以x的自加次数为2*2+2*(4-2)=8,所以答案选A。30、有以下程序#includefunc(intn){staticintnum=1;num=num+n;prinff("%d",num);}voidmain(){func(3);func(4);printf("\n");}程序运行后的输出是A、45B、35C、48D、34标准答案:C知识点解析:在函数func(intn)中定义了局部静态变量num,,其初始值等于1,所以在主函数中执行func(3),输出4,此时静态变量num的值等于4,当退出函数func(3)时,其值不会丢失,所以当在执行func(4)时,输出8。31、有下列程序: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+l;k<4;k++)if(a[i][i]<a[k][1[]){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循环对二维数组a[4][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。32、若有以下程序#includemain(){intc;c=13|5;printf("%d\n",c);}则程序的输出结果是A、13B、15C、18D、5标准答案:A知识点解析:本题考查位运算中按位或运算符,或运算只要两个比较的位中有一个为1,其结果是1,否则结果为0,,13用二进制表示为00001101,5用二进制表示为00000101,或后00001101,即13,选项A正确。33、有以下程序#includemain(){intc[6]={10,20,30,40,50,60},*p,*s;p=c;s=&c[5];printf("%d\n",s-p);}程序运行后的输出结果是A、50B、6C、5D、60标准答案:C知识点解析:主函数中指针变量p指向数组c,s保存了数组最后一个元素的地址,那么s中为两个地址之间的元素差5。34、有以下程序#includeintfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);return(p);}main(){printf("%d\n",fun(9));}程序运行后的输出结果是()。A、7B、5C、9D、4标准答案:A知识点解析:考查函数的递归调用。fun(9)=9-fun(7)=9-(7-fun(5))=2+(5-fun(3))=7-(3-fun(1))=7,所以答案选A。35、设有定义:intx[2][3];则以下关于二维数组x的叙述错误的是A、数组x可以看作是由x[0]和x[1]两个元素组成的一维数组B、可以用x[0]=0;的形式为数组所有元素赋初值0C、元素x[0]可看作是由3个整型元素组成的一维数组D、x[0]和x[1]是数组名,分别代表一个地址常量标准答案:B知识点解析:二维数组的元素在内存中占一系列连续的存储单元。数组元素在内存中的排列顺序是先存放第0行的元素,再存放第1行的元素……称这种存放顺序为按行存放。可以把一个二维数组看成是一个一维数组,每个数组元素又是包含有若干个元素的一维数组。另外在给二维数组赋初值时可以不用含花括号对。例如,inta[4][3]={1,2,4,5};在编译时,系统将按a数组元素在内存中排列的顺序,将花括号内的数据一一对应地赋给各个元素,若数据不足,系统将给后面的元素自动补初值0。以上将给a数组第一行的元素和第二行的第一个元素依次赋予1、2、4、5,其他元素的初值都为0。36、以下叙述中正确的是A、下面的语句用赋初值方式来定义字符串,其中,“’\0’"是必须的charstr1[]={’s’,’t’,’r’,’1’,’\0’);B、有定义语句:charstr1[]="str1";,数组str1将包含4个元素C、字符串常量“str1”的类型是:字符串数据类型D、字符数组的每个元素可存放一个字符,并且最后一个元素必须是“’\0’”字符标准答案:B知识点解析:选项B)中除了字符串中实际字符之外,还要存储字符串结束标志,应为5个元素。在c语言中没有字符串数据类型,因此选项C)不正确,选项D)字符数组不一定必须存放字符串,因此没有规定最后一个元素为字符串结束标志。37、以下叙述中正确的是A、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组B、charca[3][5]={"A","BB","CCC"};是不合语法的C、charca[][5]={"A","BB","CCC"};是不合语法的D、char*ca[3]={"A","BB","CCC"};是不合语法的标准答案:A知识点解析:本题考查字符串数组的相关知识,选项B、C、D都是合语法的。38、若有定义语句:doublea,*p=&a;以下叙述中错误的是A、定义语句中的*号是一个说明符B、定义语句中的p只能存放double类型变量的地址C、定义语句中*p=&a把变量a的地址作为初值赋给指针变量pD、定义语句中的*号是一个间址运算符标准答案:D知识点解析:在指针定义语句“doublea,*p=&a”中,指针变量p前面的*号,只是一个说明符,说明变量p是指针类型的变量。39、C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是A、关键字可用作用户标识符,但失去原有含义B、预定义标识符可用作用户标识符,但失去原有含义C、在标识符中大写字母和小写字母被认为是相同的字符D、用户标识符可以由字母和数字任意顺序组成标准答案:B知识点解析:关键字不可用作C语言的标识符,所以A错误,在标识符中大写字母与小写字母作为不同字符处理,所以C错误?标识符由下划线,字母,数字组成,且必须以下划线和字母开始,所以D错误。40、有以下程序#include<stdio.h>voidfun(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指向的是字符串数组a的第一个字符串“Morning”,p自加1之后,*p指向了字符串数组a的第2个字符串“Afternoon”。国家二级C语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述正确的是()。A、可以把define和if定义为用户标识符B、可以把define定义为用户标识符,但不能把if定义为用户标识符C、可以把if定义为用户标识符,但不能把define定义为用户标识符D、define和if都不能被定义为用户标识符标准答案:B知识点解析:在C语言中,define是编译预处理命令动词,通常用来定义符号常数,但它不是保留字,可以被定义为用户标识符,而if是保留字,不能被定义为用户标识符。2、设有定义: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()函数接收字符串时的结束标志为回车或者空格。因此选项B不能,选项C和选项D中按字符逐个读入字符串s中,直到读入的字符是换行符为止,因此正确。3、下列叙述中正确的是()。A、数据库系统避免了一切冗余B、数据库系统减少了数据冗余C、数据库系统中数据的一致性是指数据类型一致D、数据库系统比文件系统能管理更多的数据标准答案:B知识点解析:数据库系统共享性大,冗余度小,但只是减少了冗余,并不是避免一切冗余。数据的一致性是指在系统中同一数据在不同位置的出现应保持相同的值,而不是数据类型的一致。数据库系统比文件系统有更强的管理控制能力,而不是管理更多的数据。4、下列关于算法的描述中错误的是A、算法强调动态的执行过程,不同于静态的计算公式B、算法必须能在有限个步骤之后终止C、算法设计必须考虑算法的复杂度D、算法的优劣取决于运行算法程序的环境标准答案:D知识点解析:算法的优劣取决自身的运行效率,时间和空间复杂度高低,并不取决于运行算法程序的环境,故选项D错误。5、若各选项中所用变量已正确定义,fun()函数中通过return语句返回一个函数值,下列选项中错误的程序是()。A、main(){…x=fun(2,10);…)floatfun(intamintb){…}B、floatfun(inta,intb){…}main(){…x=fun(id);…}C、floatfun(int,int);main(){…x=fun(inta,intb);…)floatfun(inta,intb){…}D、main(){floatfun(inti,intj);…x=fun(ij);…)floatfun(inta,intb){…)标准答案:A知识点解析:C语言规定,函数必须先定义,后调用(函数的返回值类型为int或char类型除外)。选项A)中,调用的子函数在调用的后面定义,所以不正确。在选项B)、C)中,被调用函数在主调函数之前定义,再在主函数中调用,所以是正确的;选项D)中,在主调函数中先对子函数floatfun(inti,intj)进行了定义,然后进行调用。6、以下正确的字符串常量是A、abc’B、OlympicGamesC、’’’D、’\\\’’标准答案:C知识点解析:字符串常量是由双引号括起来的一串字符。在C语言中,以一个反斜线开头后跟一个特定的字符,用来代表一个特定的ASCⅡ字符。利用两个’\\’表示一个反斜杠,因此选项D的表示无法确认表示几个反斜杠。7、下面函数调用语句含有实参的个数为()。func((exp1,exp2),(exp3,exp4,exp5));A、1B、2C、3D、5标准答案:B知识点解析:本题考查函数调用时的实参形式。这里有一个逗号运算的考查,(a,b)的运算结果为b,因而只有一个值,结合func的调用形式,可以知道实参的个数只有2个。8、某二叉树的前序遍历序列与中序遍历序列相同,均为ABCDEF,则按层次输出(同一层从左到右)的序列为A、ABCDEFB、BCDEFAC、FEDCBAD、DEFABC标准答案:A知识点解析:前序遍历次序:根左右;中序遍历次序:左根右。由定义可以知道:①前序遍历中第一个就是树根结点,即A结点;②在中序遍历中,根结点左边的是左子树集,右边的是右子树集,即BCDEF是根结点A的右子树集合。问题就会转化为:求前序遍历是BCDEF,中序遍历是BCDEF的子树,方法同上。详细推理过程:步骤1:由ABCDEF得出根结点为A,由中序遍历可知:左子树为空,A{BCDEF};步骤2:由BCDEF得出右子树集合的根节点为B,由中序可知:左子树为空,B{CDEF};步骤3:同理,二叉树更新后如下。所以按层次输出(同一层从左到右)的序列为ABCDEF,选项A正确。9、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的()。A、记录B、行C、属性D、元组标准答案:C知识点解析:进行自然连接时要求两个关系具有相同列,即属性。10、以下叙述中正确的是A、在C语言程序设计中,所有函数必须保存在一个源文件中B、在算法设计时,可以把复杂任务分解成一些简单的子任务C、只要包含了三种基本结构的算法就是结构化程序D、结构化程序必须包含所有的三种基本结构,缺一不可标准答案:B知识点解析:模块化设计思想,就是把复杂的任务分成简单的子任务,用函数或者过程描述子任务,C语言中一个程序可以包括多个源文件,每个源文件可以有若干个函数,结构化的程序由顺序结构、循环结构和选择结构三种基本结构组成,不一定全要包括这三种结构,而算法不等于程序。11、以下选项中,合法的一组C语言数值常量是()。A、12.0Xa234.5e0B、028.5e-3-0xfC、.1774e1.50abcD、0x8A10,0003.e5标准答案:A知识点解析:考查整型常量、实型常量。选项B)的"028"错,以0开头表示为八进制整常数,不能出现数字8;选项C)的"4e1.5"错,e后面应为整数,"0abc"错,八进制整常数只能由0~7构成;选项D)的"10,000"错,C语言没有千分号,所以答案选A)。12、以下叙述中正确的是()。A、整型变量可以分为int型、short型、long型和unsigned型四种B、在C程序中的八进制和十六进制,可以是浮点数C、八进制数的开头要使用英文字母o,否则不能与十进制区分开D、英文大写字母X和英文小写字母x都可以作为二进制数字的开头字符标准答案:A知识点解析:八进制和十六进制是对整型常量的描述,不能为浮点数据,选项B)错误;八进制开头以数字0开始,选项C)错误;C语言中没有二进制,0X和0x是十六进制的前缀,选项D)错误;答案选A)。13、关系模型中的关系模式至少应是A、1NFB、2NFC、3NFD、BCNF标准答案:A知识点解析:目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。满足最低要求的范式是第一范式(1NF)。14、以下叙述中错误的是A、用户定义的函数中可以没有return语句B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值C、用户定义的函数中若没有return语句,则应当定义函数为void类型D、函数的return语句中可以没有表达式标准答案:B知识点解析:本题重点考察函数返回值的相关知识,函数的值只能通过return语句返回主调函数,在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明确定义为"空类型",类型说明符为"void"。因此B选项正确。15、正确的结构体类型说明和变量定义是()。A、typedefstructf{intn;charc;}STR;STRt1,t2;B、structSTR;{intn;charC;};STRt1,t2;C、typedefstmctSTR;{intn=0;charc=’A’;}t1,t2;D、struct{intn;charc;}STR;STRt1,t2;标准答案:A知识点解析:定义结构体类型的一般形式为:struct结构体名{成员列表};struct结构体名后不能加“:”号。但定义完之后要在句末加分号,所以选项B、C有误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为“stmctt1,t2;”。选项A为用户自定义类型,其为正确的定义形式。16、以下叙述中正确的是A、charca[3][5]={"A","BB","CCC"};是不合语法的B、字符串数组,是指数组中的每个元素都是一个存放字符串的一维数组C、charca[][5]={"A","BB","CCC"};是不合语法的D、char*ca[3]={"A","BB","CCC"};是不合语法的标准答案:B知识点解析:字符串数组,也就是二维字符数组,其中每个元素为一个字符串,选项B的说法正确。选项A和C)对于ca的定义是正确的。选项D定义一个指针数组,可以保存多个字符串的首地址。17、若有以下程序#includeint*f(int*s,int*t){int*k;if(*s<*t){k=s;s=t;t=k;}returns;}Inain(){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、5,3,5,3,5C、5,3,3,5,5D、3,5,3,5,5标准答案:D知识点解析:本题考查了返回值为指针的函数,函数f的主要功能为第一个参数小于第二个参数,那么交换指针的指向,这对于实参指向的数据时没有影响的。最后返回比较大的元素的地址。主函数中p指向i,q指向j,调用r=f(p,q),返回q的地址,因此*p=3,*q=5,*r=5。18、若有定义语句:inta=3,b=2,c=1;以下选项中错误的赋值表达式是()。A、a=(b=4)=3;B、a=b=c+1;C、a=(b=4)+c;D、a=1+(b=c=4);标准答案:A知识点解析:不能将变量或常量赋给一个表达式,所以A选项中(b=4)=3是错误的。19、与数学表达式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,需要用逻辑与表达式连接。20、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、交C、投影D、并标准答案:A知识点解析:关系R和关系S有公共域,关系T是通过公共域的等值进行连接的结果,符合自然连接,选A。21、有以下程序#include#defineN4voidfun(inta[][N],intb[]){inti;for(i=0;i<N;i++)b[i]=a[i][i]-a[i][N-1-i];}voidmain(){intx[N][N]={{1,2,3,4),{5,6,7,8},{9,10,11,12},{13,14,15,16)),y[N],i;fun(x,y);for(i=0;i<N;i++)printf("%d,",y[i]);printf("\n");}程序运行后的输出结果是A、-12,-3,0,0,B、-3,-1,1,3,C、0,1,2,3,D、-3,-3,-3,-3,标准答案:B知识点解析:fun函数的功能是求出二维数组a中第i行第i个元素与第N-1-i元素的差,赋给b[i]。在主函数中,把实参二维数组x和一维数组y传递给形参a和b,最后输出一维数组y中元素的值。22、以下数组定义中错误的是()。A、intx[2][3]={{1,2},{3,4},{5,6}};B、intx[][3]={0};C、intx[][3]={{1,2,3},{4,5,6}};D、intx[2][3]={1,2,3,4,5,6};标准答案:A知识点解析:二维数组的第一维数据表示行数,第二维数据表示列数,所以x[2][3]中的数据应为两行三列,和定义内容不符,选项A)错误,答案选A)。23、有以下程序#include<stdio.h>main(){inti,s=1;intfun(){staticintx=1;for(i=1;i<=3;i++)x*=2;s*=fun();returnx;}printf("%d\n",s);}程序运行后的输出结果是A、0B、10C、30D、64标准答案:D知识点解析:本题考查了静态局部变量,该局部变量的值在函数调用结束后如果不消失而保留原值。函数fun的功能返回2的乘方,主函数fun函数调用3次,因此第一次s累乘2,第二次累乘4,第三次累乘8,即为2*4*8,值为64。24、有以下程序#includemain(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序运行后的输出结果是()。A、zB、0C、元素ch[5]的地址D、字符y的地址标准答案:A知识点解析:数组名表示该数组的首地址,*pc=ch则将pc指向了字符数组ch的第一个元素的地址,*(ch+i)、ch[i]、pc[i]和*(pc+i)四者等价,所以*(pc+5)表示字符数组ch的第六个元素,即z,答案选A。25、下列关于栈叙述正确的是()。A、栈顶元素最先能被删除B、栈顶元素最后才能被删除C、栈底元素永远不能被删除D、栈底元素最先被删除标准答案:A知识点解析:栈是先进后出的数据结构,所以栈顶元素最后入栈却最先被删除。栈底元素最先入栈却最后被删除。所以选择A)。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、下列与队列结构有关联的是A、函数的递归调用B、数组元素的引用C、多重循环的执行D、先到先服务的作业调度标准答案:D知识点解析:队列中最先插入的元素将最先被删除,最后插入的元素将最后被删除。2、数据模型的三个要素是()。A、外模式、概念模式、内模式B、实体完整性、参照完整性、用户自定义完整性C、数据增加、数据修改、数据查询D、数据结构、数据操作、数据约束标准答案:D知识点解析:数据模型是数据特征的抽象,所描述的内容有三个部分:数据结构、数据操作、数据约束。数据结构主要描述数据的类型、内容、性质以及数据间的联系等。数据操作主要描述在相应数据结构上的操作类型与操作方式。数据约束主要描述数据结构内数据间的语法、语义联系,它们之间的制约与依存关系,以及数据动态变化的规则,以保证数据的正确、有效与相容。3、结构化程序所要求的基本结构不包括A、顺序结构B、GOTO跳转C、选择(分支)结构D、重复(循环)结构标准答案:B知识点解析:结构化程序的基本结构有:顺序结构、选择结构和循环结构,没有GOTO跳转结构。4、在面向对象方法中,不属于“对象”基本特点的是A、一致性B、分类性C、多态性D、标识唯一性标准答案:A知识点解析:对象具有如下特征:标识惟一性、分类性、多态性、封装性、模块独立性。5、有以下程序,程序运行后的输出结果是#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”后,)的值为2,y的值为3,z取逗号表达式的值,为1。6、下列选项中属于面向对象设计方法主要特征的是()。A、继承B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:面向对象设计方法的基本概念有对象、类和实例、消息、继承与多态性,所以答案为A。7、若有以下程序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&&fb==0),a非零同时b==0则执行循环体,否则退出。循环体执行一次,此时b=6,a=6,c=1。8、交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。A、&B、∧C、‖D、~标准答案:B知识点解析:按逻辑位运算的特定作用主要有3点:①用按位与运算将特定位清0或保留特定位;②用按位或运算将特定的位置设置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。9、有以下程序main(){intk=5;while(-k)printf("%d",k-=3);printf("\n");}执行后的输出结果是A、2B、4C、1D、死循环标准答案:C知识点解析:在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出1,此时k的值变为1。程序执行第2次循环时,k自减l变为0,为假,退出while循环语句。所以程序的最后结果为1。10、有以下程序:#include<stdio.h>main(){charch[]=’’uvwxyz’’,*pc;pc=ch;printf(’’%c\n’’,*(pc+5));}程序的运行结果是()。A、zB、0C、元素ch[5]的地址D、字符y的地址标准答案:A知识点解析:语句pc=ch;使得指针变量指向字符数组ch的首地址,即指向字符’u’,则pc+5指向的是字符向后移动5位,指向字符’z’,所以输出的*pc+5的值即为’z’,因此A选项正确。11、有以下程序#includeintf(intx);main(){inta,b=0;for(a=0;a<3;a++){b=b+f(a);putchar(’A’+b);}}intf(intX){returnx*x+1;}A、BCDB、BDIC、ABED、BCF标准答案:B知识点解析:在函数main()中,第一次执行for循环时,b的值等于1,此时输出字母B;第二次执行for循环时,b的值等于3,此时输出字母D:第三次执行for循环时,b的值等于8,此时输出字母I。12、有以下程序#include<stdi0-h>intfuna(inta,intb){retuma+b;}intfunb(inta,intb){returna-b;}intSSS(int(*t)0,intx,intY){return((*t)(x,y));}main(){intx;x=sss(funa,9,3);x+=sss(funb,8,3);printf(’’%dkn’’,x);}程序运行后的输出结果是A、17B、23C、24D、22标准答案:A知识点解析:函数funa的功能计算两个数据的和,funb的功能计算两个数据的差,函数sss中利用指向函数的指针作为函数的参数,可以往调用的时候,根据接收的函数地址来决定调用那一个函数。土函数中调用x=sss(funa,9,3),将funa函数的地址传递给t,因此sss函数成为求两个数据的和12,继续将funb函数地址传给t,求两个数据差为5,和s累加后结果为17。13、有以下程序structA{inta;charb[10];doublec;};voidf(structAt);main(){structAa={1001,"ZhangDa",1098.0};f(a);printf("%d,%s,%6.1f\n.",a.a,a.b,a.c);}voidf(StELlctAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序运行后的输出结果是A、1002,ChangRong,1202.0B、1001,ZhangDa,1098.0C、1001,ChangRong,1098.0D、1002,ZhangDa,1202.0标准答案:B知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),形参t接收实参的数据,在函数f(t)中对结构体变量t的各个成员进行了赋值操作,需要注意的,形参和实参之间是数据传递,因此对形参的操作对实参不产生影响,因此在主函数输出仍然输出变量a的数据14、若有以下程序#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+=12,r=3;第三条if语句c!=3不成立,执行else分支,分支为空语句;第四条if分支d==4成立,执行该if分支语句,r+=4,r=7。15、若变量已正确定义,有以下程序段i=0;doprintf("%d,",i);while(i++);pfintf("%d\n",i);其输出结果是A、0,0B、1,1C、0,1D、程序进入无限循环标准答案:C知识点解析:do…while循环的执行过程如下:①执行do后面的循环体中的语句。②计算while后一对圆括号中表达式的值。当值为非0时,转去执行步骤①;当值为0时,执行步骤③。⑨退出do…while循环。对于本题变量i的初始值等于“0”,接着执行do后面的循环体中的语句,输出变量i的值0。再判断while后面括号中表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,所以再次输出i的值“1”。16、以下错误的定义语句是()。A、intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};B、intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};C、intx[][3]={{0},{1},{1,2,3}};D、intx[][3]={1,2,3,4};标准答案:A知识点解析:考查二维数组的初始化。初始化二维数组的时候可以对其部分元素赋初值,还可以对数组的全部元素赋初值。若全部赋初值,则第一维的元素个数可以不指定,但是第二维元素个数不可以省略,所以答案选A。17、以下叙述中错误的是A、函数的返回值类型不能是结构体类型,只能是简单类型B、只要类型相同,结构体变量之间可以整体赋值C、可以通过指针变量来访问结构体变量的任何成员D、函数可以返回指向结构体变量的指针标准答案:A知识点解析:函数的返回值类型可以是结构体类型。结构体变量之间可以相互复制。18、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、选择B、差C、交D、并标准答案:B知识点解析:关系T是关系R的一部分,并且是关系R去掉R和S相同的元素,符合差操作。19、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为A、’\0’B、0C、NULLD、非0值标准答案:D知识点解析:ANSIC提供的feof函数的功能是判断fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则feof函数的值为1,否则为0,表示文件尚未结束。20、一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是A、一对一B、一对多C、多对多D、多对一标准答案:C知识点解析:因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。21、关于C语言的符号常量,以下叙述中正确的是A、符号常量的符号名是标识符,但必须大写B、符号常量是指在程序中通过宏定义用一个符号名来代表一个常量C、符号常量在整个程序中其值都不能再被重新定义D、符号常量的符号名必须是常量标准答案:B知识点解析:在C语言中,可以用一个标识符来代表一个常量,称为符号常量。这个标识符必须在程序中进行特别的"指定",并符合标识符的命名规则。用作符号常量的标识符通常采用大写字母表示,在主函数中其值不能再被定义。所以选择B选项。22、若有以下程序#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、7C、6D、3标准答案:B知识点解析:else总是和与之最近的上面的if配对,执行第一个if,判断条件不成立,执行elser=1;语句。再执行第二个if语句中的判断条件,成立,左移执行r+=2,r的值为3,再执行第三个if的判断条件,不成立执行第7行else后面的空语句";"。再执行第四个if的判断条件d==4成立,执行r+=4,r的值为7。然后打印输出。23、每所学校都有一名校长,而每个校长只在一所学校任职,则实体学校和实体校长之间的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:A知识点解析:每所学校只有一名校长,每个校长只在一所学校任职,则实体学校和实体校长之间是一对一的联系。24、有下列程序#include<stdio.h>main(){charb[]="happynewyear",k;for(k=0;b[k];k++)printf("%c",b[k]-’a’+’A’);}程序执行后的输出结果是()。A、hAppynewyeArB、HappynewyearC、HAPPYNEWYEARD、HaPPYNEWYEaR标准答案:C知识点解析:程序定义一个字符数组b,并使用字符串“happynewyear”进行初始化,然后通过for循环,遍历字符数组b中的每个字符,然后将b中的字符元素修改为大写字母

温馨提示

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

评论

0/150

提交评论