




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级C语言机试(选择题)模拟试卷37(共9套)(共255题)国家二级C语言机试(选择题)模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、若有说明:typedefstruct{inta;charc;}w;则以下叙述正确的是()。A、编译后系统为w分配5个字节B、编译后系统为w分配6个字节C、编译后系统为w分配58个字节D、编译后系统不为w分配存储空间标准答案:D知识点解析:w是一个自定义类型,而不是变量,故编译后系统不为w分配存储空间。当使用w定义变量时才会为其定义的变量分配存储空间。2、设某二叉树的后序序列为CBA,中序序列为ABC,则该二叉树的前序序列为A、BCAB、CBAC、ABCD、CAB标准答案:C知识点解析:二叉树的前序遍历顺序为首先访问根结点,再依次访问左结点和右结点。中序遍历的顺序为首先访问左结点,然后依次访问根结点和右结点。后序遍历首先遍历左子树,然后遍历右子树,最后访问根结点。根据后序可以很快确定根结点,然后可以查看根在中序中位置,将中序分为左右两部分,左边和右边两颗树,在按照上述方式递推出确定左子树的根和右子树。本题根据后序,可以确定A为根结点;根据B在中序中的位置,可以确定A没有左子树,BC为A的右子树,C为B的右子树。本题的具体二叉树如下:因此,这棵二叉树的前序是ABC,选项C正确。3、对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为A、log2nB、n/2C、nD、n+1标准答案:C知识点解析:在进行顺序查找过程中,如果被查的元素是线性表中的最后一个元素,或者被查元素根本不在线性表中,则为了查找这个元素需要与线性表中的所有元素进行比较,这是顺序查找的最坏情况,需要比较的次数为n次。4、以下选项中,值为1的表达式是A、1一’0’B、’1’-0C、1-’\0’D、’\0’-’0’标准答案:C知识点解析:在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为其对应的ASCII码值再参与整数运算。字符’1’对应的ASCII码值是49,字符’0’对应的ASCII码值是48,字符’\0’是字符串结束标识符NULL,其对应的ASCII码值是0。5、数据库系统的核心是()。A、数据模型B、数据库管理系统C、数据库D、数据库管理员标准答案:B知识点解析:数据库管理系统(DBMS)是数据库的机构,它是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等。所以,数据库管理系统是数据库系统的核心。6、下列排序法中,每经过一次元素的交换会产生新的逆序的是A、快速排序B、冒泡排序C、简单插入排序D、简单选择排序标准答案:A知识点解析:冒泡排序只交换相邻元素,但不是每次移动都产生新的逆序。简单插入排序的元素移动不会产生新的逆序。快速排序每一次交换移动都会产生新的逆序,因为当不会有新的逆序产生时,本轮比较结束。故选项A正确。7、if语句的基本形式是:if(表达式)语句,以下关于’’表达式’’值的叙述中正确的是A、必须是整数值B、必须是正数C、可以是任意合法的数值D、必须是逻辑值标准答案:C知识点解析:在if语句中,表达式可以是任意合法的数值。当其值为非零时,执行if语句,为0时执行else语句。8、若在定义语句: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(“格式控制字符串”,地址列表)”,其中的地址列表应当是存放输入数据变量的地址。9、有以下程序:#include#defineS(x)x*xvoidmain(){intk-5,j=2;prinff(“%d,%d\n”,S(k+j+2),S(+k+2));}程序的运行结果是()。A、21.18B、81,81C、21,21D、18.18标准答案:A知识点解析:带参数的宏的调用格式:宏名(实参表),替换过程是:用宏调用提供的实参字符串,直接替换宏定义命令行中相应形参字符串,非形参字符保持不变。S(k+j+2)被s换成k+j+2*k+j+2,计算时先计算2:I:k,结果为21;s(j+k+2)被s换成j+k+2*j+k+2,计算时先计算2冰j,结果为18。程序的运行结果是21,18。10、十进制整数设为整数类I,则下面属于类I的实例的是A、一518B、0.518C、518E-2D、.518标准答案:A知识点解析:整数的全体构成整数集,整数集是一个数环。在整数系中,零和正整数统称为自然数。-1、-2、-3、…、-n、…(n为非零自然数)为负整数。则正整数、零与负整数构成整数系。整数不包括小数、分数。本题中,选项A是正确的,选项B是小数,选项C是科学计数,也是小数,选项D是小数。11、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。12、以下错误的定义语句是A、intx[4][3]={{1,2,3),{1,2,3},{1,2,3},{1,2,3}};B、intx[][3]={{0),{1},{1,2,3}};C、intx[][3]={1,2,3,4};D、intx[4砌={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};标准答案:D知识点解析:一维数组定义和初始化是允许省略行下标,不允许省略列下标。13、设intx=0,*p;下列赋值语句正确的是()。A、*p=x;B、p=NULL;C、p=x;D、*p=NULL;标准答案:B知识点解析:定义指针变量时,必须将指针变量初始化为NULL(为空),否则,如果不赋给它地址,系统会随机给它分配一个地址.以致出现错误的运算结果。14、下列叙述中正确的是()。A、循环队列是队列的一种链式存储结构B、循环队列是队列的一种顺序存储结构C、循环队列是非线性结构D、循环队列是一种逻辑结构标准答案:B知识点解析:在实际应用中,队列的顺序存储结构一般采用循环队列的形式。15、关于结构体函数的叙述中正确的是()。A、即使是同类型的结构体变量。也不能进行整体赋值B、结构体数组名不能作为实参传给函数C、结构体变量的地址不能作为实参传给函数D、结构体中可以含有指向本结构体的指针成员标准答案:D知识点解析:C语言中的结构体变量包含若干成员,这些成员可以是所有变量类型,甚至可以是正在定义的结构体类型指针。用结构体变量作实参时,取的是“值传递”的方式,将结构体变量所占的内存单元的内容全部顺序传递给形参。形参也必须是同类型的结构体变量。结构体数组作为参数时,采取了“地址传递”的方式,形参须为同类型的结构指针或者形参结构数组。16、以下叙述中正确的是A、当用scanf从键盘输入数据时,每行数据在没按下回车键(Enter键)前,可以任意修改B、花括号对{}只能用来表示函数的开头和结尾,不能用于其他目的C、空语句就是指程序中的空行D、复合语句在语法上包含多条语句,其中不能定义局部变量标准答案:A知识点解析:当使用scanf函数从键盘输入数据时,每行数据在未按F回车键之前,可以任意修改。但按下回车键后,scanf函数即接受了这一行数据,不能再修改。选项A正确,对于选项B,{}还可以表明复合语句的开头结尾,或者循环体的开头结尾等,选项B错误,而空语句为;,不是空行,选项C错误,在复合语句中可以定义变量为局部变量,选项D错误。17、以下程序的输出结果是()。#includemain(){inta=2,b;b=a<<2;printf(’’%d\n’’,b);}A、2B、4C、8D、16标准答案:C知识点解析:表达式a<<2,把a向左移动2位,相当于扩大4倍。即2×2倍。18、有以下程序#include#includevoidfun(chars[][10],intn){chart;intij;for(i=0;is[j][0]){t=s[i][0];s[i][0]=s[j][0];s[j][0]=t;}}main(){charss[5][10]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是A、aaaacc,xyB、bcc,aabccC、xy,aaaaccD、aabcc,bcc标准答案:C知识点解析:函数fun(chars[][10],intn)通过两重for循环语句,比较二维字符数组s[][10]的每个字符串的首字符大小,如果前一个字符串首字符大于后一个字符串的首字符,则交换这两个字符串的首字符。在主函数中,语句fun(ss,5)的作用是对二维字符数组ss[5][10]的5个字符串的首字符进行从小到大的排序,不影响各个字符串另外的字符。所以排序结束后,5个字符串的第一个字符依次变为a、a、b、b和x:最后输出第1个和第4个字符串。19、以下叙述中错误的是A、可以用typedef将已存在的类型用一个新的名字来代表B、可以通过typedef增加新的类型C、用typedef定义新的类型名后,原有类型名仍有效D、用typedef可以为各种类型起别名,但不能为变量起别名标准答案:B知识点解析:C语言允许用typedef说明一利新类型名。typedef类型名标识符:其中“类型名”必须是在此语句之前己定义的类型标识符;“标识符”是一个用户定义标识符,用作新的类型名;typedef语句的作用仅仅是用“标识符”来代表已存在的“类型名”,并未产生新的数据类型,原有类型名依然有效。20、用树型结构表示实体之间联系的模型是A、层次模型B、关系模型C、网状模型D、运算模型标准答案:A知识点解析:层次模型的基本结构是树形结构,这种结构方式在现实世界中很普遍,它们自顶向下、层次分明。21、有以下程序structS{inta,b;}data[2]={10,100,20,200};main(){structSp=data[1];printf(”%dkn”,++(p.a));}程序运行后的输出结果是A、11B、20C、21D、10标准答案:C知识点解析:在题目中定义了结构体s类型的数组变量data,并对其赋初值。在程序中定义了指向结构体s类型的变量p,并把数组data的第二个元素data[1]的值赋给它,所以此时成员变量p.a的值等于20,在输出时分别加1,所以输入结果为选项A。22、下列函数的功能是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,然后再判断字符*b的值是否等于字符串的结束字符(’\0’),当不等于结束字符(’\0’)时,把字符指针变量a,b分别加1,指它们的下一个字符,直到字符串a的结束。这样程序执行的结果就是把字符串a赋给了b所指的存储空间。23、已定义以下函数intfun(int*p){return*p;}fun函数返回值是A、不确定的值B、一个整数C、形参p中存放的值D、形参p的地址值标准答案:B知识点解析:由函数intfun(int*p){retum*p}的定义可知,返回值为整型指针变量p所指向的数据。24、若有以下函数首部intfun(doublex[10],intn)则下面针对此函数的函数声明语句中正确的是A、intfun(double,int);B、intfun(double*x,intn);C、intfun(double*,int*);D、intfun(doublex,int*n);标准答案:C知识点解析:函数说明的一般形式为:类型名函数名(参数类型1,参数类型2,……)。因为函数intfun(doublex[10],int*n)的第1个形式参数是一个双精度型的一维数组,第2个参数是一个整型指针,并返回一个整型值。一维数组的名字表示的是一维数组的地址。25、有以下函数intfun(char*x,char*y){intn=0:while((*x==*y)&&*x!=’\0’){x++;y++;n++;}returnn;)函数的功能是A、查找x和Y所指字符串中是否有’\0’B、统计X和Y所指字符串中最前面连续相同的字符个数C、将v所指字符串赋给x所指存储空间D、统计X和Y所指字符串中相同的字符个数标准答案:B知识点解析:在while循环中的判断表达式为(*x=*y)&&*x!=’\0’,所以只要字符串x与y的当前字符不相等时,循环就结束。26、有以下程序fun(intx,inty)main(){staticintm=0,i=2;{intj=l,m=1,k;i+=m+1;m=i+x+y;returnm;k=fun(j,m);printf("%d,",k);}k=fun(j,m);printf("%d\n",k);}执行后的输出结果是A、5,5B、5,11C、11,11D、11,5标准答案:B知识点解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。27、下面选项中的程序段,没有编译错误的是A、char*sp,s[10];sp="Hello";B、char*sp,s[10];s="Hello";C、charstrl[10]="computer",str2[10];str2=str1;D、charmark[1];mark="PROGRAM";标准答案:A知识点解析:选项B)中数组名为常量,不能赋值,选项C)字符数组之间无法完成赋值操作,选项D)和选项B)相同,无法对数组进行赋值。28、有以下程序#includevoidfun(char*c,intd{*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf("%c,%c\n",b,a);}程序运行后的输出结果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B标准答案:A知识点解析:本题中fun函数的参数传递方式,形参c是传地址,形参d是传值,所以在主函数中,执行fun时,把变量b的地址传给了c,把a的值传递给了d,经过运算,输出的值为b,B。在主函数的输出语句中,输出变量b的值为b,变量a的值为A。29、下面结构体的定义语句中,错误的是A、structord{intx;inty;intz;};structorda;B、structord{intx;inty;intz;}structorda;C、structord{intx;inty;intz;}a;D、struct{intx;inty;intz;)a;标准答案:B知识点解析:在选项B)中,由于在定义完结构体后缺少分号“;”,所以这是一条不完整的语句,因而是错误的。30、有三个关系R、S和T如下:则由关系R和S得到关系T的操作是A、自然连接B、交C、投影D、并标准答案:A知识点解析:关系R和关系S有公共域,关系T是通过公共域的等值进行连接的结果,符合自然连接,选A。31、有以下程序#includemain(){charc[2][5]={"6938","8254"},*p[2];inti,j,s=0;for(i=0;i<2;i++)p[i]=c[i];for(i=0;i<2;i++)for(j=0;p[i][j]>0;j+=2)s=10*s+p[i][j]-’0’;printf("%d\n",s);}程序运行后的输出结果是()。A、6385B、9824C、6982D、9284标准答案:A知识点解析:第一个for循环将数组中每个字符串的首地址赋值给了指针数组p的元素,所以p[i][j]与c[i][j]等价。第二个嵌套for循环中外层循环i从0到1,内层循环j为偶数且从0递增,语句"s=10*s+p[i][j]-?0?;"用一个整数s记录数组c中列下标为偶数的所有数字,并按照其先后顺序放置于整数s的不同位上,所以计算得到的结果为6385,答案选A。32、若有以下程序#include<stdio.h>intk=7,m=5;voidf(int**s){int*t=&k;s=&t;*s=&m;printf("%d,%d,%d,",k,*t,**s);}main(){inti=3,*p=&i,**r=&p;f(r);printf("%d,%d,%d\n",i,*p,**r);}则程序的输出结果是A、7,5,7,3,3,3,B、7,5,7,3,5,7,C、7,5,5,3,3,3,D、7,7,5,3,3,3,标准答案:C知识点解析:本题考查二级指针作为函数的参数,可以通过函数调用来改变主函数中一级指针的指向。主函数中指针变量p指向i,r指向p,调用f函数,形参指针s指向p,流程转到f函数执行,指针变量t指向k,s指向t,此时更改了s的指向,s指向了t,更改了s指向的地址空间内容为m的地址,同时t也指向变量m,因此**s的值为m的值,*t为m的值,k为7。流程返回到主函数,没有对主函数空间的数据和指向作出更改,因此全部为3。33、下面选项中关于位运算的叙述正确的是()。A、位运算的对象只能是整型或字符型数据B、位运算符都需要两个操作数C、左移运算的结果总是原操作数据2倍D、右移运算时,高位总是补0标准答案:A知识点解析:取反运算符"~"为单目运算符,选项B)错误;左移运算的结果总是原操作数据2^n倍,n为"<<"右边移动的位数,选项C)错误;右移运算正数高位补0,负数高位补1,选项D)错误;答案选A)。34、有以下程序#include#includetypedefstruct{charname[10];charsex;intage;}STU;voidfun(STUt){strcpy(,"Tong");t.age++;}main(){STUs[2]={"Hua",’m’,18,"Qin",’f’,19};fun(s[1]);printf("%s,%d,%s,%d\n",s[0].name,s[0].age,s[1].name,s[1].age);}程序运行后的输出结果是()。A、Hua,18,Qin,19B、Hua,18,Tong,20C、Tong,19,Qin,19D、Hua,19,Tong,19标准答案:A知识点解析:结构体变量名作为函数参数是值传递,形参数据的改变不会影响到实参数据,所以函数调用结束后数组s中的数据没有变化,输出结果为选项A)。35、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:二叉树中,度为0的节点数等于度为2的节点数加1,即n2=n0-1,叶子节点即度为0,n0=1,则n2=0,总节点数为12=n0+n1+n2=1+n1+0,则度为1的节点数n1=11,故深度为12,选D。36、有以下程序#includestructSTU{charname[9];charsex;intscore[2];};voidf(structSTUa[]){structSTUb={"Zhao",’m’,85,90};a[1]=b;}main(){structSTUc[2]={{"Qian",’f’,95,92},{"Sun",’m’,98,99}};f(C);printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);}程序运行后输出结果是A、Qian,f,95,92,Sun,m,98,99B、Qian,f,95,92,Zhao,m,85,90C、Zhao,m,85,90,Sun,m,98,99D、Zhao,m,85,90,Qian,f,95,92标准答案:B知识点解析:本题考查把数组名作为函数参数,执行f函数后,结构体数组c的第二个元素被改写,c[1].name为Zhao,选项B正确。37、若有以下程序#includevoidsp(int*a){intb=2;*a=*a*2;printf("%d,",*a);a=&b;*a=*a*2;printf("%d,",*a);}main(){intk=3;sp(&k);printf("%d\n",k);}则程序的输出结果是A、6,12,12B、6,4,3C、6,4,6D、9,4,9标准答案:C知识点解析:首先在主函数中给整型变量k赋值为3,调用sp函数,将变量k的地址作为实参传递给形参指针变量a;在sp函数中,*a=*a*2;即结果为6,通过printf()函数输出。整型变量b的地址赋给指针变量a,再执行*a=*a*2;,即结果为4,通过printf()函数输出。返回主函数,输出k的值6。因此C选项正确。38、以下叙述中正确的是A、语句inta[8]={0};是合法的B、语句inta[]={0};是不合法的,遗漏了数组的大小C、语句chara[2]={"A","B"};是合法的,定义了一个包含两个字符的数组D、语句chara[3];a="AB";是合法的,因为数组有三个字符空间的容量,可以保存两个字符标准答案:A知识点解析:B选项中,如给全部元素赋值,则在数组说明中,可以不给出数组元素的个数;C选项中,chara[2]={"A","B"};不合法,应为chara[2]={’A’,’B’};;D选项中,用字符串方式赋值比用字符逐个赋值要多占1个字节,在该选项中应为3个字节。因此A选项正确。39、sizeof(double)是A、一个整型表达式B、一个双精度型表达式C、一个不合法的表达式D、一种函数调用标准答案:A知识点解析:sizeof是C语言中的一个操作符(operator),不是函数调用,简单的说其作用就是返回一个对象或者类型所占的内存字节数。所以选择A40、有以下程序:#includevoidfun(inta,intb){intt;t=a;a=b;b=t;}main(){intc[10]={1,2,3,4,5,6,7,8,9,0},i;for(i=0;i<10;i+=2)fun(c[i],c[i+1]);for(i=0;i<10;i++)printf("%d,",c[i]);printf("\n");}程序的运行结果是()。A、1,2,3,4,5,6,7,8,9,0,B、2,1,4,3,6,5,8,7,0,9,C、0,9,8,7,6,5,4,3,2,1,D、0,1,2,3,4,5,6,7,8,9,标准答案:A知识点解析:函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化,所以数组c中的元素的值并没有变化,选择A。国家二级C语言机试(选择题)模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、算法的有穷性是指A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法只能被有限的用户使用标准答案:A知识点解析:算法的有穷性,是指算法必须能在有限的时间内做完,即算法必须能在执行有限个步骤之后终止。2、设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A、6B、8C、9D、12标准答案:C知识点解析:R为n元关系,有p个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。3、以下选项中合法的标识符是A、1.1B、11C、11D、1标准答案:C知识点解析:本题考查标识符定义。合法标识符的要求是由下划线、英文大小写字母利数字组成的字符串,且第一个字符必须是字母或下划线。4、冒泡排序在最坏情况下的比较次数是A、n(n+1)/2B、nlog2nC、n(n-1)/2D、n/2标准答案:C知识点解析:对n个结点的线性表采用冒泡排序,在最坏情况下,冒泡排序需要经过n/2遍的从前往后的扫描和rd2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。5、在黑盒测试方法中,设计测试用例的根据是()。A、数据结构B、模块间的逻辑关系C、程序调用规则D、软件要完成的功能标准答案:D知识点解析:黑盒测试方法也称功能测试或数据驱动测试。黑盒测试是对软件已经实现的功能是否满足需求进行测试和验证。它完全不考虑程序内部的逻辑结构和内部特征,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能要求。6、如果定义floata[10],x;,则以下叙述中正确的是()。A、语句a=&x;是非法的B、表达式a+1是非法的C、三个表达式a[1]、*(a+1)、*&a[1]表示的意思完全不同D、表达式*&a[1]是非法的,应该写成*(&(a[1]))标准答案:A知识点解析:数组名表示该数组的首地址,是一个地址常量,不能对它重新赋值,选项A正确。但是可以把数组名看作一个指针常量,则表达式a+1表示的是数组中第二个元素的地址,选项B错误。表达式a[1]、*(a+1)、*&a[1]都指的是数组a中第二个元素的值,选项C错误。[]运算符的优先级高于*、&,取值*和取址&运算符优先级相等,是同一优先级的运算符,运算次序由结合方向所决定,*&a[1]在运算符优先级和结合性上没有问题,并且取值*和取址&运算符互逆,*&a[1]和a[1]等价,相当于求得数组a第二个元素的值,选项D错误。故正确答案为A。7、以下叙述中正确的是A、由&&构成的逻辑表达式与由‖构成的逻辑表达式都有“短路”现象B、C语言的关系表达式:0C、逻辑“非”(即运算符!)的运算级别是最低的D、逻辑“或”(即运算符‖)的运算级别比算术运算要高标准答案:A知识点解析:逻辑表达式的运算比较复杂,有短路现象,也就是首先计算“逻辑与”或者“逻辑或”运算的第一个运算量的值,根据表达式的值决定是否进行第二个量的值的计算。“逻辑与”和“逻辑或”运算低于关系运算和算术运算。但是“逻辑非”运算却高于算术运算。8、表达式a+=a一=a=9的值是()。A、18B、一9C、0D、9标准答案:C知识点解析:首先计算a=9,然后计算a一=9,即a=a一9,结果为0,然后计算a+=0,即a=a+0,所以最终结果为0。9、某带链队列初始状态为front=rear=NULL。经过一系列正常入队与退队操作后,front=10,rear=5。该队列中的元素个数为A、不确定B、5C、4D、6标准答案:A知识点解析:循环队列用数组A[0:m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列的元素个数是(rear-front+m)%m=(5-10+m)%m=(m-5)%m。因为本题中的m值不确定,所以(m-5)%m的值不能确定。所以选项A正确。10、若变量已正确定义,以下选项中非法的表达式是A、a!=4‖’b’B、’a’%4C、’a’=1/2*(x=y=20,x*3)D、’A’+32标准答案:C知识点解析:赋值表达式左边应为变量,选项C中左边为字符常量,因此非法,其余表达式均为合法的表达式。11、以下选项中,没有编译错误的是()。A、charstr3[]={’d’,’e’,’b’,’u’,’g’,’\0’};B、charstrl[5]=“pass”,str2[6];str2=strl:C、charname[10];name=“china”;D、charstr4[];str4=“helloworld”;标准答案:A知识点解析:B选项中,不能直接将字符数组名直接赋值给另一个字符数组名。C选项赋值错误,不能将一个字符串常量赋值给一个字符指针。D选项定义str4时需要定义其长度。故A选项正确。12、有以下程序#includemain(){intx;scanf("%d",&x);if(x<=3);elseif(x!=10)printf("%d\n",x);}程序运行时,输入的值在哪个范围才会有输出结果A、不等于10的整数B、大于3或等于10的整数C、小于3的整数D、大于3且不等10的整数标准答案:D知识点解析:题目中,虽然else和第二个if不在同一行上,但等价于在同一行上,因此,程序的意思是当x大十3且不等于10时打印出来。13、在E-R图中,用来表示实体的图形是A、矩形B、椭圆形C、菱形D、三角形标准答案:A知识点解析:在E一R图中,用矩形表示实体集,在矩形内写上该实体集的名字;用椭圆形表示属性;用菱形(内部写上联系名)表示联系。14、下列说法不正确的是()。A、int*ptr;//指针指向整形数据B、char*ptr;//指针的类型是字符型指针C、int**ptr;//指针的类型是双重指针D、int(*ptr)[3];//是一个指针数组,数组共有三个元素,而三个元素是int型指针标准答案:D知识点解析:int(*ptr)[3]是一个数组指针,指针指向一个有3个int型变量的数组。15、若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是()。A、++i;B、nl=(n2/(n3=2));C、k=i=j;D、a=b+c=2;标准答案:D知识点解析:本题考查赋值表达式。赋值表达式的一般形式是:变量名=表达式。C语言规定,不能给变量表达式赋值。16、数据流图(DFD)中的有向箭头(→)表示A、数据流B、控制流C、输入流D、输出流标准答案:A知识点解析:数据流图(DataFlowDiagram):简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。数据流程图中有以下几种主要元素:→:数据流。数据流是数据在系统内传播的路径,因此由一组成分固定的数据组成;□:数据源或宿(“宿”表示数据的终点)。代表系统之外的实体;○:对数据的加工(处理)。加工是对数据进行处理的单元,它接收一定的数据输入,对其进行处理,并产生输出;:数据存储。表示信息的静态存储。17、优化数据库系统查询性能的索引设计属于数据库设计的()。A、需求分析B、概念设计C、逻辑设计D、物理设计标准答案:D知识点解析:数据库物理设计的主要目标是对数据库内部物理结构作调整并选择合理的存取路径,以提高数据库访问速度及有效利用存储空间,答案选D。18、数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A、编码设计B、测试阶段C、运行阶段D、物理设计标准答案:D知识点解析:数据库设计目前一般采用生命周期法,即把整个数据库应用系统的开发分解成目标独立的四个阶段。它们分别是需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段。19、下列描述中错误的是A、在数据库系统中,数据的物理结构必须与逻辑结构一致B、数据库技术的根本目标是要解决数据的共享问题C、数据库设计是指在已有数据库管理系统的基础上建立数据库D、数据库系统需要操作系统的支持标准答案:A知识点解析:在数据库系统中,物理独立性是指数据的物理结构(包括存储结构、存取方式等)的改变,如存储设备的更换、物理存储的更换、存取方式改变等都不影响数据库的逻辑结构,从而不致引起应用程序的变化。20、有两个关系R和S如下:由关系R通过运算得到关系S,则所使用的运算为A、选择B、投影C、插入D、连接标准答案:B知识点解析:一个关系R通过投影运算后仍为一个关系R′,R′是由R中投影运算所指出的那些域的列所组成的关系。所以题目中关系S是由关系R经过投影运算所得(选择运算主要是对关系R中选择由满足逻辑条件的元组所组成的一个新关系)。21、若有定义语句inta[2][3],*p[3];,则以下语句中正确的是()。A、p=a;B、p[0]=a;C、p[0]=&a[1][2];D、p[1]=&a;标准答案:C知识点解析:A选项错误,因为p是指向一个指针数组,作为数组名,不能指向别的地方。B选项错误,因为p[0]是一个int指针,也就是int*;而a是一个指向指针的指针int**。C选项正确,因为p[0]是一个int*,a[1][2]是int,&a[1][2]是int*,类型吻合。D选项错误,因为a作为数组名,不能取地址,即使能取,p[1]是int*,&a是int***,类型不对。22、以下选项中,值为1的表达式是A、1-’0’B、’1’-0C、1-’\0’D、’\0’-’0’标准答案:C知识点解析:在C程序中,字符量可参与任何整数运算。字符参与运算时,首先要将字符转换为其对应的ASCII码值再参与整数运算。字符“’1’”对应的ASCII码值是49,字符’0’对应的ASCII码值是48,字符“’\0’”是字符串结束标识符NuLL,其对应的ASCII码值是0。23、有以下程序intfun(intx[],intn){staticintsum=0,i;for(i=0;i<n;i++)sum+=x[i];retumsum;}main(){inta[]-{1,2,3,4,5),b[]={6,7,8,9),s=0;s=fun(a,5)+fun(b,4);printf(’’%d\n’’,s);}A、50B、45C、60D、55标准答案:C知识点解析:在函数intfun(intx[],intn)的定义中,变量sum使川rstatic修饰符,这说明了变量sum为一个静态局部变量。由于在整个程序运行期问,静态局部变量在内存中的静态存储区中占据着永久的存储单元。即使退出函数之后,下次再进入该函数时,静态局部变量继续使用原来存储单元中原来的值。函数intfun(intx[]intn)的功能是求出数组各个元素的和。所以在主函数中,调用函数Fun(a,5)后,变量sum=1+2+3+4+5=15,当再次调用Fun(b,4)后,变量sum=15+6+7+8+9=45,所以s=15+45=60。24、设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为()。A、0B、’\0’C、非0值D、NULL标准答案:C知识点解析:本题考查文件的定位。feof函数的用法是从输入流读取数据,如果到达文件末尾(遇文件结束符),eof函数值为非零值,否则为0,所以C选项正确。25、若有定义:inta;floatb;doublec;,程序运行时输入:a=1,b=2,c=3<回车>,能把值1输入给变量a、值2输入给变量b、值3输入给变量c的输入语句是()。A、scanf("a=%d,b=%f,c=%lf",&a,&b,&c);B、scanf("%d%f%lf",&a,&b,&c);C、scanf("a=%d,b=%lf,c=%lf",&a,&b,&c);D、scanf("a=%d,b=%f,c=%f",&a,&b,&c);标准答案:A知识点解析:考查scanf的格式输入。如果程序调试的时候有普通的字符,那么若要程序调试通则需要在scanf的""内原样带有相同的字符,变量a、b、c的数据类型分别为int、float、double,对应的格式控制符分别为%d、%f和%lf,答案选A。26、有以下程序#includetypedefstruct{intb,p;}A;voidf(Ac)/*注意:C是结构变量名*/{intj;c.b+=1;c.p+=2;}main(){i;Aa={1,2);f(a);printf("%d,%dha",a.b,a.p);}程序运行后的输出结果是A、2,4B、1,2C、1,4D、2,3标准答案:B知识点解析:在C语言中,数据只能从实参单向传递给形参,称为“按值”传递。也就是说,当简单变量作为实参时,用户不可能在函数中政变对应实参的值。所以本题中在main()函数f(a)语句中结构体实参a作为值,传递给函数f(Ac)中的形参c:这种值传递的方式不会对实参a产生任何影响,所以结构体实参a的值不会发生变化。27、有以下程序,程序运行后的输出结果是#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。28、有以下程序#includemain()voidfun(char*c,intd){charb=’a’,a=’A’;{*c=*c+1;d=d+1;fun(&b,a);printf("%c,%c\n",b,a);printf("%c,%c,",*c,d);}}程序运行后的输出结果是A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B标准答案:A知识点解析:本题中fun函数的参数传递方式,形参c是传地址,形参d是传值,所以在主函数中,执行fun时,把变量b的地址传给了c,把a的值传递给了d,经过运算,输出的值为b,B。在主函数的输出语句中,输出变量b的值为b,变量a的值为A。29、下列选项中,能够满足“只要字符串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,说明两个字符串相等。30、有以下程序#include<stdio.h>voidmain(){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、3C、5D、2标准答案:D知识点解析:这段程序的功能求出字符串s中字符在小写字符a到z之间字符的个数。在程序中字符串s的值为“012xy”,所以在字符串s中符合要求的字符的个数等于2。31、有下列程序:main(){inti,s=0,t[]={1,2,3,4,5,6,7,8,9};for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是A、20B、45C、36D、25标准答案:D知识点解析:本题在主函数中定义了一维整型数组t[]={1,2,3,4,5,6,7,8,9};然后在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9_25,即变量s的值等于25。32、以下叙述中正确的是A、一条语句只能定义一个数组B、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式C、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元D、在引用数组元素时,下标表达式可以使用浮点数标准答案:C知识点解析:数组的定义格式:类型说明符数组名[整型常量表达式],…;可以同时定义多个类型相同的数组,之间以逗号分隔开,数组的类型表明了数组中元素的数据类型,数组中所有元素的类型相同,数组经过定义以后就可使用,编译程序将对其分配一片连续的存储空间进行连续存储。C语言中只能单个引用数组元素而不能一次引用整个数组。引用格式为:数组名[下标],引用元素时,需要注意下标只能为整型常量或整型表达式。33、设有定义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]。34、有以下程序#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指向的是字符串数组a的第一个字符串“Morning”,p自加1之后,*p指向了字符串数组a的第2个字符串“Afternoon”。35、下面不属于软件需求分析阶段主要工作的是A、需求变更申请B、需求分析C、需求评审D、需求获取标准答案:A知识点解析:需求分析阶段的工作可概括为4个方面:①需求获取。②需求分析。③编写需求规格说明书。④需求审评。36、有以下程序#include<stdio.h>#include<string.h>StructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,"ZhangDa",1098.0};a=f(a);printf("%d,%s,%6.1f\n",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)中对结构体变量a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。37、有以下程序:#includeintf(intx);main(){intn=1,m;m=f(f(f(n)));printf("%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。38、若有以下程序#includemain(){inti,j=0;chara[]="Howareyou!";for(i=0;a[i];i++)if(a[i]!=’’)a[j++]=a[i];a[j]=’\0’;printf("%s\n",a);}则程序的输出结果是A、Hay!B、HowareyouC、Howareyou!D、Howareyou!标准答案:C知识点解析:主函数中首先定义字符数组a[]="Howareyou!";执行for循环语句,语句if(a[i]!=’’)a[j++]=a[i];其功能是将字符数组中的空格去掉。因此C选项正确。39、以下叙述中正确的是A、语句inta[4][3]={{1,2},{4,5}};是错误的初始化形式B、语句inta[4][3]={1,2,4,5};是错误的初始化形式C、语句inta[][3]={1,2,4,5};是错误的初始化形式D、在逻辑上,可以把二维数组看成是一个具有行和列的表格或矩阵标准答案:D知识点解析:二维数组在初始化时,可以省略第1维,但是不可以省略第2维。可以为部分数组元素初始化。B选项、C选项和A选项内的初始化都没有错误。因此D选项正确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语言机试(选择题)模拟试卷第3套一、选择题(本题共25题,每题1.0分,共25分。)1、下列描述中正确的是A、一个逻辑数据结构只能有一种存储结构B、数据的逻辑结构属于线性结构,存储结构属于非线性结构C、一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率D、一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率标准答案:D知识点解析:数据的逻辑结构是指数据集合中各数据元素之间所固有的逻辑关系;数据的存储结构是在对数据进行处理时,各数据元素在计算机中的存储关系。数据的存储结构是指数据的逻辑结构在计算机中的表示,一种逻辑结构可以表示成多种存储结构;而采用不同的存储结构,其数据处理的效率是不同的。2、某二叉树共有12个结点,其中叶子结点只有1个。则该二叉树的深度为(根结点在第1层)A、3B、6C、8D、12标准答案:D知识点解析:根据二叉树的性质,度为0的结点(即叶子结点)总是比度为2的结点多一个。题目中的二叉树的叶子结点为1,因此度为2的结点的数目为0,故该二叉树为12层,每层只有一个结点。3、下面对软件测试描述错误的是()。A、严格执行测试计划,排除测试的随意性B、随机地选取测试数据C、软件测试的目的是发现错误D、软件测试是保证软件质量的重要手段标准答案:B知识点解析:软件测试的准则如下:①所有测试都应追溯到需求。②严格执行测试计划,排除测试的随意性。③充分注意测试中的群集现象。④程序员应避免检查自己的程序。⑤穷举测试不可能。⑥妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便。4、设有定义:“longx=123450L;”,则以下能够正确输出变量x的是()。A、printf("x=%d\n",x);B、printf("x=%id\n",x);C、printf("x=%dL\n",x);D、printf("x=%ld\n",x);标准答案:D知识点解析:C语言规定,输出long型数值的格式符为%ld。5、软件详细设计产生的图如下,该图是A、N-S图B、PAD图C、程序流程图D、E-R图标准答案:C知识点解析:本题考查程序流程图的概念,流程图直观地描述了程序的具体步骤。6、若有以下程序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。7、有以下程序:#include<stdio.h>#defineN3voidfun(inta[][N],intb[]){inti,j;for(i=0;i<=2;i++){intmax=a[i][0];for(j=i;j<=2;j++)if(max<a[i][j])max=a[i][j];b[i]=max;}}main(){intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);for(i=0;i<=2;i++){printf(″%d,″,y[i]);}printf(″\n″);}程序运行后的输出结果是()。A、2,4,8,B、3,6,9,C、3,5,7,D、1,3,5,标准答案:B知识点解析:fun函数功能是把数组a的每一行的最大值赋给b,a的第一行的最大值是3,第二行的最大值是6,第三行的最大值是9,所以答案是3,6,9,。8、以下选项中合法的标识符是()。A、_11B、1-1C、1_1D、1__标准答案:A知识点解析:C语言规定,标识符由字母(A~Z,a~z)、数字(0~9)或者下划线(_)组成,并且第一个字符必须为字母或者下划线,答案选A。9、设有定义:intx=2;以下表达式中,值不为6的是A、2*x,x+=2B、x++,2*xC、x*=(1+x)D、x*=x+1标准答案:A知识点解析:本题考查逗号表达式。逗号表达式的求解过程是:先求解表达式1,再求解表达式2,整个逗号表达式的值是表达式2的值,因此,选项A)中值为4;选项B)中,值为6。选项C)中x*=x+1等价于x=x*(x+1),所以等于6;选项D)与选项C)等价,结果也为6。10、设有定义: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。11、以下关于宏的叙述中正确的是A、宏定义必须位于源程序中所有语句之前B、宏名必须用大写字母表示C、宏调用比函数调用耗费时间D、宏替换没有数据类型限制标准答案:D知识点解析:本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏替换两类。使用宏时应注意以下几点:①宏定义仪仪是符号替换,不是赋值语句,因此不做语法检查;②为了区别程序中其他的标识符,宏名的定义通常用大写字母,但不是必须用大写:③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。12、以下叙述中正确的是A、不能用字符串常量对字符数组名进行整体赋值操作B、字符串常量’’Hello’’会被隐含处理成一个无名字符型数组,它有5个元素C、charstr[7]=’’string!’’;在语法上是合法的,运行也是安全的D、char*str;str=’’Hello’’;与charstr[];str=’’Hello’’;效果是一样的标准答案:A知识点解析:字符数组仅仅可以采用定义时初始化以及输入得到数据,在程序其他部分不允许对其进行赋值。字符串常量中除了实际字符之外还有结束标志,选项B错误,而选项C中,没有空间存放字符串结束标志,因此运行是不安全的。选项D中第一个str为指针,可以赋值,而后面的为数组,在程序中赋值出错。13、程序段:intx=12;doubley=3.141593;printf("%d%8.6f",x,y);的输出结果是A、123.141593B、123.141593C、12,3.141593D、123.1415930标准答案:A知识点解析:本题考查格式化输出函数printf。在printf函数调用里面首先输入整型变量x的值12,然后按照“%8.6f”格式输出double类型变量y的值,“%8.6f”表示输出8位,小数点后输出6位。14、设有定义:doublea,b,c;若要求通过输入分别给a、b、c输入1、2、3,输入形式如下(注:此处□代表一个空格)□□1.0□□2.0□□3.0则能进行正确输入的语句是A、scanf("%1f%1f%1f’,a,b,c);B、scanf("%f%f%f’,&a,&b,&c);C、scanf("%1f%1f%1f’,&a,&b,&c);D、scanf("%5.11f%5.11f%5.1f",&a,&b,&c);标准答案:C知识点解析:输入格式scanf(格式控制,输入项1,输入项2,…),其中在scanf。函数的格式字符前可以加入一个正整数指定输入数据所占的宽度,但不可以用实数指定小数位的宽度。输入double型数据,格式控制必须用%1f。(或%1e)。否则。数据不能正确输入。由于输入是一个字符流,scanf函数从这个字符流中按照格式控制指定的格式解析出相应数据,送到指定地址的变量中。15、在数据库设计中,将E-R图转换成关系数据模型的过程属于A、逻辑设计阶段B、需求分析阶段C、概念设计阶段D、物理设计阶段标准答案:A知识点解析:数据库的设计阶段包括需要分析、概念设计、逻辑设计和物理设计,其中将E-R图转换成关系数据模型的过程属于逻辑设计阶段。16、以下结构体类型说明和变量定义中正确的是A、typedefstruct{intn;charc;}REC;RECt1,t2;B、structREC;{intn;charc;};RECt1,t2;C、typedefstructREC;{intn=0;charc=’A’;}t1,t2;D、struct{intn;charc;}REC;RECt1,t2;标准答案:A知识点解析:定义结构体类型的一般形式为:struct结构体名{成员列:表};struct结构体名后不能加“;”号,所以选项B)、C)错误,选项D)中定义无名称的结构体类型同时定义结构体变量形式应为structt1,t2;选项A)为用户自定义类型,其为正确的定义形式。17、有三个关系R,S和T如下图所示:则由关系R和S得到关系T的运算是A、并B、投影C、交D、选择标准答案:A知识点解析:关系并运算是指,设有两个关系R和S,它们具有相同的结构。R和S的并是由属于R或属于S的元组组成的集合。所以对于本题关系R和S具有相同的结构,并且关系T的元组是由属于R或属于S的元组组成的集合。因此选项A正确。18、以下关于函数的叙述中正确的是A、每个函数都可以被其他函数调用(包括main函数)B、每个函数都可以被单独编译C、每个函数都可以单独运行D、在一个函数内部可以定义另一个函数标准答案:B知识点解析:本题主要考查函数的定义和使用。选项A)错误,main函数可以调用其他函数,但是其他函数不能调用main函数;选项B)正确;选项C)错误,只有main函数可以单独运行,其他函数只能被调用;选项D)错误,C语言中不能在函数内部定义函数。19、若有以下程序typedefstructstu{charname[10],gender;intscore;}STU;voidf(STUa,STUb){b=a:printff("%s,%c,%d,",b.name,b.gender,b.score);}main(){STUa={"Zhao",’m’,290},b=["Qian",’f’,350};f(a,b);printf("%s,%c,%d\n",b.name,b.gender,b.score);}则程序的输出结果是A、Zhao,m,290,Zhao,m,290B、Zhao,m,290,Qian,f,350C、Qian,f,i350,Qian,f,350D、Zhao,m,290,Zhao,f,350标准答案:B知识点解析:函数f(STUa,STUb)的主要功能是为把结构体变量a的值存放到b中,然后输出b中各个成员的值。主函数中调用函数f(a,b),输出赋值以后b的数据,实际为a{"Zhao",’m’,290}的数据,函数调用结束,形参a和b撤销,流程到主函数输出b{"Qian",’f’,350}的数据。20、有以下程序main(){inta=1,b=2,c=3,d=0;if(a==1&&b++==2)if(b!=2||c--!=3)printf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);elseprintf("%d,%d,%d\n",a,b,c);}程序运行后的输出结果是A、1,3,2B、1,2,3C、1,3,3D、3,2,1标准答案:C知识点解析:a,b,c,d初始值分别为1,2,3,0。嵌套的if语句中,第一个if中,表达式a==1&&b++==2值为1,执行嵌套的if分支,此时b=3,b!=2成立,由于运算符是||,不管后面一个表达式的值是不是1,其整个表达式的值总是1,c--!=3表达式不执行,最后打印出a,b,c的值是1,3,3。21、有以下程序#includevoidfun(char*c,intd){*c=*c+1;d=d+1;printf("%c,%c,",*c,d);}main(){charb=’a’,a=’A’;fun(&b,a);printf("%c,%c\n",b,a);}程序运行后的输出结果是()。A、b,B,b,AB、b,B,B,AC、a,B,B,aD、a,B,a,B标准答案:A知识点解析:计算字符常量时一般使用其ASCII码进行运算。’a’+1=’b’,fun()中的第一个参数为地址传参,形参的变化会影响实参的变化,所以两次输出的b值都为字符’b’;第二个参数为值传参,形参变化不会影响实参,所以在函数fun()体内输出字符’B’,函数fun()体外输出结果为字符’A’,所以答案选A。22、有下列程序:#includemain(){FILE*fp;inta[10]={1,2,3},i,n;fp=fopen("d1.dat","w");for(i=0;i<3;i++)fprintf(fp,"%d",a[i]);fprintf(fp,"\n");fclose(fp);fp=open("d1.dat","r");fscanf(fp,"%d",&n);fclose(fp);printf("%d\n",n);}程序的运行结果是A、12300B、123C、1D、321标准答案:B知识点解析:本题考查以读和写的方式打开文件对文件内容操作的不同,fp=fopen("d1.dat","w");以可写的方式为输出建立新文本文件,调用printf,输出“123”,fp=fopen("d1,dat","r");以只读的方式打开文本文件,不能对文件内容进行操作。23、有以下程序#includemain(){inti,x[3][3]={1,2,3,4,5,6,7,8,9};for(i=0;i<3;i++)printf("%d",x[i][2-i]);printf("\n");}程序的输出结果是A、1、5、0B、3、5、7C、1、4、7D、3、6、9标准答案:B知识点解析:程序首先初始化二维数组x[3][3],然后通过3次for循环,输出x[0][2]、x[1][1]和x[2][0]的值,即3、5、7。因此B选项正确。24、在数据管理技术发展的三个阶段中,数据共享最好的是()。A、人工管理阶段B、文件系统阶段C、数据库系统阶段D、三个阶段相同标准答案:C知识点解析:数据管理发展至今已经历了三个阶段:人工管理阶段、文件系统阶段和数据库系统阶段。其中最后一个阶段结构简单,使用方便逻辑性强物理性少,在各方面的表现都最好,一直占据数据库领域的主导地位,所以选择C)。25、下列条件语句中,输出结果与其他语句不同的是A、if(a!=0)printf("%d\n",x);elseprintf("%d\n",y);B、if(a==0)printf("%d\n",y);elseprintf("%d\n",x);C、if(a==0)printf("%d\n",x);elseprintf("%d\n",y);D、if(a)printf("%d\n",x);elseprintf("%d\n",y);标准答案:C知识点解析:A,B,D选项的含义均为:a的值如果为0时打印y的值,否则打印x的值。但是C选项的含义是:a的值为0时打印x的值,不为0时打印y的值,与其他选项正好相反。国家二级C语言机试(选择题)模拟试卷第4套一、选择题(本题共25题,每题1.0分,共25分。)1、以下叙述中错误的是A、C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件B、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中C、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令D、C语言源程序经编译后生成后缀为.obj的目标程序标准答案:C知识点解析:C语言中的非执行语句例如宏定义命令,在预编译之后替换到代码中,该命令本身也就不存在了,不会转换成二进制的机器指令。由高级语言编写的程序称为“源程序”,把由二进制代码表示的程序称为“目标程序”。C语言编写的源程序就是一ASCII的形式存放在文本文件中的。C源程序经过C编译程序编译之后生成一个后缀为.obj的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件,把此.obj文件与c语言提供的各种库函数连接起采生成一个后缀为.EXE的可执行文件。2、下列叙述中正确的是A、栈是一种先进先出的线性表B、队列是一种后进先出的线性表C、栈与队列都是非线性结构D、栈与队列都是线性结构标准答案:D知识点解析:栈是先进后出,队列是先进先出。栈和队列都是一种线性表,属于线性结构。3、某二叉树中有n个度为2的结点,则该二叉树中的叶子结点数为A、n+1B、n-1C、2nD、n/2标准答案:A知识点解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。所以该二叉树的叶子结点数等于n+1。4、某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是A、10B、8C、6D、4标准答案:C知识点解析:根据二叉树的性质,在任意二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。5、以下选项中能表示合法常量的是A、’\007’’B、1.5E2.0C、’\’D、1.2标准答案:A知识点解析:选项D,1200中间不能有逗号,否则编译时会认为是1或出错。选项B,2.0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学校团建活动方案
- 管理学家介绍
- 关于元旦活动策划方案2025年
- 莫兰迪配色方案总结与应用
- 线粒体脑病的护理常规
- 整合网络营销与传统营销
- 联想神州数码品牌形象策略书样本
- 河北省石家庄市名校2025年中考化学试题模拟题及解析(浙江卷)含解析
- 山东石油化工学院《生物医药品》2023-2024学年第二学期期末试卷
- 漳州城市职业学院《英语演讲与辩论理解当代中国》2023-2024学年第二学期期末试卷
- 2025年度股权合作协议书新版:跨境电商平台股权合作协议
- GB/T 33136-2024信息技术服务数据中心服务能力成熟度模型
- 《保护地球爱护家园》课件
- 雾化吸入疗法合理用药专家共识(2024版)解读
- 2024年度产学研合作与科研奖励协议3篇
- 《阿尔茨海默病康复》课件
- 电力工程线路交叉跨越施工主要工序及特殊工序施工方法
- 【MOOC】软件度量及应用-中南大学 中国大学慕课MOOC答案
- 24秋国家开放大学《儿童发展问题的咨询与辅导》周测验参考答案
- 2025届江苏省苏州市重点中学高三第二次模拟考试英语试卷含解析
- 精神病学第九版
评论
0/150
提交评论