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

下载本文档

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

文档简介

国家二级(C语言)机试模拟试卷49(共9套)(共305题)国家二级(C语言)机试模拟试卷第1套一、选择题(本题共40题,每题1.0分,共40分。)1、有以下程序:#include<stdio.h>main(){floata,b,C,t;a=3;b=7;c=1;if(a>b){t=a;a=b.b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf("%5.2f,%5.2f,%5.2f",a,b,c);}程序运行后的输出结果是(其中口代表空格)()。A、口口3.00,口口1.00,口口7.00B、口口3.00,口口7.00,口口1.00C、口口1.00,口口3.00,口口7.00D、口口7.00,口口3.00,口口1.00标准答案:C知识点解析:本题考查if语句。该题包含了3个if语句,每个if语句后的{}都不可省略,因为每个{}中都包含了多条语句。首先判断条件a>b,由于3小于7,表达式a>b不成立,因此不执行{t=a;a=b;b=t;};然后判断条件a>c,由于3大于1,因此表达式a>c成立,则执行{t=a;a=c;c=t;},该表达式语句是用来交换a和c的值,执行完后a为1,c为3;然后判断条件b>c,由于7大于c中的3,因此b>c成立,则执行{t=b.b=c;c=t;},过程同上,执行后b为3,c为7。printf语句用来输出a,b,c中的值,并且要求输出的每个数据宽度为5个空格,小数部分保留2位,数据右对齐。故最后输出为C选项中所示结果。2、若有定义语句:chars[10]="1234567\0\0";,则strlen(s)的值是()。A、7B、8C、9D、10标准答案:A知识点解析:C语言规定以字符’\0’作为字符串结束的标识符。strlen函数返回的是字符串的长度,“1234567\0\0”与“1234567”等效,所以字符串长度是7。3、在数据库系统的组织结构中,下列()映射把用户数据库与概念数据库联系了起来。A、外模式/模式B、内模式/外模式C、模式/内模式D、内模式/模式标准答案:A知识点解析:数据库有两层映像,即外模式/模式和模式/内模式映像。模式/内模式映像定义数据库全局逻辑结构与存储结构之间的对应关系。4、有三个关系R、S和T如下:由关系R和S通过运算得到关系T,则所使用的运算为()。A、并B、自然连接C、笛卡尔积D、交标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D。5、下列不合法的用户标识符是()。A、j2_KEYB、DoubleC、4dD、_8_标准答案:C知识点解析:在C语言程序中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。6、有以下程序:#include<stdio.h>#include<stdlib.h>intfun(intn){int*p;p=(int*)malloc(sizeof(int));*p=n;return*p;}main(){inta;a=fun(10);pfinff("%d\n",a+fun(10));}程序运行后的输出结果是()。A、0B、10C、20D、出错标准答案:C知识点解析:malloc(sizeof(int))的作用是开辟一个长度为sizcof(int)存储空间,并通过强制类型转换(int*)将此存储空间的地址赋给了一个整型的指针变量p。然后执行语句*p=n,使得*p的值为10,并通过return返回此值,即a的值为10。然后在主函数中输出a+fun(10)=10+10=20。7、有以下程序#includetypedefstruct{intb,p;}A;voidf(Ac)/*注意:c是结构变量名*/{intj;c.b+=1;c.p+=2;}main(){inti;Aa={1,2};f(a);printf("%d,%d\n",a.b,a.p);}程序运行后的输出结果是()。A、1,2B、2,4C、1,4D、2,3标准答案:A知识点解析:考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为1,2,答案选A)。8、有以下程序:#include<stdio.h>main(){FILE*fp;intk,n,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w");fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);felose(fp);fp=fopen("d2.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是()。A、12B、14C、1234D、123456标准答案:D知识点解析:fprintf()函数向文本文件输出数据,将输出的内容按格式输出到硬盘的文本文件中。执行两次fprintf后,文件中的内容为“123456”,所以D选项正确。9、若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的swich语句是()。A、switch(a+b){case1:printf("*\n"):case2+1:printf("**\n");}B、switch((int)x);{case1:printf("*\n");ease2:printf("**\n");}C、swich(x){case1.0:printf("*\n");ease2.0:printf("*\n");}D、switch(a+b){ease1:prinff("*\n");easec:printf("**\n");}标准答案:A知识点解析:B选项中switch((int)x);语句中不应该有最后的分号。switch(expr1),中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C错误。case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。10、以下函数实现按每行8个输出w所指数组中的数据:#include<stdio.h>voidfun(int*w,intn){inti;for(i=0;i<n;i++){______________printf("%d",w[i]);}printf("\n");}在横线处瘦填入的话句是()。A、if(i/8==0)printf("\n");B、if(i/8==0)continue;C、if(i%8==0)printf("\n");D、if(i%8==0)continue;标准答案:C知识点解析:要按照每行8个输出数据的话,横线处语句的功能应该为:当i是8的倍数时(即i%8==0),输出一个换行符。因此C选项正确。11、下面程序运行后的输出结果是()。#includemain(){inta[5]={1,0,4,2,0},b[5]={1,2,3,4,5},i,s=0;for(i=0;i<5;i++)s=s+b[a[i]];printf("%d\n",s);}A、12B、15C、11D、8标准答案:A知识点解析:这道题目是计算一维数组b中某些元素的和。这些元素的下标值是一维数组a中元素值。s=0+b[1]+b[0]+b[4]+b[2]+b[0]=2+1+5+3+1=12。12、以下程序:#includevoidfun(intx){if(x/2>1)fun(x/2);printf("%d",x);}main(){fun(7);printf(”\n”);}程序运行后的结果是()。A、137B、731C、73D、37标准答案:D知识点解析:函数fun是递归函数,递归终止条件是x小于等于3,当大于3时递归调用fun(x/2)。第一次循环x/2=3,调用fun(3),fun(3),x/2=1,跳出if循环,执行输出x=3,然后回到第一次循环,执行if循环的语句,输出x=7。13、下列叙述中,不属于软件需求规格说明书的作用的是()。A、便于用户,开发人员进行理解和交流B、反映出用户问题的结构,可以作为软件开发工作的基础和依据C、作为确认测试和验收的依据D、便于开发人员进行需求分析标准答案:D知识点解析:软件需求规格说明书有以下几个方面的作用:①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。14、以下选项中,能够正确利用随机函数rand(),产生一个英文字母的表达式是()。A、rand()%2==0?rand()%’A’:rand()%’a’B、rand()%26+’A’||rand()%26+’a’C、rand()%26+’A’&&rand()%26+’a’D、rand()%2==0?rand()%26+’A’:rand()%26+’a’标准答案:D知识点解析:rand()函数是产生随机数的函数,它可以生成0~RAND_MAx之间的一个随机数,其中RAND_MAx是stdlib.h中定义的一个整数。通常如果我们需要随机0~N-1之间的一个随机数,需要使用rand()的结果对N求模即可。选项A中,rand()%2只有两个值0或l,所以当rand()%2的结果为0时,整个表达式的值是rand()%’A’,这里’A’要转换成ASCII码值65,所以结果为0~64之间的一个随机数,当rand()%2的结果为1时,整个表达式的值是rand()%’a’,’a’的ASCIl码值为97,所以结果是0~96之间的一个随机数,可见选项A错误;逻辑或运算符||或逻辑与运算符&&的结果都只能是0或非0,所以选项B、C也是错误的;选项D中,如果rand()%2的结果为0,那么整个表达式的值为rand()%26+’A’,0~25之间任一个数与’A’的和都是一个大写字母;如果rand()%2的值为1,整个表达式的值为rand()%26+’a’,0~25之间任一个数与’a’的和都是一个小写字母,所以选项D正确;本题答案为D。15、以下关于typedef的叙述错误的是()。A、用typedef可以增加新类型B、typedef只是将已存在的类型用一个新的名字来代替C、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D、用typedef为类型说明一个新名,通常可以增加程序的可读性标准答案:A知识点解析:typedef并不是增加了新类型,而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强程序的可移植性。所以A选项错误。16、以下关于typedef的叙述错误的是()。A、用typedef可以增加新类型B、typedef只是将已存在的类型用一个新的名字来代替C、用typedef可以为各种类型说明一个新名,但不能用来为变量说明一个新名D、用typedef为类型说明一个新名,通常可以增加程序的可读性标准答案:A知识点解析:typedef并不是增加了新类型。而是用一个新名字替代已存在的类型,不能为变量说明一个新名,使用typedef可以增强程序的可移植性。所以A选项错误。17、若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是()。A、++i;B、n1=(n2/(n3=2));C、k=i=j;D、a=b+c=2;标准答案:D知识点解析:本题考查赋值表达式。赋值表达式的一般形式是:变量名:表达式。C语言规定,不能给变量表达式赋值。18、以下描述中,不是线性表顺序存储结构特征的是()。A、可随机访问B、需要连续的存储空间C、不便于插入和删除D、逻辑相邻的数据物理位置上不相邻标准答案:D知识点解析:线性表的顺序存储是用一片连续的空间来存放数据元素,其特点是逻辑上相邻的元素在物理位置上也相邻。数据元素之间逻辑上的先后关系自动隐含在物理位置的相邻元素之中,因此不需要另外开辟空间来保存元素之间的关系。19、下面的for语句的循环次数为()。for(x=1,y=0;(y!=19)&&(x<6);x++);A、是无限循环B、循环次数不定C、最多执行6次D、最多执行5次标准答案:D知识点解析:本题考查for循环。只考虑x的取值变化,x从1取到5,可以循环5次,但是并不知道y是如何变化的,有可能出现y=19提前跳出循环的情况,所以是最多执行了5次。20、有如下程序段: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。21、数据库系统的三级模式不包括()。A、概念模式B、内模式C、外模式D、数据模式标准答案:D知识点解析:数据库系统的三级模式是慨念模式、外模式和内模式,所以选择D。22、有关retum语句说法不正确的是()。A、系统默认的返回值类型为整型,故当函数的返回值为int型时,在函数定义时,返回值的类型说明可以省略。B、当函数有返回值时,凡是允许表达式出现的地方,都可以调用该函数。C、当函数没有返回值时,函数的返回值类型可以说明为void型,它表示“无类型”或“空类型”。D、函数的返回值类型必须与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型。标准答案:D知识点解析:函数的返回值类型一般与return语句中的表达式值的类型一致,但C语言也允许不同;这时,系统以函数定义时的返回值类型说明为准,并自动地将return语句中表达式的值转换为函数的返回值类型。23、设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是A、++kB、k+=1C、k++D、k+1标准答案:C知识点解析:#NAME?24、若有以下定义和语句:#includecharsl[10]="abcd!",*s2="\n123\\";pfintf("%d%d\n",strlen(s1),strlen(s2));则输出结果是()。A、PrphshnB、ProhsbnC、ProgsbnD、Program标准答案:C知识点解析:strlen函数的功能是返回字符串的长度,求字符串长度时,遇到结束标识“\0”为止,但是长度不包括结束标识。字符数组s1的后5个元素没有赋值,都为“\0”,即“abcd!”后为“\0”。所以strlen(s1)的值为5。字符指针s2所指向的字符串中,“\n”为转义字符换行符,表示1个字符;“\\”也为转义字符,代表“\”,也是1个字符,其后为字符串结束标识“\0”;所以strlen(s2)的值也为5。因此c选项正确。25、以下程序段中,与语句:k=a>b?(b>c?1:0):0;功能相同的是()。A、if((a>b)||(b>c))k=1;elsek=0;B、if((a>b)&&(b>c))k=1;elsek=0;C、if(a<=b)k=0;elseif(b<=c)k=1;D、if(a>b)k=1;elseif(b>c)k=1;elsek=0;标准答案:B知识点解析:条件表达式的含义是,如果表达式1成立,结果为表达式2的值,如果不成立为表达式3的值。所以题干中k的值这样取值:如果a>b且b>c,k值结果为1,如果a>b,且b<c则值为0。如果a<b,k值为0。也就是只要a>b与b>c中只要有一个条件不成立,k的值就为0,所以选择B选项。26、有以下程序:#includevoidfun(inta){if(a>1)fun(a一1);printf(“%d”,a);}main(){intq=5;fun(q);prinff(“\n”);}执行后的输出结果是()。A、12345B、54321C、012345D、543210标准答案:A知识点解析:本题考查递归函数。函数fun(a)在a>1时,递归调用。fun(a—1),否则输出a的值,由于prinff()函数在递归调用之后,所以直到递归函数运行完后再执行printf()函数,所以fun(5)中首先递归调用fun(4),再递归调用fun(3)、fun(2),fun(1),最后当a=1时,输出1,接着输出2、3、4、5,所以输出结果为:12345,答案为A。27、医院里有不同的科室,每名医生分属不同科室,则实体科室与实体医生问的联系是()。A、一对一B、一对多C、多对一D、多对多标准答案:B知识点解析:实体集之间通过联系来建立联接关系分为3类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。每个科室有多名医生,但每个医生只能在一个科室里,故实体科室和实体医生之间的联系是一对多,因此B选项正确。28、以下选项中符合C语言语法的是()。A、x+1=yB、x++,y=x--C、x=x+10=x+yD、float(x)/10标准答案:B知识点解析:A和C选项中,不能给表达式赋值,所以错;D中进行强制类型转换的写法有误。应该是(flaot)x;B选项是一个逗号表达式,其中又包含一个赋值表达式,语法正确。29、关于C语言程序设计,以下叙述中不正确的是()。A、C语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令B、C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C、用C语言编写的程序称为源程序,它以ASCⅡ代码形式存放在一个文本文件中D、C语言源程序经编译后生成后缀为.obj的目标程序标准答案:A知识点解析:C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以A错误。由C语言构成的指令序列称C源程序,C源程序经过C语言编译程序编译之后生成一个后缀为.obj的二进制文件(称为目标文件);最后要由“连接程序”把此.obi文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。30、以下函数findmin拟实现在数组中查找最小值并作为函数值返回,但程序中有错导致不能实现预定功能。#defineMAx2147483647intfindmin(intx[],intn)finti,min;min=MAx;for(i=0;i<n;i++){iffmin<x[i])min=x[i];}returnmin;}造成错误的原因是()。A、定义语句inti,min;中min未赋初值B、赋值语句min=MAN;中,不应给min赋MAx值C、语句if(min<x[i])min=x[i];中判断条件设置错误D、赋值语句min=MAx;放错了位置标准答案:D知识点解析:在C语言中,一个整型变量占用4个字节的内存单元,并按整型数的存储方式存放数据,允许存放的数值范围是:-2147483648~2147483647。所以在这个题目中定义的宏变量MAX的值就是整数范围内最大的数值,因而对于任意一个整数来说,其值都比MAX小,而判断最小值,是当找到的数比min小时,才交换。31、有如下程序#include<stdio.h>main(){inti,data;scanf("%d",&data);for(i=0;i<5;i++){if(i>data)break;printf("%d,",i);}printf("\n");}程序运行时,从键盘输入:3<回车>后,程序输出结果为A、3,4,B、0,1,C、3,4,5,D、0,1,2,3标准答案:D知识点解析:break语句作用是结束整个循环过程,不再判断执行循环的条件是否成立,且在嵌套循环中,其只跳出最内层的一层循环。本题执行过程为:输入3,则data=3;执行for循环,在i<=3时,if条件不成立,执行语句printf("%d,",i);依次输出i值,0,1,2,3;直到i=4时,if条件成立,执行break退出for循环。D选项正确。32、有以下程序:voidss(char*s,chart){while(*s){if(*s==t)*s=t-’a’+’A’;s++;}}main(){charstr1[100]="abcddfefdbd",c=’d’;ss(str1,c);printf("%s\n",str1);}程序运行后的输出结果是()。A、ABCDDEFEDBDB、abcDDfefDbDC、abCAAfefAbAD、Abcddfefdbd标准答案:B知识点解析:函数ss(char*s,chart)的功能是将指针s所指向的字符串中存在的字符“t”均改写成大写字母:所以main函数中引用函数ss后使得数组str中的小写字母“d”均变成了大写字母“D”,然后输出数组str1,结果为:abcDDfefDbD。33、以下表达式的值与x无关、其值恒为真的是A、0<x<5B、x>10&&x<5C、x>10&&x<5D、x<10&&x>5标准答案:A知识点解析:逻辑与只有在"&&"符号两边操作均为真时,逻辑与为真,故排除B,D选项;逻辑或当且只当"||"符号两边操作至少有一个为真时,逻辑或结果为真,x>10||x<5为真与x值有关,故排除C选项;答案为A选项。34、有以下程序#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf("%d,%d\n",S(k+j+2),S(j+k+2));}程序运行后的输出结果是A、11,11B、29,29C、26,29D、121,121标准答案:B知识点解析:#define命令是C语言中的一个宏定义命令,标识符一般使用大写,为了区分其他标识符,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。S(k+j+2)=k+j+2*k+j+2/k+j+2,经计算可得29,S(j+k+2)=j+k+2*k+j+2/j+k+2,计算可得29。因此输出为29,29。答案为B选项。35、某棵树中共有25个结点,且只有度为3的结点和叶子结点,其中叶子结点有7个,则该树中度为3的结点数为A、不存在这样的树B、7C、8D、6标准答案:A知识点解析:树是一种简单的非线性结构,直观地来看,树是以分支关系定义的层次结构。在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。首先假设这样的树是存在的,由于只有度为3的结点和叶子结点,可知最后一层都为叶子结点,倒数第二层一部分结点的度为3,一部分结点为叶子结点。结点总数为25,叶子结点有7个,则度为3的结点有18个,由于(34-1-1)/2<18<(35-1-1)/2可知,树共有5层,前三层有度为3的结点(34-1-1)/2=13个,第四层有34-1=27个结点,其中5个是度为3的结点,22个是叶子结点,此时与题目给出的叶子结点有7个相矛盾,故不存在这样的树。故选择A选项.36、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是A、学生成绩管理系统B、ERP系统C、办公自动化系统D、UNIX系统标准答案:D知识点解析:系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。选项A属于系统软件,选项B、C、D属于应用软件。故选D选项.37、以下叙述正确的是A、通过分解成简单子任务,可以完成任何复杂任务B、每个结构化程序都要包含全部三种基本结构C、C语言程序的所有自定义函数只能写在同一个源文件中D、C语言程序允许使用多个main函数,只要它们的函数体各不相同即可标准答案:A知识点解析:算法的三种基本结构:循环、顺序、条件。有的简单的程序只包含其中的若干个,因此B选项错误,C语言程序的自定义函数可以放在多个.c文件中,只要包含其引用的头文件即可链接到,因此选项C错误。C语言程序有且只有一个main函数,因此D选项错误。故答案为A选项。38、下述程序的输出结果是()。#include<stdio.h>voidmain(){chara=1,b=2;charc=a^b<<2;printf("\n%d",c);}A、9B、10C、12D、2标准答案:A知识点解析:本题主要考查C语言最基本的算术运算“左移(<<)”和“异或(^)”。“左移”或“右移”运算表达式的一般形式为:x<<n或x>>n。“左移(<<)”运算的规则是将x的二进制位全部向左移动n位,将左边移动的高位舍弃,右边空出的位补0;“右移(>>)”运算的规则是将x的二进制位全部向右移动n位,将右边移出的低位舍弃,左边高位空出要根据原来符号位的情况进行补充,对无符号数则补0,对有符号数,若为正数则补0,若为负数则补1。“异或”运算是当两个运算量的相应位相同时结果为0,不相同时结果为1。b=2的二进制为(00000010)b<<2后为00001000,a=1的二进制为00000001,所以c=a^b<<2为00001001,转化为十进制后为9。39、以下程序中,函数scrap的功能是返回形参指针s1和s2所指字符串中较小字符串的首地址:#include<stdio.h>#include<string.h>char*scmp(char*s1,char*s2){if(strcmp(s1,s2)<0)return(s1);elsereturn(s2);}voidmain(){inti;charstring[20],str[3][20];for(i=0;i<3;i++)gets(str[i]);strcpy(string,scmp(str[0],str[1]));/*库函数strcpy功能是对字符串进行复制*/strcpy(string,scrap(string,str[2]));printf("%s\n",string);}若运行时依次输入abed、abba和abc三个字符串,则输出结果为()。A、abedB、abbaC、abbcD、abca标准答案:B知识点解析:strcmp(s1,s2)用来比较两个字符串的大小,比较方式是两个字符串自左向右逐个字符进行比较(按ASCII值大小相比较),直到出现不同的字符或遇'\0'为止。当s1<s2时,返回值为负数;当s1==s2时,返回值为0;当s1>s2时,返回值为正数。gets()函数用来输入字符串,for循环用来控制逐个输入字符串。当分别输入字符串abed、abba和abc后,执行程序strcpy(string,scmp(str[0],str[1])),然后调用scmp函数,此时返回str[1]的地址(因为字符串abed的第三个字符C的ASCII码值大于字符串abba的第三个字符b的ASCII码值),并把该地址存放到string中。接着执行语句strcpy(string,scmp(string,str[2])),结果是把字符串string,即abba的地址存放到string中,最后执行printf()函数,输出当前字符串string,即abba。40、下列程序的输出结果是()。#include<stdio.h>voidmain(){inta=0,b=1,c=2;if(++a>0‖++b>0)++c;printf("%d,%d,%d",a,b,c);}A、0,1,2B、1,2,3C、1,1,3D、1,2,2标准答案:C知识点解析:本题考查if语句。先判断if语句的条件是否成立,因为“++a=1>0”,所以条件成立,又因为是进行逻辑或运算,在己知其中一个运算对象为真的情况下,不必判断另外一个运算对象的真假,即不进行抖b操作,就可以直接得出整个表达式的值为逻辑1,执行下面的++c。二、程序填空题(本题共1题,每题1.0分,共1分。)41、给定程序中,函数fun的功能是:判断形参s所指字符串是否是"回文"(Palindrome),若是,函数返回值为1;不是,函数返回值为0。"回文"是正读和反读都一样的字符串(不区分大小写字母)。例如,LEVEL和Level是"回文",而LEVLEV不是"回文"。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!#include#include#includeintfun(char*S){char*1p,*rp;/**********found**********/ip=___1___;rp=s+Strlen(S)-1;while((toupper(*1p)==toupper(*rp))&&(ip标准答案:(1)s(2)--(3)return0知识点解析:第一空:“rp=s+strlen(s)-1;”可知rp指向最后一个元素,因此1p是指向第一个元素,因此第一空应为“s”。第二空:“1p++;rp__2__;”1p往后移动,rp应该往前移动,故第二空处应为“--”。第三空:“if(1p三、程序修改题(本题共1题,每题1.0分,共1分。)42、给定程序MODIl.C中函数fun的功能是:从整数1到55之间,选出能被3整除、且有一位上的数是5的那些数,并把这些数放在b所指的数组中,这些数的个数作为函数值返回。规定,函数中a1放个位数,a2放十位数。请改正程序中的错误,使它能得出正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。#includeintfun(int*b){intk,a1,a2,i=0;for(k=10;k<=55;k++){/**********found**********/a2=k/10;a1=k=a2*10;if((k%3==O&&a2==5)‖(k%3==0&&a1==5)){b[i]=k;i++;}}/**********found**********/returnk:}main(){inta[100],k,m;re=fun(a);printf("Theresultis:\n");for(k=0;k标准答案:(1)a2=k/10;(2)returni;知识点解析:本题中函数的功能是从整数1到55之间,选出能被3整除且有一位上的数是5的数。其中,涉及整数个位的截取,以及判断某范围内能被3整除的判断条件表达式、循环。[解题思路](1)第一标识下“a2=k/10;”是截取十位数。截取个位数是k%10,而截取十位数是k/10,因此第一标识下应改成“a2=k/10;”。(2)变量i是标识数组b的下标也就是数组的个数,题目中“returnk;”返回的是循环条件表达式中的变量.所以这里应该将*returnk:”改为“returni;”。四、程序设计题(本题共1题,每题1.0分,共1分。)43、请编写函数fun,该函数的功能是:将s所指字符串中ASCII码值为偶数的字符删除,串中剩余字符形成一个新串放在t所指的数组中。例如,若s所指字符串中的内容为"ABCDEFG12345",其中字符B的ASCII码值为偶数,字符2的ASCII码值为偶数,都应当删除,其他依此类推。最后t所指的数组中的内容应是"ACEG135"。注意:请勿改动main函数和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。试题程序:#include<stdio.h>#include<string.h>标准答案:voidfun(char*s,chart[]){inti=0;for(;*s!=’\0’;s++)/*找出ASCII值为奇数的字符依次存入数组t中*/if(*s%2==1)t[i++]=*s;t[i]=’\0’;/*在字符串的末尾加上串结束符*/}知识点解析:本题要求将s所指字符串中ASCII码值为偶数的字符删除,因此本题要求采用一个for循环来找出ASCII码值为奇数的字符依次存入数组t中,并使用if条件句来判断s所指字符串中ASCII码值是否为奇数。用’\0’加在字符串的末尾来表示字符串的结束。要删除ASCII码值为偶数的字符,也就是要留下ASCII码值为奇数的字符。由于最终是要求出剩余字符(即ASCII码值为奇数)形成的新串,所以本题程序的算法是对原字符串从头到尾扫描,找出ASCII码值为奇数的字符并将其依次存入数组t中。此外,还要注意数组t的下标变化国家二级(C语言)机试模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、算法的有穷性是指()。A、算法程序的运行时间是有限的B、算法程序所处理的数据量是有限的C、算法程序的长度是有限的D、算法在执行过程中所需要的临时工作单元数标准答案:A知识点解析:算法原则上能够精确地运行,而且人们用纸笔做有限次运算后即可完成。有穷性是指算法程序的运行时间是有限的。2、下列关于类、对象、属性和方法的叙述中,错误的是()。A、类是对一类具有相同的属性和方法对象的描述B、属性用于描述对象的状态C、方法用于表示对象的行为D、基于同一个类产生的两个对象不可以分别设置自己的属性值标准答案:D知识点解析:类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基于同一个类产生的两个对象是可以分别设置自己的属性值。3、下列关于函数的叙述中正确的是()。A、每个函数都可以被其他函数调用(包括main函数)B、每个函数都可以被单独编译C、每个函数都可以单独运行D、在一个函数内部可以定义另一个函数标准答案:B知识点解析:在C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有从属关系。虽然函数之间可以相互调用,但main()函数不能被调用,选项A)错误;C程序从main()函数开始执行,当main()函数执行完毕时,整个程序就结束了。C程序的执行必须从main()函数开始,选项C)选项错误;函数不能嵌套定义,选项D)错误。4、若变量都己正确说明,则以下程序段()。#include<stdio.h>main(){inta=8;intb=6:printf(a>b?"&&&a:%d":"!!!b=%d",a,b);}A、输出为:&&&a=8B、输出为:!!!b=8C、输出为:&&&a=8!!!b=6D、全部错误标准答案:A知识点解析:本题考查printf的输出格式和条件表达式“?:”的使用。①printf函数输出时,“&&&%d\n”和“!!!%d\n”中的“&&&”和“!!!”都是直接输出:②条件表达式的基本格式为:a?b:c。其运算规则为:当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。printf函数中如果在格式说明符之前插入任何字符都将原样输出。本题中a>b为真,所以返回“&&&a=%d”。5、在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是()。A、O(n)B、O(n2)C、O(log2n)D、O(nlog2n)标准答案:C知识点解析:当有序线性表为顺序存储时才能用二分法查找。可以证明的是对于长度为凡的有序线性表,在最坏情况下,二分法查找只需要比较log2n次,而顺序查找需要比较n次。6、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。7、设变量x为longint型,并已正确赋值,以下表达式中能将x的百位上的数字提取出的是()。A、x/10%100B、x%10/100C、x%100/10D、x/100%10标准答案:D知识点解析:x/100的个位数是x的百位数上的数字,所以再进行%10运算即可得到该数字。8、有以下程序(说明:字母A的ASCII码值是65):#includevoidfun(char*s){while(*s){if(*s%2)printf("%c",*s);S++:}}main(){cha,ra[]="BYTE";fun(a);printf("\n");}程序运行后的输出结果是()。A、BYB、BTC、YTD、YE标准答案:D知识点解析:函数只会输出ASCII码值为奇数的字母,执行fun(a)时,依次取出a[]中的字母,因为B的ASCII码值为66,所以不会输出B,字母Y的ASCII码值为89,字母T的ASCII码值为84,字母E的ASCII码值为69,所以最后输出字母YE。9、对建立良好的程序设计风格,下面描述正确的是()。A、程序应简单、清晰、可读性好B、符号名的命名只要符合语法C、充分考虑程序的执行效率D、程序的注释可有可无标准答案:A知识点解析:程序设计应该简单易懂,语句结构应该简单直接,不应该为提高效率而把语句复杂化。10、若有以下定义,则对数组元素的正确引用是()。inta[5],*p=a;A、*&a[5]B、(*a)+2C、*p+4D、*(a+2)标准答案:D知识点解析:本题考查通过指针引用数组元素。选项A、C没有这种引用形式;选项B,(*a)+2与*a+2相同,表示第一个元素的值加2;选项D,*(a+2)引用数组的第3个元素。11、有以下程序:#include#include"string.h"voidfun(char*s[],intn){char*t;inti;j;for(i=0;istrlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;}}main(){char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"};fun(ss,5);printf("%s,%s\n",ss[0],ss[4]);}程序的运行结果是()。A、xy,aaaaccB、aaaacc,xyC、bee,aabccD、aabcc,bcc标准答案:A知识点解析:从main函数入手,定义了一个一维数组并赋初值,接着调用函数fun(),函数的功能是:比较数组中各元素的长度,按元素长度从小到大的顺序排列元素,所以执行fun(ss,5)函数后,*ss[]={"xy","bcc","bbcc","aabcc","aaaacc"},所以调用printf函数输出ss[0],ss[4]的值分别为xy,aaaacc。12、设—棵树的度为3,共有27个结点,其中度为3,2,0的结点数分别为4,1,10。该树中度为1的结点数为()。A、12B、13C、11D、不可能有这样的树标准答案:A知识点解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。根据题意,度为3的树第1层1个根结点,第2层3个子结点,每个子结点下各3个子结点,所以第3层共9个子结点,前3层共13个结点。第3层有一个结点度为2即有2个子结点,本层其他结点各1个子结点;即第4层共10个结点。前4层共23个结点。第4层中的两个结点下各有一个子结点,即第5层有2个结点,此2个结点下各有一个子结点。第3层有8个度为1的结点,第4层有2个度为1的结点,第5层有2个度为1的结点,8+2+2=12。故本题答案为A选项。13、数据库系统的核心是()。A、数据模型B、软件开发C、数据库设计D、数据库管理系统标准答案:D知识点解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建由、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。14、sizeof(char)是()。A、一种函数调用B、一个整型表达式C、一个字符型表达式D、一个不合法的表达式标准答案:B知识点解析:“sizeof(char)”是一个C语言的关键字,它不是函数调用。“sizeof”的功能是计算出运算对象在计算机的内存中所占用的字节数量,该表达式的返回值是一个整数,而不是一个字符型表达式。15、在数据库设计中,描述数据间内在语义联系得到E-R图的过程属于()。A、逻辑设计阶段B、需求分析阶段C、概念设计阶段D、物理设计阶段标准答案:D知识点解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以B)错误。笛卡尔积是用R集合中元素为第一元素,S集合中元素为第二元素构成的有序对,所以C)错误。根据关系T可以很明显的看出是从关系R与关系S中取得相同的关系组所以取得是交运算,选择D)。16、有以下程序:#include<stdio.h>main(){inti,j;for(i=1;i<4;i++){for(j=i;j<4;j++)printf("%d*%d*%d",i,j,i*j);pfinff("\n");}}程序运行后的输出结果是()。A、1*1=11*2=21*3=32*2=42*3=63*3=9B、1*1=11*2=21*3=32*1=22*2=43*1=3C、1*1=11*2=22*2=41*3=32*3=63*3=9D、1*1=12*1=22*2=43*1=33*2=63*3=9标准答案:A知识点解析:外循环第一次i的值为1,内循环第一次j的初值为1,打印1*1=1;内循环第二次j的值为2,打印1*2=2;内循环第三次j的值为3,打印1*3=3,打印回车换行,退出内循环。外循环第二次i的值为2,内循环第一次j的初值为2,打印2*2=4;内循环第二次j的值为3,打印2*3=6,打印回车换行,退出内循环。外循环第三次i的值为3,内循环第一次j的初值为3,打印3*3=9,打印回车换行,退出内循环。17、有以下程序:#includevoidfun2(chara,charb){prinff(“%c%c”,a,b);}chara=‘A’,b=一B;voidfunl(){a=‘C’:b=‘D’:}main(){funl();prinff(“%c%C”,a,b);run2(一E,一F);}程序运行后的输出结果是()。A、ABEFB、CDEFC、ABCDD、CDAB标准答案:B知识点解析:本题考察的是变量的作用范围。如果在同一个源文件中,外部变量与局部变量同名,则在局部变量的作用范围内,外部变量被“屏蔽”,即不起作用。本题中,在funl()和main()函数内访问的是全局变量a和b,在fun2()函数中访问的是形参变量a和b。所以,main()函数中的printf。()函数输出的是在:funl()函数中被改变的全局变量a和b的"值C、D,而fun2()函数中输出的是传递给它的实参值E、F。因此B选项正确。18、有以下程序:#include<stdio.h>#defineS(x)4*(x)*x+1main(){intk=5,j=2;printf("%d\n",S(k+j));}程序运行后的输出结果是()。A、33B、197C、143D、28标准答案:C知识点解析:本题考查带参数的宏定义,s为带参数的宏定义,运行s(k+j)为4*(k+j)*k+j+1=143,选项C正确。19、对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是()。A、快速排序B、冒泡排序C、直接插入排序D、堆排序标准答案:D知识点解析:在最坏的情况下,堆排序需要比较的次数为O(nlog2n),所以选择D)。20、以下不正确的定义语句是()。A、doubleX[5]={1.0,2.0,3.0,4.0,5.0};B、inty[5]={0,1,2,3,4,5};C、charcl[]={‘1’,‘2’,‘3’,‘4’,‘5’);D、charc211={’a’,’b’,’c’};标准答案:B知识点解析:本题考查对一维数组的赋值。选项B)中,y[5]说明数组中有5个元素,但却给它赋了6个值,数组溢出所以是错误的。21、设有定义:inta=64,b=8;,则表达式(a&&b)和(a|b)&&(a||b)的值分别为()。A、1和1B、1和0C、0和1D、0和0标准答案:A知识点解析:常用的位运算符有:“~”按位求反,“<<”左移,“>>”右移,“&”按位与,“^”按位异或,“|”按位或。逻辑或运算符“|”,计算左表达式值,如果为真,则不计算右表达式值,而整个表达式为真;若左表达式为假,再计算右表达式值,然后做或运算。逻辑与运算符“&”,计算左表达式值,如果为假,则不计算右表达式值,而整个表达式为假;若左表达式为真,再计算右表达式值,然后做与运算。a=64换算为二进制为1000000,b=8换算为二进制为1000,a&b=0为假,a&&b为真,(a&b)||(a&&b)为真,值为1。a|b=1001000为真,a||b为真,则(a|b)&&(a||b)为真,值为1。故A选项正确。22、下面说法正确的是()。A、一个C程序可以有多个主函数B、一个C语言的函数中只允许有一对花括号C、C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内D、在对C程序进行编译时,可以发现注释行中的拼写错误标准答案:C知识点解析:本题涉及C语言基本的3个知识点:①C语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;②C程序的注释部分仅仅是方便程序员阅读,提高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释中的错误。23、下述程序的输出结果是()。#inc1udevoidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;1++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}A、10B、18C、6D、数组元素引用不合法,输出结果不定标准答案:B知识点解析:第一个for循环,给数组a的20个元素分别赋值0~19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10:第三个for循环,将数组p中元素的值进行累加,k=1+2+5+10=18。24、结构化程序设计的基本原则不包括()。A、多态性B、自顶向下C、模块化D、逐步求精标准答案:A知识点解析:结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A)。25、以下叙述中错误的是()。A、C程序必须由一个或一个以上的函数组成B、函数调用可以作为一个独立的语句存在C、若函数有返回值,必须通过return语句返回D、函数形参的值也可以传回给对应的实参标准答案:D知识点解析:形参是函数定义时由用户定义的形式上的变量,实参是函数调用时,主调函数为被调函数提供的原始数据。在C语言中,实参向形参传送数据的方式是“值传递”。因此D选项正确。26、有以下程序:#includevoidf(int*q){inti=0;for(;i<5;i++)(*q)++;}main(){inta[5]={1,2,3,4,5},i;f(a);for(i=0;i<5;i++)prinff(“%d,”,a[i]);}程序运行后的输出结果是()。A、6,2,3,4,5,B、2,2,3,4,5,C、1,2,3,4,5,D、2,3,4,5,6,标准答案:A知识点解析:本题考查的是函数的地址调用,将数组名作为数组首地址进行传递,然后取首个数组元素值进行加1运算,循环5次。因此A选项正确。27、若变量已正确定义,在if(w)printf("%d\n",k);中,以下不可替代W的是()。A、a<>b+cB、ch=getchar()C、a==b+cD、a++标准答案:A知识点解析:if语句中的判断条件是表达式,该表达式通常是逻辑表达式或关系表达式,也可以是算术表达式或赋值表达式,甚至是一个常量或变量,只要是语句合法的表达式即可,选项B是合法的赋值表达式,正确;选项C是关系表达式,正确;选项D都算术表达式,也是合法的表达式,正确;选项A中的符号<>不合法,故答案选A。28、以下叙述中错误的是A、C程序对预处理命令行的处理是在程序执行的过程中进行的B、预处理命令行的最后不能以分号表示结束C、#defineMAX是合法的宏定义命令行D、在程序中凡是以"#"开始的语句行都是预处理命令行标准答案:A知识点解析:本题考查预处理命令行,预处理是在程序编译之前进行的,所以A选项错误。29、关于程序模块化,以下叙述错误的是()。A、程序模块化可以提高程序运行的效率B、程序模块化可以提高程序编制的效率C、程序模块化可以提高程序代码复用率D、程序模块化可以提高调试程序的效率标准答案:A知识点解析:模块化程序的优点:(1)易于维护和复用,可以提高程序编制的效率。(2)易于分工合作。(3)易于模块化调试测试。模块化程序的副作用:(1)可能会降低程序运行效率。(2)设计的前期工作需要多花费时间。可知选项B,C,D正确。答案为A选项。30、以下程序的输出结果是()。main(){inta=4,b=3,c=2,d=1;printf(”%d”,a>b?a:d>c?d:b);}A、1B、3C、2D、4标准答案:D知识点解析:本题首先判断a>b,当a>b时结果等于a,否则等于”d>c?d:b”,因为a>b,所以直接输出a的值,注:这里”a:d>c?d:b”是用来干扰考生的。31、在下列叙述中,错误的是()。A、C语言中,二维数组或多维数组是按行存放的B、赋值表达式b[1][2]=a[2][3]是正确的C、chara[1];a[0]=’A’与inta[1];a[0]=’A’等价D、数组名后的方括号内可以为常量表达式,也可以为变量标准答案:B知识点解析:本题考查如何通过指针引用数组元素。首先定义了一个结构体,然后定义了一个结构体变量s[3],并赋了初值。在主程序中,定义了一个指向结构体变量s的指针p,要使表达式的值为5,就应该引用s[1].m的值,使指针p指向s[1],++p可以实现将p指针加1,指向s[1]。32、下列叙述中正确的是A、存储空间不连续的所有链表一定是非线性结构B、结点中有多个指针域的所有链表一定是非线性结构C、能顺序存储的数据结构一定是线性结构D、带链的栈与队列是线性结构标准答案:D知识点解析:一个非空的数据结构如果满足以下两个条件:有且只有一个根节点;每一个节点最多有一个前件,也最多有一个后件,称为线性结构,称为线性表,可以采用顺序存储和链接存储,其中链式存储空间不连续,所以A选项错误。双向链表节点有两个指针域,指向前一个节点的指针和指向后一个节点的指针,也是线性结构,B选项错误。顺序存储结构中可能根节点不唯一,故可能不是线性结构,C选项错误。栈是所有的插入与删除都限定在表的同一端进行的线性表;队列是指允许在一端进行插入,而在另一端进行删除的线性表。D选项正确。33、有以下程序:#includemain(){FILE*fp;inti,a[6]={’a’,’b’,’c’,’d’,’e’,’f’,k;fp=fopen(’’data.dat’’,’’w+b’’);fwrite(&a[0],sizeof(int),1,fp);for(i=1;i<6;i++){fseek(fp,0L,0);fwrite(&a[i];sizeof(int),1,fp);}fseek(fp,0L,0);fread(&k,sizeof(int),1,fp);fclose(fp);pfintf(’’%c\n’’,k);}程序运行后的输出结果是()。A、abcdefB、abC、fD、fedcba标准答案:C知识点解析:注意打开文件并写入时使用了for循环,而且每次写之前都使用fseek函数从文件开头写入,因此。后面的写入会覆盖前面的内容,因此在读出时,只有一个数组元素被读出,而且是最后一个,因此答案是C选项。34、有如下程序段intk;for(k=2;k==0;)printf("%d",k--);则for循环体执行的次数是A、0次B、1次C、2次D、无限次标准答案:A知识点解析:for(k=2;k==0;)表示给k赋值2,如果k等于0,则进入循环,但是k不满足条件,因此循环体不执行。正确答案为A选项。35、有以下程序#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen("data.dat","w+");fprintf(fp,"%d\n",a[0]);for(i=1;i<6;i++){rewind(fp);fprintf(fp,"%d\n",a[i]);}rewind(fp);fscanf(fp,"%d",&k);fclose(fp);printf("%d\n",k);}程序运行后的输出结果是A、6B、21C、123456D、654321标准答案:A知识点解析:本题首先定义文件指针变量fp和一个数组a[],再打开一个文件"data.dat",随后先给文件写入数据a[0],由于rewind函数是将文件指针从当前位置重新指向文件开始位置,所以for循环依次将数组a中的数据写入文件开始位置,退出循环后,文件中的数据顺序为:654321,重新使指针指向文件开始位置,将此时fp指向的数据(即文件中第一个数据6)写入变量k中,关闭文件,输出k值,答案为A选项。36、下列叙述中正确的是A、算法复杂度是指算法控制结构的复杂程度B、算法复杂度是指设计算法的难度C、算法的时间复杂度是指设计算法的工作量D、算法的复杂度包括时间复杂度与空间复杂度标准答案:D知识点解析:算法的复杂度是指运行该算法所需要的计算机资源的多少,所需的资源越多,该算法的复杂度越高;反之,所需资源越少,复杂度越低。算法复杂度包括算法的时间复杂度和算法的空间复杂度,算法的时间复杂度是指执行算法所需要的计算工作量,算法空间复杂度指执行这个算法所需要的内存空间。故选择D选项37、软件按功能可以分为应用软件、系统软件和支撑软件(或工具软件)。下面属于系统软件的是A、学籍管理系统B、ERP系统C、C编译程序D、CAI软件标准答案:C知识点解析:计算机软件按功能分为应用软件、系统软件、支撑软件(或工具软件)。系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。支撑软件介于系统软件和应用软件之间,协助用户开发软件的工具型软件,其中包括帮助程序人员开发和维护软件产品的工具软件,也包括帮助管理人员控制开发进程和项目管理的工具软件,如Dephi、PowerBuilder等。选项C属于系统软件,选项A、B、D属于应用软件,故选C选项.38、有以下程序#include<stdio.h>intm=12;intfun(intx,inty){staticintm=3;m=x*y-m;return(m);}main(){inta=7,b=5;m=fun(a,b)/m;printf("%d\n",fun(a,b)/m);}程序运行后的输出结果是A、2B、1C、3D、0标准答案:B知识点解析:局部变量覆盖全局变量,但是全局变量的声明周期还存在。f()函数调用完成后,由于m全局变量,被修改为32,即函数的返回值32,此时m=32/12,第二次调用f(a,b),函数的返回值为3,此时m=2,故输出为1。所以答案为B选项39、有以下程序#include<stdio.h>main(){inta[4],p,x,i;for(i=3;i>0;i--)a[i-1]=i*2-1;scanf("%d",&x);i=0;while(a[i]<x)i++;p=i;for(i=3;i>p;i--)a[i]=a[i-1];a[p]=x;for(i=0;i<4;i++)printf("%3d",a[i]);printf("\n");}执行时输入:2<回车>,则输出结果是A、1234B、5431C、1235D、3214标准答案:C知识点解析:第一个for循环初始化数组a,分别为1,3,5,随机数,形成了基本有序的序列,再将输入的数字插入到数组a,使他们形成有序序列。因此可以分析出,打印的结果为1,2,3,5。故答案为C选项40、有以下程序#include<stdio.h>intm1(intx,inty){if(x<=y)return2*x+1;elsereturny;}intm2(intx,inty){if(x<=y)return2*y+1;elsereturnx;}main(){inti,t1=10,t2=0;for(i=1;i<=4;i++){t1=m1(i,t1);t2=m2(i,t2);}printf("t1=%dt2=%d\n",t1,t2);}程序运行后的输出结果是A、t1=9t2=4B、t1=4t2=9C、t1=9t2=9D、t1=1t2=4标准答案:A知识点解析:函数m1(x,y),若x<y,返回2*x+1,否则返回y,函数m2(x,y),若x<=y,返回2*y+1,否则返回x,for循环对t1=m1(i,t1),执行4次,可知答案为9,t2=m2(i,t2),执行4次,可知答案为4,因此答案为A选项。二、程序填空题(本题共1题,每题1.0分,共1分。)41、给定程序中,函数fun的功能是:将形参s所指字符串中的数字字符转换成对应的数值,计算出这些数值的累加和作为函数值返回。例如,形参S所指的字符串为abs5defl26jkm8,程序执行后的输出结果为22。请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:部分源程序在文件BLANKl.C中。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#include<string.h>#include<ctype.h>intfun(char*S){intsum=0;while(*s){/*********found*********/if(isdigit(*s))sum+=*s-【1】;/*********found*********/【2】;}/*********found*********/return【3】;}main(){chars[81];intn;printf("\nEnterastring:\n\n");gets(s);n=fun(s);printf("\nTheresultis:%d\n\n",n);}标准答案:(1)48或’0’(2)s++(3)sum知识点解析:本题是把字符串中是数字字符转换成对应的数值并进行累加。填空1:’0’字符对应的ASCII码值是48,因此数字字符转换成对应数值时只要减去48,即是该数字字符对应的数值,所以应填48或者’0’。填空2:判断完一个字符之后,将字符串指针移到下一个位置,所以应填s++。填空3:返回累加和sum,所以应填sum。三、程序修改题(本题共1题,每题1.0分,共1分。)42、使用VC++2010打开考生文件夹下modi1中的解决方案。此解决方案的项目中包含一个源程序文件modi1.c。在此程序中,函数fun的功能是:将长整型数中各位上为奇数的数依次取出,构成一个新数放在t中。高仍在高位,低位仍在低位。例如,当s中的数为87653142时,t中的数为7531。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>voidfun(longs,long*t){intd;longs1=1;/*********found*********/t=0;while(s>0){d=s%10;/*********found*********/if(d%2==0){*t=d*s1+*=t;s1*=10;}s/=10;}}voidmain(){longs,t;system("CLS");printf("\npleaseenters:");scanf("%ld",&s);fun(s,&t);printif("Theresultis:%ld\n",t);}标准答案:(1)*t=0;(2)if(d%2!=0)或if(d%2==1)知识点解析:(1)由函数定义可知,变量t是指针变量,所以对t进行赋初值0是不对的。因为t指向的是存放新数的变量,所以此处应给新数赋初值0,即木t=0;(2)变量d表示数s各位上的数,此处的if条件应为判断d是否为奇数。四、程序设计题(本题共1题,每题1.0分,共1分。)43、使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,编写函数fun,其功能是:实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串的后面。例如,分别输入下面两个字符串:“FirstString--”“SecondStfing”程序输出:“FirstString--SecondString”注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>voidfun(charp1[],charp2[]){}voidmain(){chars1[80],s2[40];system("CLS");printf("Enters1ands2:\n");scanf("%s%s",s1,s2);printf("s1=%s\n",s1)?printf("s2=%s\n",s2);printf("Invokefun(s1,s2):\n");fun(s1,s2);printf("Afterinvoking:\n");printf("%s\n",s1);}标准答案:voidfun(charp1[],charp2[]){inti,j;

温馨提示

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

评论

0/150

提交评论