版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)机试模拟试卷50(共9套)(共345题)国家二级(C语言)机试模拟试卷第1套一、选择题(本题共39题,每题1.0分,共39分。)1、下面函数的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A、将字符串s复制到字符串t中B、比较两个字符串的大小C、求字符串的长度D、将字符串t续接到字符串S中标准答案:D知识点解析:本题考查指针变量的运用。本题中的函数实质上是将字符串t续接到字符串s中。2、一棵二叉树中共有80个叶子结点与70个度为1的结点,则该二叉树中的总结点数为()。A、219B、229C、230D、231标准答案:B知识点解析:二叉树中,度为0的结点数等于度为2的结点数加1,即n2=n0-1,叶子结点即为0,则n2=79,总结点数为n0+n1+n2=80+70+79=229。故B选项正确。3、两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是()。#include<stdio.h>main(){intx;scanf("%d",&x);if(x++>2)printf("%d",x);elseprintf("%d\n",x--);}A、4和3B、4和2C、4和1D、3和2标准答案:A知识点解析:本题考查if-else语句。首先,scanf函数通过键盘读入x的值。当x=3时,第一个if语句先判断条件,取x的值3和2比较,然后将x的值加1,if条件成立,执行下面的printf语句,输出x的值4。当x=2时,第一个if语句先判断条件,先取x的值2和2比较,然后将x的值加1(x的值变为3),if条件不成立,执行下面的else语句,先输出x的值3,再将x的值减1。4、下面程序的运行结果是()。for(i=3;i<7;i++)printf((i%2)?(’’**%d\n’’):(’’##%d\n’’),i);A、**3##4**5**6B、##3**4##5**6C、##3**4##5##6D、**3##4**5##6标准答案:D知识点解析:本题考查printf函数的输出格式和条件表达式“?:”的使用。①printf函数输出时“**%d\n”和“##%d\n”中的“##”和“**”都是直接输出。②条件表达式的基本格式为:“a?b:c”。它的运算规则为:当a为非0时,整个表达式的值取b的值,当a为0时,整个表达式取c的值。5、若有定义:floatx=1.5;inta=1,b=3,c=2;则正确的switch语句是()。A、switch(a+b){case1:pr4nff(“*\n”);case2+1:printf(“**\n”);}B、switch((int)x);{case1:prinff(“*\n”);case2:printf(“**\n”);}C、switch(x){case1.0:prinff(“*\n”);case2.0:prinff(“**\n”);}D、switch(a+b){ease1:printf(“*\n”);easec:printf(“*\n”);}标准答案:A知识点解析:B选项中switch((int)x);语句中不应该有最后的分号。switch(expr1),中的expr1不能用浮点类型或long类型,也不能为一个字符串,所以C错误。case后面常量表达式的类型必须与switch后面表达式的类型一致,所以D错误。6、在printf的格式字符中,e格式字符的作用是()。A、以十六进制无符号形式输出整数B、以带符号的十进制形式输出整数C、以指数形式输出实数D、以字符形式输出,且只输出一个字符标准答案:C知识点解析:本题考查printf函数的格式。格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。7、在printf的格式字符中,e格式字符的作用是()。A、以十六进制无符号形式输出整数B、以带符号的十进制形式输出整数C、以指数形式输出实数D、以字符形式输出,且只输出一个字符标准答案:C知识点解析:本题考查printf函数的格式。格式字符“e”或者“E”都表示以指数形式输出单精度或双精度数。8、下列程序的运行结果是()。#include<stdio.h>voidsub(int*s,int*y){staticintm=4;*y=s[0];m++;}voidmain(){inta[]={1,2,3,4,5},k;intx;printf(’’\n’’);for(k=0;k<=4;k++){sub(a,&x);printf(’’%d,’’,x);}}A、1,1,1,1,1,B、1,2,3,4,5,C、0,0,0,0,0,D、4,4,4,4,4,标准答案:A知识点解析:本题中sub(int*s,int*y)函数的参数是两个指针型变量,在函数体内将数组s的第一个元素赋给y。主程序内,首先定义了一维数组并赋初值,然后通过for循环,5次调用sub(a,&x)函数,每一次调用都是将数组a的第一个元素1赋给x,并输出。9、有以下程序:#include<stdio.h>structtt{intx;structtt*y;}*p;structtta[4]={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,30,B、30,17C、15,30,D、20,15,标准答案:D知识点解析:本题考查的是指针和结构的应用。首先定义的数组tt中有两个成员,一个整型变量,一个结构指针。当i=1时,p指针指向结构数组的第一个元素,并输出此元素的第一个成员x,即20;当i=2时,p指针指向结构数组的第二个元素的第一个成员,所以输出15。10、以下关于long、int和short类型数据占用内存大小的叙述中正确的是()。A、均占4个字节B、根据数据的大小来决定所占内存的字节数C、由用户自己定义D、由C语言编译系统决定标准答案:D知识点解析:不同的编译系统或计算机系统对几类整型数所占用的字节数有不同的规定。10ng、int和short类型数据占用内存大小是由选择何种C编译系统决定的。11、以下定义数组的语句中错误的是()。A、intnum[][3]={{1,2},3,4,5,6};B、intnum[2][4]={{1,2},{3,4},{5,6}};C、intnum[]={1,2,3,4,5,6};D、intnum[][4]={1,2,3,4,5,6};标准答案:B知识点解析:B)选项中定义的数组为2行4列,而赋值时赋成了3行所以出错。12、设有如下函数定义:#include<stdio.h>intfun(intk){if(k<1)return0;elseif(k==1)return1;elsereturnfun(k-1)+1;}若执行调用语句:n=fun(3);,则函数fun总共被调用的次数是()。A、2B、3C、4D、5标准答案:B知识点解析:首先n=fun(3),3被当作参数传递进去,这就进行了一次调用,3被当做参数传进去后,程序会执行这句elsereturnfun(k-1)+1;这就调用了第二次,而参数是3-1也就是2。2被当做参数传进去后,程序会执行这句elsereturnfun(k-1)+1;这就调用了第三次,而参数是2-1也就是1。1被当做参数传进去后,程序会执行这句elseif(k==1)return1;不再递归调用,所以最终结果为3次。13、以下选项中可用作C程序合法实数的是()。A、1e0B、3.0e0.2C、E9D、9.12E标准答案:A知识点解析:C程序的合法实数有两种表示形式,一种是小数形式,另一种是指数形式,对于用指数形式表示的实数来说,需要注意的是字母e或E之前必须要有数字,且字母e或E后面的指数必须为整数,所以选项A为正确答案。14、下面关于算法的叙述中,正确的是()。A、算法的执行效率与数据的存储结构无关B、算法的有穷性是指算法必须能在执行有限个步骤之后终止C、算法的空间复杂度是指算法程序中指令(或语句)的条数D、以上三种描述都正确标准答案:B知识点解析:算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤后结束。15、若变量已正确定义并赋值,则以下符合C语言语法的表达式是()。A、a=a+7;B、a=7+b+c,a++C、int(12.3%4)D、a=a+7=c+b标准答案:B知识点解析:选项A是一个C语句,不是表达式;选项B是利用一个逗号表达式给a赋值;选项C中的“%”求余运算符要求两个运算对象都必须是整型;选项D中,不能用表达式给表达式赋值,但是变量可以给自身赋值,例如:a=a+1。16、有以下程序:#include#defineX5+6main(){inta=2,c;C=x*2;printf("%d",c);}程序运行后的输出结果是()。A、17B、22C、16D、11标准答案:A知识点解析:define语句仅进行简单替换,因此c=5+6*2=17。17、在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的()。A、连接码B、关系码C、外码D、候选码标准答案:D知识点解析:在关系中凡能惟一标识元组的最小属性集称为该表的键或码。二维表中可能有若干个键,它们称为该表的候选码或候选键。从二维表的所有候选键中选取一个作为用户使用的键称为主键或主码。18、以下能正确表述算式sin(2πr+30°)的C语言表达式是()。A、sin(2*3.14*r+3.14*30/180.0)B、sin(2*π*r+30)C、sin(2*3.14*r+30)D、sin(2*3.14*r+30*3.14/360.0)标准答案:A知识点解析:考查算术表达式的写法,C中没有π,需要用数值3.14代替,C中sin函数的参数为弧度,角度30转成弧度应为3.14*30/180。故而选A)。19、有以下程序#includeintfun(intas*intb){if(b==0)returna;elsereturn(fun(--a,--b));}main(){pfintf("%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)。20、下列程序的运行结果为()。#include<stdio.h>voidabc(char*str){inta,b,i,j;for(i=j=0;str[i]!=’\0’;i++)if(str[i]!=’a’)str[j++]=str[i];str[j]=’\0’;}voidmain(){charstr[]="abcdef";abc(str);printf("str[]=%s",str);}A、str[]=bcdefB、str[]=abcdefC、str[]=aD、str[]=ab标准答案:A知识点解析:本题考查函数调用是的参数传递。通过函数abc的执行,将字符串中的字母a去掉,保留剩下的,由于是通过指针调用,所以改变字符串的结果。21、有以下程序:#include<stdio.h>intf(intx){inty;if(x==0||x==1)return(3);y=x*x-f(x-2);retumy;}main()intz;z=f(3);printf("%d\n",z);}程序运行后的输出结果是()。A、0B、9C、6D、8标准答案:C知识点解析:主函数中iJ吉j用f函数,同时将数值3传递给变量x,执行条件不满足条件if(x==0||x==1);跳过return(3);,直接执行语句y=x*x-f(x-2);这里f(x-2)为函数的递归调用,再次调用f函数,此时x=1,判断条件成立,返回3给f(1),y=3*3-3=6,最后将6返回主函数,并进行输出。因此C选项正确。22、若有以下程序:#includemain(){inta[3]={0},i,j,k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)a[j]=a[i]+1;printf("%d\n",a[1]);}则程序运行后的输出结果是()。A、0B、2C、1D、3标准答案:D知识点解析:该题首先初始化一维数组a[3]所有元素都为0;执行嵌套循环for语句,当i=0、j=0时,a[0]=a[0]+1=1;当i=0、j=1时,a[1]=a[0]+l=2;当i=1、j=0时,a[0]=a[1]+1=3;当i=1、j=1时,a[1]=a[1]+1=3;因此D选项正确。23、设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是()。A、判断m被5和7整除是否都余1B、判断m是否能被5和7整除C、判断m被5或者7整除是否余1D、判断m是否能被5或者7整除标准答案:A知识点解析:暂无解析24、在数据库设计中,将E-R图转换成关系数据模型的过程属于()。A、需求分析阶段B、概念设计阶段C、逻辑设计阶段D、物理设计阶段标准答案:C知识点解析:E-R图转换成关系模型数据则是把图形分析出来的联系反映到数据库中,即设计出表,所以属于辑设计阶段。25、以下关于return语句的叙述中正确的是()。A、一个自定义函数中必须有一条return语句B、一个自定义函数中可以根据不同情况设置多条return语句C、定义成void类型的函数中可以有带返回值的return语句D、没有return语句的自定义函数在执行结束时不能返回到调用处标准答案:B知识点解析:在函数中允许有多个return语句,但每次调用只能有一个return语句被执行,因此只能返回一个函数值。定义成void类型的函数,不允许从该函数取得返回值,也不允许使用return语句,C选项描述错误。没有return语句的函数在执行到函数的最后一条语句后会自动返回到调用处,A、D选项描述错误。因此B选琐正确。26、有以下程序:#include<stdio.h>voidfun(char*a,char*b){while(*a==’*’)a++;while(*b=*a){b++;a++;}}main(){char*s="*****a*b****",t[80];fun(s,t);puts(t);}程序运行后的输出结果是()。A、abB、a*bC、*****a*bD、a*b****标准答案:D知识点解析:在函数fun(char*a,char*b)中,while(*a==’*’)a++的功能是:如果*a的内容为‘*’,则a指针向后移动,直到遇到非’*’字符为止,退出循环进入下一个while循环,在while(*b=*a){b++;a++;}中,把字符数组a中的字符逐个赋给字符数组b。所以在主函数中,执行fun(s,t)语句后,字符数组t中的内容为“a*b****”。因此D选项正确。27、某二叉树共有530个结点,其中度为2的结点有250个,则度为1的结点数为()。A、29B、30C、249D、251标准答案:A知识点解析:在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为0的结点总是比度为2的结点多一个。二叉树结点总数为530,度为2的结点有250个,则度为0的结点有251个,那么度为1的结点个数为530-250-251=29。故选A选项。28、有以下程序:#include<stdio.h>strutS{inta,b;}data[2]={10,100,20,200};main(){structSP=data[1];printf("%d\n",++(p.a));程序运行后的输H{结果是()。A、10B、11C、20D、21标准答案:D知识点解析:数组data包含两个元素,元素类型为结构体S,分别为data[0],data[1],初始化时,使用4个整数10,100,20,200,分别给data[0].a,data[0].b.data[1].a,data[1].b赋值,又p.a=data.d[1].a.等于20,在输出之前执行自身加1操作,所以结果为21,答案选D。29、C语言程序的模块化通过以下哪个选项来实现()。A、函数B、变量C、程序行D、语句标准答案:A知识点解析:暂无解析30、以下叙述中错误的是()。A、可以给指针变量赋一个整数作为地址值B、函数可以返回地址值C、改变函数形参的值,不会改变对应实参的值D、当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL标准答案:A知识点解析:暂无解析31、有以下程序#include<stdio.h>#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}程序的输出结果是A、0B、1C、9D、10标准答案:B知识点解析:本题考查宏定义,宏定义只是做个简单的替换,执行SQR(k+m)/SQR(k+m)=k+m*k+m/k+m*k+m=15/2,a/=SQR(k+m)/SQR(k+m)的结果为1,选项B正确。32、为了使模块尽可能独立,要求()。A、内聚程度要尽量高,耦合程度要尽量强B、内聚程度要尽量高,耦合程度要尽量弱C、内聚程度要尽量低,耦合程度要尽量弱D、内聚程度要尽量低,耦合程度要尽量强标准答案:B知识点解析:模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。耦合性与内聚性是模块独立性的两个定性标准,耦合与内聚是相互关联的。在程序结构中,各模块的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。33、若函数调用时的实参为变量,以下关于函数形参和实参的叙述中正确的是()。A、函数的实参和其对应的形参共占同一存储单元B、形参只是形式上的存在,不占用具体存储单元C、同名的实参和形参占同一存储单元D、函数的形参和实参分别占用不同的存储单元标准答案:D知识点解析:在C语言中,函数的实参单元与形参单元在内存中分配不同的存储单元。在调用函数时,给形参分配临时存储单元,并将实参对应的值传递给形参,在被调用函数中对形参存储单元中的值进行运算,最后通过return语句把函数值返回调用函数。当调用结束后,形参单元被释放,实参单元仍保留并维持原值。34、运动会中一个运动项目可以有多名运动员参加,一个运动员可以参加多个项目。则实体项目和运动员之间的联系是A、多对多B、一对多C、多对一D、一对一标准答案:A知识点解析:一般来说,实体集之间必须通过联系来建立联接关系,分为三类:一对一联系(1:1)、一对多联系(1:m)、多对多联系(m:n)。一个运动项目有很多运动员参加,而一个运动员可以参加多项运动项目,故实体项目和运动员之间的联系是多对多,A选项正确。35、有以下程序#include<stdio.h>#include<string.h>typedefstructstu{charname[10];chargender;intscore;}STU;voidf(charname[10],chargender,intscore){strcpy(name,"Sun");gender=’m’;score=370;}main(){STUb={"Zhao",’m’,290},a={"Qian",’f’,350};b=a;printf("%s,%c,%d,",,b.gender,b.score);f(,b.gender,b.score);printf("%s,%c,%d\n",,b.gender,b.score);}程序运行后的输出结果是A、Qian,f,350,Sun,f,350B、Qian,f,350,Qian,f,350C、Qian,f,350,Sun,m,370D、Zhao,m,290,Sun,m,370标准答案:A知识点解析:C语言函数参数传递大致分为:1、值传递过程中,被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。2、地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。结构体中name是数组,做实参传递,会退化为指针,因此调用f(),发生修改,其他的成员,传递的是拷贝,不会被修改。因此输出Sun,f,350。故答案为A选项。36、设有以下程序段structbook{floatprice;charlanguage;chartitle[20];}rec,*ptr;ptr=&rec;要求输入字符串给结构体变量rec的title成员,错误的输入语句是A、scanf("%s",ptr.title);B、scanf("%s",rec.title);C、scanf("%s",(*ptr).title);D、scanf("%s",ptr->title);标准答案:A知识点解析:"->"是指针特用的,"."用于指定元素的成员。ptr是指针,只能用->,因此选项A错误。*p是指定元素(rec)可以使用.运算,因此选项D正确。选项B,rec.title代表数组title,同理选项C正确。答案为A选项。37、若有定义语句:intyear=2009,*p=&year;以下各项中不能使变量year中的值增至2010的语句是()。A、(*p)++;B、*p++;C、++(*p);D、*p+=1;标准答案:B知识点解析:指针变量存储的是其指向的变量的地址,*p表示的是p指向的变量的值,自加运算符(++)的优先级要高于取值运算符(*)的优先级,*p++表示的是先将指针P指向下一个地址,然后再取该地址的值,所以得到的结果并不是把year的值增至2010,故B选项错误。38、下列选项中,不属于数据管理员(DBA)职责的是()。A、数据库维护B、数据库设计C、改善系统性能,提高系统效率D、数据类型转换标准答案:D知识点解析:数据库管理员(DataBaseAdminiswator,DBA)是指对数据库的规划、设计、维护、监视等的人员,其主要工作如下:数据库设计。DBA的主要任务之一是数据库设计,具体地说是进行数据模式的设计;数据库维护。DBA必须对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护;改善系统性能,提高系统效率。DBA必须随时监视数据库的运行状态,不断调整内部结构,使系统保持最佳状态与效率。39、下列关于函数的叙述中正确的是()。A、每个函数都可以被其他函数调用(包括main函数)B、每个函数都可以被单独编译C、每个函数都可以单独运行D、在一个函数内部可以定义另一个函数标准答案:B知识点解析:在C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有从属关系。虽然函数之间可以相互调用,但main()函数不能被调用,选项A)错误;C程序从main()函数开始执行,当main()函数执行完毕时,整个程序就结束了。C程序的执行必须从main()函数开始,选项C)选项错误;函数不能嵌套定义,选项D)错误。二、程序填空题(本题共1题,每题1.0分,共1分。)40、给定程序中,函数fun的功能是:将形参指针所指结构体数组中的三个元素按num成员进行升序排列。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANKl.C中。不得增行或删行,也不得更改程序的结构!#includetypedefstruer{intnum;charname[10];}PERSON;/**********found***********/voidfun(PERSON___1___){/**********found***********/____2___temp;if(std[0].num>std[1].num){temp=std[0];std[0]=std[1];std[1]=temp;)if(std[0].num>std[2].hum){temp=std[0];std[0]=std[2];std[2]=temp;}if(std[1].num>std[2].hum){temp=std[1];std[1]=std[2];sLd[2]=temp;}}main(){PERSONsLd[]={5,“Zhanghu”,2,“WangLi”,6,“LinNin”};inti;/**********found***********/fun(____3____);printf(“\nTheresultis:\n”);for(i=0;i<3;i++)printf(“%d,%s\n”,std[i].num,std[i].name);}标准答案:(1)*std(2)PERSON(3)std知识点解析:fun函数的功能是将形参指针所指结构体数组中的三个元素进行排序。第一空:fun函数的参数是指针,由“if(std[0].num>std[1].num)”可知形参名为std,故第一空处应为“voidfun(PER.SON*std)”。第二空:temp变量用来进行交换时临时保存变量值,由“temp=std[0];”可知temp是PERSON结构体变量,故第二空处的temp结构体定义应为“PERSONtemp;”。第三空:这里是调用fun函数,fun函数的参数是结构体变量指针,std是结构体数组,数组名相当于数组的首地址,故第三空处应为“fun(std):”。三、程序修改题(本题共1题,每题1.0分,共1分。)41、在主函数中从键盘输入若干个数放入数组中,用0结束输入并放在最后一个元素中。下列给定程序中,函数fun的功能是:计算数组元素中所有值为正数的平均值(不包括0)。例如,数组中元素的值依次为:39、一47、21、2、一8、15、0,则程序的运行结果为19.250000。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!试题程序:#include<conio.h>#include<stdio.h>doublefun(intx[]){/*********found*********/intslim=0.0;intc=0,i=0;while(x[i]!=0){if(x[i]>0){sum+=x[i];c++;}i++;}/*********found*********/sum\=c;returnsum;}main(){intx[1000];inti=0;printf("\nPleaseentersomeclata(endwith0):");do{scanf("%d",&x[i]);}while(x[i++]!=0);printf("%lf\n",fun(x));}标准答案:(1)doublesum=0.0;(2)sum/=c;知识点解析:(1)变量定义错误,变量sum存放所有数据的和,应定义为double型。(2)c语言中的除法运算符是“/”。四、程序设计题(本题共1题,每题1.0分,共1分。)42、编写函数fun,其功能是:根据以下公式计算S,并将计算结果作为函数值返回,n通过形参传入。例如,若n的值为11时,函数的值为1.833333。注意:部分源程序给出如下。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>#include<string.h>floatfun(intn){}voidmain(){intn;floatS;system("CLS");printf("\nPleaseenterN:");scanf("%d",&n);s=fun(n);printf("Theresultis:%f\n",s);}标准答案:floatfun(intn){inti,s1=0;floats=0.0;for(i=1;i<=n;i++){s1=sl+i;/*求每一项的分母*/s=s+1.0/s1;/*求多项式的值*/}returns;}知识点解析:此类计算表达式值的程序,首先需要根据题意分析表达式的规律,得出通项,然后再完成程序语句。本题中表达式的规律是1+2+…+n的倒数之和,那么可以通过for循环语句来实现第1项到第n项的变化。其实就是累加算法,方法是先根据题目要求定义变量,注意该变量的数据类型,然后对其进行初始化操作,因为该变量的作用是累加器,所以初始值应为0(或0.0,根据变量数据类型来确定),再通过for循环语句来完成累加过程。本题中s1用来表示每一项的分母,每一项的分母都是由前一项分母加项数。注意,由于s1定义成一个整型,所以在s=s+1.0/s1语句中不能把1.0写成1。国家二级(C语言)机试模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、数据流图中带有箭头的线段表示的是()。A、控制流B、事件驱动C、模块调用D、数据流标准答案:D知识点解析:数据流图基本符号的含义:①矩形表示数据的外部实体;②圆角的矩形表示变换数据的处理逻辑;③“=”表示数据的存储;④箭头表示数据流。2、在软件开发中,需求分析阶段产生的主要文档是()。A、数据字典B、详细设计说明书C、数据流图说明书D、软件需求规格说明书标准答案:D知识点解析:需求分析的最终结果是生成软件需求规格说明书,可以为用户、分析人员和设计人员之间的交流提供方便。3、下列有关数据库的描述,正确的是()。A、数据库设计是指设计数据库管理系统B、数据库技术的根本目标是要解决数据共享的问题C、数据库是一个独立的系统,不需要操作系统的支持D、数据库系统中,数据的物理结构必须与逻辑结构一致标准答案:B知识点解析:数据库设计的目的实质上是设计出满足实际应用需求的实际关系模型。数据库技术的主要目的是有效地管理和存取大量的数据资源,包括:提高数据的共享性,使多个用户能够同时访问数据库中的数据;减小数据的冗余,以提高数据的一致性和完整性;提供数据与应用程序的独立性,从而减少应用程序的开发和维护代价。4、下列叙述中错误的是()。A、在C语言中,对二进制文件的访问速度比文本文件快B、在C语言中,随机文件以二进制代码形式存储数据C、语句FILEfp;定义了一个名为fp的文件指针D、C语言中的文本文件以ASCII码形式存储数据标准答案:C知识点解析:在C语言中,文件指针实际上是指向一个结构体类型的指针,一般称这个结构体类型名为FILE,可以用此类型名来定义文件指针。定义文件类型指针变量的一般形式为:FILE*指针变量名;选项C中少了“*”,所以选项C错误。5、有以下程序#includevoidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(iA、5678901234B、4321098765C、0987654321D、0987651234标准答案:A知识点解析:函数fun()的功能是将数组s中下标为n1和n2之间的数据逆序,所以调用语句fun(a,0,3);fun(a,4,9);fun(a,0,9);结束后,是先将数组p中下标为0至3之间的元素逆序,然后将下标为4至9之间的元素逆序,再将整个数组逆序,答案选A)。6、C$吾言源程序名的后缀是()。A、.exeB、.CC、.objD、.cp标准答案:B知识点解析:由C语言构成的指令序列称为C源程序,源程序文件的后缀为“.c”。源程序经过C编译程序编译生成后缀为“obi”的二进制文件(称为目标文件),然后由称为“连接程序”(Link)的软件把目标文件与C语言提供的各种库函数连接起来,生成后缀为“.exe”的可执行文件。7、有以下程序:#include<stdio.h>main(){charc1,c2;c1=’A’+’8’一’4’;c2=’A’+’8’一’5’;printf("%c%d\n",c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是()。A、E68B、D69C、EDD、输出无定值标准答案:A知识点解析:C语言中每个字符都对应一个ASCII码值,该值可以用来运算。本题中main函数将字符A经过加4和加3运算后分别赋值给c1、c2,然后将c1按字符格式输出,c2按整型格式输出。8、计算机高级语言程序的运行方法有编译执行和解释执行两种,以下叙述中正确的是()。A、C语言程序仅可以编译执行B、C语言程序仅可以解释执行C、C语言程序既可以编译执行又可以解释执行D、以上说法都不对标准答案:A知识点解析:C语言作为计算机高级语言,用它编写的程序必须经过C语言的编译器编译后,转换为二:进制的机器码来运行。9、若有如下说明,且int类型占两个字节,则正确的叙述为()。structst{inta;intb[2];}a;A、结构体变量a与结构体成员a同名,定义是合法的B、程序只在执行到该结构体时才为结构体st分配存储单元C、程序运行时为结构体st分配8字节存储单元D、类型名structst可以通过extern关键字提前引用标准答案:A知识点解析:本题主要考禽结构体的用法:①结构体变量a与结构体成员a同名,定义合法:②在程序编译的时候结构的定义并不会使系统为该结构分配内存空间,只有在说明结构变量时才分配内存空间;③inta占2个字节intb[2]占4个字节,共6个;④类型名structst不可以通过extern关键字提前引用。10、C语言规定,在一个c程序中,main()函数的位置()。A、必须在系统调用的库函数之后B、必须在程序的开始C、必须在程序的最后D、可以在任意位置标准答案:D知识点解析:每个C程序有一tiP,有一个主函数(main),且程序必须从main()函数开始执行,而且main()函数可以放在程序中的任意位置。11、设有定义:“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型数值的格式符为%1d。12、以下语句定义正确的是()。A、inta[1][4]={1,2,3,4,5};B、floata[3][]={{1,2},{2,3},{3,1}};C、longa[2][3]={{1},{1,2},{1,2,3},{0,0}};D、doublea[][3]={8};标准答案:D知识点解析:本题考查如何对二维数组的元素赋值。选项A,数组第二维的大小是4,但是却赋值了5个元素,数组溢出;选项B,C语言规定,对于二维数组,只可以省略第一个方括号中的常量表达式,而不能省略第二个方括号中的常量表达式;选项C,数组第一维的大小是2,但是赋值超过了2;选项D,在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。13、以下叙述中错误的是()。A、可以给指针变量赋一个整数作为地址值B、函数可以返回地址值C、改变函数形参的值,不会改变对应实参的值D、当在程序的开头包含头文件stdio.h时,可以给指针变量赋NULL标准答案:A知识点解析:不可以把一个int型数据直接赋值给一个指针变量,只能用取地址运算符"&"把该整型变量的地址赋值给该指针变量,选项A)错误;函数类型若为指针类型则可以返回地址值,选项B)正确;函数传参过程中,是把实参的数据复制一份传给形参,所以改变形参的值不会对实参造成影响,选项C)正确;NULL的定义包含在头文件stdio.h中,所以选项D)正确;所以答案选A)。14、下列数据结构中,能够按照“先进后出”原则存取数据的是()。A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。15、有以下程序#include#includestructA{inta;charb[10];doublec;};structAf(structAt);main(){structAa={1001,“ZhangDa”,1098.0};a=ffa);printf(“%d,%s,%6.1f\n”,a.a,a.b,a.c);}structAf(structAt){t.a=1002;strcpy(t.b,“WangPeng”);t.C=1220.0;retumt;}程序运行后的输出结果是()。A、1001,ZhangDa,1098.0B、1002,ZhangDa,1220.0C、1001,WangPeng,1098.0D、1002,WangPeng,1220.0标准答案:D知识点解析:在主函数中定义结构体A的变量a,并对其赋初值,再调用函数f(a),在函数f(a)中对结构体变量a的各个成员重新进行了赋值操作,并把其值返回在屏幕上输出。16、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的()。A、记录B、行C、属性D、元组标准答案:C知识点解析:进行自然连接时要求两个关系具有相同列,即属性。17、有以下程序:#include<stdio.h>#defineS(x)x*xvoidmain(){intk=5,j=2;printf("%d,%d\n",S(k+j+2),S(j+k+2));}程序的运行结果是()。A、21,18B、81,81C、21,21D、18,18E、D标准答案:A知识点解析:带参数的宏的调用格式:宏名(实参表),替换过程是:用宏调用提供的实参字符串,直接替换宏定义命令行中相应形参字符串,非形参字符保持不变。s(k+j+2)被S换成k+j+2*k+j+2,计算时先计算2*k,结果为21;S(j+k+2)被S换成j+k+2*j+k+2,计算时先计算2*j,结果为18。程序的运行结果是21,18。18、有如下程序#include<stdio.h>main(){inti,data;scanf("%d",&data);for(i=0;i<5;i++){if((i<data&&i%2)||(i>data&&i%3==0))continue;printf("%d,",i);程序运行时,从键盘输入:13<回车>后,程序输出结果为()。A、0,2.4,B、1,3,5,C、0,1,2.3,4,5,D、0,1,2,3,标准答案:A知识点解析:程序通过scanf()函数,输入data的值13,for循环中,i的值遍历0~4,对每个i的值执行if语句判断,其中:i>data始终为假;所以表达式i>data&&i%3==0始终为假;所以if语句的判断条件需要看i<data&&i%2的值,由于i<data始终为真,所以i<data&&i%2的值又取决于i%2的值,也就是说整个if语句的判断条件取决于i%2的值,如果i%2为真,那么if语句成立,执行continue,否则执行printf()函数,所以当i取值l、3时,i%2的为1,if条件成立,执行continue;当i取值0、2、4时,i%2的值为0,if条件不成立,执行printf()函数,输出0,2,4,本题答案为A。19、下述语句中,在字符串s1和s2相等时显示“theyareEqual”的是()。.A、if(*s1==*s2)puts("theyareEqual");B、if(!strcmp(s1,s2))puts("theyareEqual");C、if(s1==s2)Puts("theyareEqual");D、if(strcmp(s1,s2))puts("theyareEqual");标准答案:B知识点解析:字符串比较不能用两个等号(==)来进行比较,应使用strcmp(s1,s2)函数来比较。strcmp(s1,s2)函数的功能是:当字符串s1和s2相等时,返回值为0,因此,当表达式!strcmp(s1,s2)==1时,条件成立,执行后面的语句,输出thevareEqual。20、有以下程序#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b);}程序运行后的输出结果是A、2B、4C、6D、8标准答案:D知识点解析:本题考查位运算符,题目中将a向左移两位,左移两位表示乘以4,所以答案为8,选项D正确。21、以下叙述中错误的是()。A、使用三种基本结构构成的程序只能解决简单问题B、结构化程序由顺序、分支、循环三种基本结构组成C、C语言是一种结构化程序设计语言D、结构化程序设计提倡模块化的设计方法标准答案:A知识点解析:暂无解析22、有以下程序#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知识点解析:暂无解析23、以下选项中关于程序模块化的叙述错误的是()。A、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序B、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:A知识点解析:程序模块化思想中,可以采用自顶向下、逐步细化的方法。所以选项A中“自底向上”的说法是错误的。24、软件生命周期是指()。A、软件产品从提出、实现、使用维护到停止使用退役的过程B、软件从需求分析、设计、实现到测试完成的过程C、软件的开发过程D、软件的运行维护过程标准答案:A知识点解析:通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说,软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。25、有以下程序:#include<stdio.h>main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",c);}程序执行后的输出结果是()。A、1B、2C、3D、4标准答案:C知识点解析:该程序中int*p1=&a,*p2=&b,*p=&c;指定义三个指针变量,并赋值,即使p1指向a;p2指向b;p指向c。*p=*p1*(*p2);该条语句是给p所指的存储单元c赋值,就是p1所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a*b,等价于c=1*3=3;因此C选项正确。26、在C语言中,只有在使用时才占用内存单元的变量,其存储类型是()。A、auto和staticB、extern和registerC、auto和registerD、static和register标准答案:C知识点解析:auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时系统会给它们分配存储空间,在函数调用结束时就自动释放这些存储空间。register:为了提高效率,C语言允许将局部变量的值放在CPU的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形式参数可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域从变量定义处开始,到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件终了。static:静态局部变量属于静态存储类别,在静态存储区内分配存储单元。静态局部变量在程序整个运行期间都不释放。27、下列条件语句中,输出结果与其他语句不同的是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的值,与其他选项正好相反。28、若有定义:inta,b,c;以下程序段的输出结果是()。a=11;b=3;c=0:printf("%d\n",c=(a/b,a%b));A、2B、0C、3D、1标准答案:A知识点解析:C语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。因此变量c的值为a%b即11%3=2。故答案为A选项。29、下列叙述中正确的是()。A、顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的B、顺序存储结构只针对线性结构,链式存储结构只针对非线性结构C、顺序存储结构能存储有序表,链式存储结构不能存储有序表D、链式存储结构比顺序存储结构节省存储空间标准答案:A知识点解析:链式存储结构既可以针对线性结构也可以针对非线性结构,所以B)与C)错误。链式存储结构中每个结点都由数据域与指针域两部分组成,增加了存储空间,所以D)错误。30、有以下程序:#includemain(){int8[12]={1,2,3,4,4,3,2,1,0,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]]++;for(i=0;i<5;i++)printf(’’%d,’’,c[i]);printf(’’\n’’);}程序运行后的输出结果是()。A、1,3,3,3,2B、4,3,3,3,2C、1,2,3,4,5D、5,4,3,2,1标准答案:A知识点解析:for循环中是对c[]赋值,但c[]的下标由s[i]确定,所以通过数s[]中的下标个数便可知对应的c[]的值,其中s[]的值中,0,1,2,3,4分别出现了1,3,3,3,2次,所以c[0]=1,c[1]=c[2]:c[3]=3,c[4]=2。31、以下叙述中正确的是A、’\0’表示字符0B、a表示一个字符常量C、表达式:’a’>’b’的结果是"假"D、’\"’是非法的标准答案:C知识点解析:A选项中,’\0’表示结束;B选项中,字符常量是用单引号括起来的一个字符;D选项中,’\"’是双引号符。因此C选项正确。32、用于软件测试的实例主要包括哪些内容?()A、输入数据和测试规程B、测试程序和输出结果C、输入数据和预期输出结果D、输入数据、测试规程和输出数据标准答案:C知识点解析:用于软件测试的实例主要包括输入数据和预期输出结果。33、下列说法正确的是A、int(*def)[10];----def指向一个指针,该指针指向10个整型变量构成的数组B、int*(*gh[10]);---gh指向一个指针,该指针指向10个整型变量构成的数组C、int*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组D、A,C均正确标准答案:D知识点解析:int*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组,int(*def)[10];----def指向一个指针,该指针指向10个整型变量构成的数组。34、有以下程序#include<stdio.h>main(){intx=23;do{printf("%2d\n",x--);}while(!x);}程序的执行结果是A、输出321B、输出23C、不输出任何内容D、陷入无限循环标准答案:B知识点解析:%2d表示输出的整型变量占2列。程序执行过程为:输出x为23,之后x自减得x=22,!x为假(0),while条件不成立,退出循环。B选项正确。35、有以下程序#include<stdio.h>main(){inti,*ptr;intarray[4]={0,1};for(ptr=array,i=0;i<3;i++,ptr++){if(*ptr==0)putchar(’#’);elseputchar(’M’+*ptr);}printf("\n");}程序运行后的输出结果是A、MO#B、#F#C、MMMD、#N#标准答案:D知识点解析:for语句中把array数组首地址值赋给ptr,ptr++表示每次执行完循环体后,ptr指向下一数组元素,当指针指向值为0时,输出#,否则’M’再加上指针对应数组值进行输出,当*ptr=1时,’M’+1=’N’,结果输出为#N#,答案为D选项。36、有以下程序#include<stdio.h>main(){chars1[]="programe",s2[]="Language";char*p1=s1,*p2=s2;intk;for(k=0;k<8;k++)if(*(p1+k)==*(p2+k))printf("%s\n",(p1+k));}程序的运行结果是A、grameameeeB、gaeC、programeD、无输出字符标准答案:A知识点解析:定义两个指针变量p1,p2,分别指向数组s1,s2首地址,在for循环中,比较两个指针对应地址的元素是否相等,如果相等,则输出当前指针指向地址的字符串,答案为A选项。37、设某二叉树的前序序列与中序序列均为ABCDEFGH,则该二叉树的后序序列为A、HGFEDCBAB、EFGHABCDC、DCBAHGFED、ABCDEFGH标准答案:A知识点解析:二叉树遍历可以分为3种:前序遍历(访问根结点在访问左子树和访问右子树之前)、中序遍历(访问根结点在访问左子树和访问右子树两者之间)、后序遍历(访问根结点在访问左子树和访问右子树之后)。二叉树的前序序列与中序序列相同,说明此树结点没有左子树,且第一个节点A为根节点,而后序遍历中根节点应在最后被访问,即节点A在最后出现,由此推断出后序遍历为HGFEDCBA,故A选项正确.38、有以下程序#include<stdio.h>#include<string.h>main(){inti,len;charb[]="WelcomeyoutoBeijing!";len=strlen(b);for(i=0;i<len;i++)if(b[i]==’’){strcpy(b,b+i+1);i=0;}printf("%s\n",b);}程序运行后的输出结果是A、Beijing!B、toBeijing!C、WelcomeyoutoBeijing!D、youtoBeijing!标准答案:A知识点解析:for循环的作用就是每次遇到空格,将空格后面的移动到数组的最前面。因此数组最后的状态时Beijing!\0g!\0ng!\neijing!\0;但是printf("%s")打印遇到\0自动结束。因此,打印Beijing!。故答案为A选项39、下面函数的功能是()。sss(s,t)char*s,*t;{while(*s);while(*t)*(s++)=*(t++);returns;}A、将字符串s复制到字符串t中B、比较两个字符串的大小C、求字符串的长度D、将字符串t续接到字符串s中标准答案:D知识点解析:本题考查指针变量的运用。本题中的函数实质上是将字符串t续接到字符串s中。40、有以下程序:#include<stdio.h>#defineN4voidfun(inta[][N],intb[])inti:for(i=0:i<N;i++)b[i]=a[i][i];main()intx[][N]={{1,2,3},{4},{5,6,7,8},{9,10};,y[N],i;fun(x,y);for(i=0:i<N;i++)printf("%d",y[i]);printf("\n"):}程序运行的结果是()。A、1234B、1070C、1459D、3480标准答案:B知识点解析:数组x有4列。fun函数中for循环的作用是将二维数组前4行的对角线元素分别赋给b[0],b[1],b[2],b[3]。在主函数中,二维数组初始化为{1,2,3},{4},{5,6,7,8},{9,10},所以可以看出对角线元素为1070。二、程序填空题(本题共1题,每题1.0分,共1分。)41、给定程序中,函数fun的功能是:在任意给定的9个正整数中找出按升序排列时处于中间的数,将原数据序列中比该中间数小的数用该中间数替换,位置不变,在主函数中输出处理后的数据序列,并将中间数作为函数值返回。例如,有9个正整数:1572387582145按升序排列时的中间数为:8处理后主函数中输出的数列为:8882387882145请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#defineN9intfun(intx[]){inti,j,k,t,mid,b[N];for(i=0;i<N;i++)b[i]=x[i];for(i=0;i<=N/2;i++){k=i;for(j=i+1;j<N;j++)if(b[k]>b[j])k=j;if(k!=i){/*********found*********/t=b[i];b[i]=【1】;b[k]=t;}}/*********found*********/mid=b[【2】];for(i=0;i<N;i++)/*********found*********/if(x[i]【3】mid)x[i]=mid;returnmid;}main(){inti,x[N]={1,5,7,23,87,5,8,21,45};for(i=0;i<N;i++)printf("%d",x[i]);printf("\nThemiddatais:%d\n",fun(x));for(i=0;i<N,i++)printf("%d",x[i]);printf("\n");}标准答案:(1)b[k](2)4或N/2(3)<知识点解析:数组中的9个数任意排列,要找到按升序排列时处于中间位置的数,应首先对数组进行升序排列。因为只需找到中间位置的数即可,故不必对整个数组进行排序,只需要排列出数组的前半部分。找到中间数后,遍历原数组,将小于中间数的元素进行替换。填空1:利用选择算法排序,先指定一个元素为最小,用这个数与其后的所有数进行比较,若找小于此数,则进行替换。此处考查替换操作。填空2:元素mid存放中间位置的数,数组长度为9,因此中问元素数为b[4]。填空3:遍历数组,当元素小于中间位置的数(即mid)时,进行替换。三、程序修改题(本题共1题,每题1.0分,共1分。)42、下列给定程序中函数fun的功能是:将p所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABCDEFGHIJK。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODI1.C中,不得增行或删行,也不得更改程序的结构。#include<stdio.h>voidfun(char*p,char*b){inti,k=0;while(*p){i=1;while(i<=3&&*p){/**********found**********/b[k]=p;k++;P++;i++;}if(*p){/**********found**********/b[k++]="";}}b[k]=’\0’;}main(){chara[80],b[80];printf("Enterastring:");gets(a);printf("Theoriginalstring:");puts(a);fun(a,b);printf("\nThestringafterinsertspace:");puts(b);printf("\n\n");}标准答案:(1)b[k]=*p;(2)b[k]=’’;k++;。知识点解析:本题考查:指针类型变量作为函数的参数,函数的参数不仅可以是整型、实型、字符型等数据类型,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中。C语言中为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”,例如,pointer代表指针变量,而*pointer是pointer所指向的变量。四、程序设计题(本题共1题,每题1.0分,共1分。)43、假定输入的字符串中只包含字母和*号。请编写函数fun,它的功能是:将字符串尾部的*号全部删除,前面和中间的*号不删除。例如,字符串中的内容为:*A*BC*DEF*G*,删除后,字符串中的内容应当是:*A*BC*DEF*G。在编写函数时,不得使用C语言提供的字符串函数。注意:部分源程序在文件PROG1.C文件中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#includevoidfun(char*a){}main(){chars[81];voidNONO();printf("Enterastring:\n");gets(s);fun(s);printf("Thestringafterdeleted:\n");puts(s);NON0();}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti;chars[81];in=fopen("in.dat","r");out=fopen("out.dat","w");for(i=0;i<10;i++){fscanf(in,"%s",s);fun(s);fprintf(out,"%s\n",s);}fclose(in);fclose(out);}标准答案:inti=0:char*p,*q;p=q=a;while(*p)p++;P--;while(*P==’*’)P--;while(q<=p){a[i]=*q;i++:q++;}a[i]=’\0’;知识点解析:(1)首先,使用一个指针P指向串尾,然后对指向串尾的指针P指向的字符进行判断,如果是“*”,指针P就跳过,这样来设置一个指针变量q指向字符串的头位置。(2)然后,将由字符串起始到最后一个字母之间的字符拷贝到字符串a。(3)最后,在新生成的字符串尾加’\0’。国家二级(C语言)机试模拟试卷第3套一、程序填空题(本题共1题,每题1.0分,共1分。)1、使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,通过定义并赋初值的方式,利用结构体变量存储了一名学生的学号、姓名和3门课的成绩。函数fun的功能是将该学生的各科成绩都乘以一个系数a。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>typedefstruct{intnum;charname[9];floatscore[3];}STU;voidshow(STUtt){inti;printf("%d%s:",tt.num,tt.name);for(i=0;i<3;i++)printf("%5.1f",tt.score[i]);printf("\n");}/*********found*********/voidmodify(【1】*ss,floata){inti;for(i=0;i<3;i++)/*********found*********/ss->【2】*=a;}main(){STUstd={1,"Zhanghua",76.5,78.0,82.0};floata;printf("\nTheoriginalnumberandnameandscores:\n");show(std);printf("\nInputanumber:");scanf("%f",&a);/*********found*********/modify(【3】,a);printf("\nAresultofmodifying:\n");show(std);}标准答案:(1)STU(2)score[i](3)&std知识点解析:本题是利用结构体存储学生记录,对记录进行修改并由实参ss返回。填空1:实参ss是一个结构型指针变量,所以应填STU。填空2:该学生的各科成绩都乘以一个系数a,所以应填score[i]。填空3:函数的调用,由于函数定义时使用的指针结构型变量,所以应填&stdc,【考点
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成都医学院《科技论文写作工程管理》2023-2024学年第一学期期末试卷
- 监理如何审查施工方案
- 2024年股权转让授权合同模板
- 2024年购物广场饰品独家销售合同
- 2024幼儿园儿童入园行为规范及家长责任协议书3篇
- 2024年金融科技解决方案提供与实施合同
- 2024年度LED灯具购销合同模板(升级版)3篇
- 2024年规范化二手集资房买卖协议样本版B版
- 土石方安全施工方案
- 2024民间借款抵押担保虚拟货币交易合同3篇
- 精神科出走防范预案及应急处理流程
- 高中英语外研版新教材unit3说课like-father-like-son
- 印度尼西亚民法
- 金属钌及其化合物
- 【西平李氏】忠武郡王李晟后裔分布及部分家谱
- 水库回水计算(实用)
- 人力资源管理概论全套课件
- 伊索寓言-狗和影子课件
- 《上帝掷骰子吗:量子物理史话》导读学习通超星课后章节答案期末考试题库2023年
- 卸船机用行星减速机的设计-毕业设计
- 中班美术活动美丽的蝴蝶教案【含教学反思】
评论
0/150
提交评论