版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
国家二级(C语言)机试模拟试卷25(共9套)(共377题)国家二级(C语言)机试模拟试卷第1套一、选择题(本题共39题,每题1.0分,共39分。)1、以下叙述中错误的是()。A、C语言中的每条可执行语句和非执行语句最终鄙将被转换成二进制的机器指令B、C程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件C、用C语言编写的程序称为源程序,它以ASCII代码形式存放在一个文本文件中D、C语言源程序经编泽后生成后缀为.obj的目标程序标准答案:A知识点解析:C语言中的非执行语句不会被编译,不会生成二进制的机器指令,所以A错误。由C语言构成的指令序列称C源程序,C源程序经过C语言编泽程序编译之后生成一个后缀为.OBJ的二进制义件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。2、以下选项中叙述正确的是()。A、函数体必须由{开始B、C程序必须由mflin语句开始C、C程序中的注释可以嵌套D、C程序中的注释必须在一行里完成标准答案:A知识点解析:函数体是函数首部下面的花括号内的部分,所以函数休必须由(开始,A项正确。一个源程序文件可以包括预处理命令、全局声明、函数定义,程序总是从main函数开始执行的,不是main语句,B项错误。C程序中允许两种注释,以//开头的单行注释;以/*开始,以*/结束的块式注释,D项错误。函数可以嵌套,注释不能嵌套,C项错误。3、假设有语句sizeof(double),则它是()。A、—个整型表达式B、—个双精度浮点型表达式C、—种函数调用D、—种函数定义标准答案:A知识点解析:sizeof(double)是C语言内部规定的一个计算参数(double)在计算机的内存中所占用的字节数量的函数,它返回一个整数值。4、下列程序的输出结果是()。#include<stdio.h>voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=1,b=2,*x=&a,*y=&b;fun(x,y);printf("%d%dt",a,b);}A、21B、12C、编译出错D、00标准答案:B知识点解析:本题考查函数调用时的参数传递。分析题目可知mn函数的形参是指向实参的指针,但main()函数中调用fun()函数时,实参是指针变量x、y(分别为指向a和b的指针),a、b的值在函数调用前后未发生变化,因而a=1,b=2,即输出12。5、有以下程序#includevoidfun(intx,inty,int*c,int*d){*c=x+y;*d=x-y;}main(){inta=4,b=3,c=0,d=0;fun(a,b,&c,&d);printf("%d%d\n",c,d);}程序的输出结果是()。A、71B、43C、34D、00标准答案:A知识点解析:考查函数调用的参数传递。值传递过程中,形参只是实参的一个副本,形参改变不能影响到实参,所以值传递是单向传递,只能由实参传给形参。地址传递过程中,形参和实参指向同一个地址空间,两者的改变保持同步,所以在本程序调用结束之后,c、d值发生了改变,c=7,d=1,输出结果为A)。6、在下列模式中,能够给出数据库物理存储结构与物理存取方法是()。A、外模式B、内模式C、概念模式D、逻辑模式标准答案:B知识点解析:数据库系统的三级模式是概念模式,外模式和内模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视图,给出了每个用户的局部数据描述。内模式又称物理模式,它给出了数据物理存储结构与物理存取方法,所以选择B。7、以下程序的输出结果是()。#includeintm=13;intfun(intx,inty){intm=2;retum(x*y—m);}main(){inta=7,b=6;printf("%d",fun(a,b)/m);}A、1B、3C、7D、10标准答案:B知识点解析:本题考查的是函数调用时的参数的作用域。在函数调用时,当全局变量和局部变量的名称相同时,在局部变量的作用域内,局部变量起作用,因而在fun函数内m的应该等于2,main中的m为13,所以返回值为7×6.2=40,而fun(a,b)/m值为40/13=3。8、数据库的故障恢复一般是由()来执行恢复。A、电脑用户B、数据库恢复机制C、数据库管理员D、系统普通用户标准答案:C知识点解析:数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责执行故障恢复。9、下列叙述中正确的是()。A、在switch语句中,不一定使用break语句B、在switch语句中必须使用defaultC、break语句必须与switch语句中的case配对使用D、break语句只能用于switch语句标准答案:A知识点解析:defauh语句在switch语句中可以省略,所以B错误;switch语句中并非每个case后都需要使用break语句,所以C错误;break语句还可以用于for等循环结构中,所以D错误10、以下程序的输出结果是()。#include#defineF(x)2.84+x#definew(y)printf("%D",(int)(y))#defineP(Y)w(y)main(){intx=2;P(F(5)*x);}A、12B、13C、14D、16标准答案:A知识点解析:本题考查带参数的宏定义及相关运算。P(F(5)*x)=P(2.84+5*2)=P(12.84),调用w(12.84),输出(int)(12.84)=12。11、以下选项中可用做c程序合法实数的是()。A、3.0e0.2B、1e0C、E9D、9.12E标准答案:B知识点解析:A选项中E后面的指数必须为整数。C语言规定,E之前必须要有数字,所以C选项错误。E后面必须要有数字,且必须为整数,所以D选项错误。12、有以下程序:#includemain(){inti=5:d0{if(i%3==1)if(i%5==2){printf(“*%d”,i);break;}i++:}while(i!=0);printf(“\n”);}程序运行后的输出结果是()。A、*2*6B、*3*5C、*5D、*7标准答案:D知识点解析:do…while语句是先执行后判断,所以第一次先执行循环体,判断i%3==1的条件,由于i为5,所以余数为2,条件不成立,执行i++,i的值为6,判断while条件为真:第二次执行循环体,同第一次循环的执行过程一样,i的值变为7,判断while条件为真;第三次执行循环体,此时i%3==1,条件成立,再判断i%5==2也成立,打印*与i的值,即:*7,然后执行break语句,跳出循环。所以选择D选项。13、若有以下程序:#ineludemain(){inta=0,b=0,c=0;c=(a-=++a),(a+=b,b+=4);printf("%d,%d,%d\n",a,b,c);}则程序的输出结果是()。A、0,4,0B、0,4,4C、1,4,lD、1,4,4标准答案:A知识点解析:逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算,且逗号运算符的优先级最低,所以先计算c=(a-=++)这部分。其中,赋值运算符从右往左计算,先执行++a,a自增1后再赋值,所以a的值为1,执行a=a-1,即a=1-1,a的值为0,并将。赋给变量c。第二部分(a+=b,b+=4),先执行a=a+b,a=0+0,即a的值为0,然后执行b+=4,b=0+4,即b的值为4。所以打印结果为0,4,0,选择A选项。14、以下程序的输出结果是()。#includemain(){inta[3][3]={0,1,2,0,1,2,0,1,2},i,j,s=1;for(i=0;i<3;i++)for(j=i;j<=i.j++)s+=a[i][a[j][j]];printf("%d\n",s);}A、3B、4C、1D、9标准答案:B知识点解析:当外层循环为i时,内层循环j只能取j=i,所以s+=a[i][a[j][j]],其实就是s+=a[i][a[i][i]],当i=0时,s=s+a[0][a[0][0]]。s+a[0][0]=1,当i=1时,s=s+a[1][a[1][1]]=s+a[1][1]=1+1=2,当i=2时,s=s+a[2][a[2][2]]=s+a[2][2]=2+24。15、计算机能直接执行的程序是()。A、源程序B、目标程序C、汇编程序D、可执行程序标准答案:D知识点解析:计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe。所以选择D选项。16、下面的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次。17、下列程序的输出结果是()。#inc1udevoidmain(){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。18、有以下程序#defineF(X,Y)(X)木(Y)main(){inta=3,b:4;printf(“%d\n”,F(a++,b++));}程序运行后的输出结果是()。A、12B、15C、16D、20标准答案:A知识点解析:此题考查的是编译预处理命令以及自加运算符。F(a++,b++)先取a和b的值,参加运算,再把a和b的值分别加1,所以F(a++,b++)=F(3,4)=3*4=12。19、已知二叉树后序遍历序列是CDABE,中序遍历序列是CADEB,它的前序遍历序列是()。A、ABCDEB、ECABDC、EACDBD、CDEAB标准答案:C知识点解析:由于后序遍历的最后一个元素为E,所以E为根结点,所以它的前序遍历的首个元素为E,故排除A和D选项。由于中序遍历中,元素B在元素根结点E的后面,所以B为二叉树的右子树,并且该二叉树右子树只有一个元素,所以前序遍历的最后一个元素应为B,故选项C为正确选项,即该二叉树的前序遍历序列是EACDB。20、下列方法中,不属于软件调试方法的是()。A、回溯法B、强行排错法C、集成测试法D、原因排除法标准答案:C知识点解析:软件调试主要采用以下三种方法:强行排错法:作为传统的调试方法,其过程可概括为设置断点、程序暂停、观察程序状态、继续运行程序。回溯法:该方法适合于小规模程序的排错、即一旦发现了错误,先分析错误征兆,确定最先发现“症状”的位置。原因排除法:原因排除法是通过演绎和归纳,以及二分法来实现。21、有如下程序#includemain(){char*p1=0;int*p2=0;double*p3=0;printf("%d,%d,%d\n",sizeof(p1),sizeof(p2),sizeof(p3));}程序运行后的输出结果是()。A、4,4,4B、1,4,8C、0,0,0D、1,2,4标准答案:A知识点解析:函数fun()的功能是改变了指针s的指向。由于函数传递过程中形参只是实参的一个副本,形参指针指向的变化不能影响到实参指针的指向,所以函数fun()并不能改变实参q的指向,*q仍与a[0]等价,输出的结果为1,答案选A)。22、数据库应用系统中的核心问题是()。A、数据库设计B、数据库系统设计C、数据库维护D、数据库管理员培训标准答案:A知识点解析:数据库应用系统是在数据库管理系统(DBMS)支持下建立的计算机应用系统,核心问题是数据库设计。23、下列关于数据库设计的叙述中,正确的是()。A、在需求分析阶段建立数据字典B、在概念设计阶段建立数据字典C、在逻辑设计阶段建立数据字典D、在物理设计阶段建立数据字典标准答案:A知识点解析:数据字典是在需求分析阶段建立,存数据库设计过程中不断修改、充实和完善的。24、C语言程序的模块化通过以下哪个选项来实现()。A、函数B、变量C、程序行D、语句标准答案:A知识点解析:暂无解析25、以下关于C语言数据类型使用的叙述中错误的是A、若要处理如"人员信息"等含有不同类型的相关数据,应自定义结构体类型B、若要保存带有多位小数的数据,可使用双精度类型C、若只处理"真"和"假"两种逻辑值,应使用逻辑类型D、整数类型表示的自然数是准确无误差的标准答案:C知识点解析:C语言中没有逻辑类型,所以C错误,若要保存带有多位小数的数据,可以用单精度类型也可以用双精度类型,处理包含不同类型的相关数据可以定义为结构体类型,整数类型可以无误差的表示自然数。26、有以下程序:#includevoidfun(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、S和P都是指针变量B、s数组中元素的个数和P所指字符串长度相等C、可以用*P表示s[0]D、数组s中的内容和指针变量P中的内容相同标准答案: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、有以下程序:#includemain(){intx=8:for(;X>0;X一一){if(x%3){printf(“%d,”,X一一);continue;}printf(“%d,”,一一X);}}程序运行后的输出结果是()。A、7,4,2,B、8,7,5,2,C、9,7,6,4,D、8,5,4,2,标准答案:D知识点解析:coutinue的作用是跳出循环体中剩余的语句而进行下一次循环。第一次循环x的值为8,循环体中if条件成立,打印x的值8后将x减1,再执行continue语句,跳出本次循环。第二次判断循环条件时,x的值变为6,不满足循环体内if条件,执行打印一一x的操作,即打印5后跳出循环。第二三次判断循环条件时x的值为4,满足循环体中if条件,执行打印x一一的操作,即打印4,后将x值减一,执行continue语句,跳出本次循环。第四次判断循环条件时x的为2,满足循环体中if条件,打印x一一,即打印2后将x减一,执行continue语句,跳出本次循环。在进行for条件表达式中第三个表达式x一一的操作后x的值为0,不满足条件结束循环。所以打印结果为8,5,4,2,。28、有以下程序:#iinclude<stdio.h>main(){inta=7,b=0;do{b+=a;a-=1;}while(a--);printf("%d,%d\n",b,a);}执行后的输出结果是()。A、28,0B、28,1C、16,0D、16,-1标准答案:D知识点解析:分析程序可知,do语句1…while(语句2),每次循环在语句1中a的值减1,在语句2中判断a的值后,a的值又减1,所以在每次循环体执行完后,b累加的a的值分别为7,5,3,1,a的值分别为6,4,2,0,最后当a为0时,while判断条件为false,此时a的值再减1,为-1,到此循环结束,所以b的值为16,a的值为-1,故答案选D。29、有以下程序#include<stdio.h>main(){structcm{intx;inty;}a[2]={4,3,2,1};printf("%d\n",a[0].y/a[0].x*a[1].x);}程序运行后的输出结果是()。A、lB、4C、0D、3标准答案:C知识点解析:由结构体的定义初始化可知,a[0].x=4,a[0].y=3,a[1].x=2,a[1].y=1,因此计算a[0].y/a[0].x*a[1].x=3/4*2=(3/4)*2=0*2=0,故答案为C选项。30、若有以下程序段doublex=5.16894;printf("%f\n",(int)(x*1000+0.5)/(double)1000);则程序段的输出结果是A、5.170000B、5.175C、5.169D、5.168标准答案:C知识点解析:%f的输出格式是以带小数点的数学形式输出浮点数。首先计算x*1000,结果为5168.94然后+0.5,结果为5169.44,然后进行强制类型转换,转换成整型为5169,然后除以双精度数据1000,结果也为双精度数据5.169,输出时按照%f的格式输出,所以输出结果为5.169000。31、若语句’’t=fun(fun(x,y,a),(a+b,a+A、3B、4C、5D、6标准答案:A知识点解析:本题考查函数调用时的参数个数。在函数调用时,实参必须和形参的个数、类型一一对应。但函数的计算结果只有一个值,因而fun函数的参数个数为3。32、下面选项中关于编译预处理的叙述正确的是A、预处理命令行必须使用分号结尾B、凡是以#号开头的行,都被称为编译预处理命令行C、预处理命令行不能出现在程序的最后一行D、预处理命令行的作用域是到最近的函数结束处标准答案:B知识点解析:本题考查预编译的预编译处理命令行,预处理命令行不能以分号结尾,所以A选项错误,预处理命令行可以出现在程序的最后一行,预处理命令行作用域是整个文件33、有以下程序#include<stdio.h>intfun(intn){inta;if(n==1)return1;a=n+fun(n-1);return(a);}main(){printf("%d\n",fun(5));}程序的输出结果是A、9B、14C、10D、15标准答案:D知识点解析:考查函数的递归调用,只需要一步一步递归调用fun函数即可,执行fun(5)=5+(4+(3+(2+fun(1))))=15,所以答案为D选项。34、有以下程序:intf1(doublea){returna*a;)intf2(intx,inty){doublea,b;a=f1(x);b=f1(y);returna+b;}main(){doublew;w=f2(2.1,4.0);}程序执行后,变量W的值是()。A、20.21B、20C、20.0D、0.0标准答案:C知识点解析:本题考查函数调用的使用。计算w的时候,先调用f2函数,f2函数的公式是“a+b”,计算a和b的时候又调用到f1函数,f1的函数是“a*a”,因此,w的计算公式为:w=(double)[(int)(2.1*2.1)+(int)(4.0*4.0)]=20.0。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、有以下程序#include<stdio.h>main(){inta=2,b;b=(a>>=1)+4;printf("%d,%d",a,b);}程序运行后的输出结果是A、1,5B、2,4C、2,6D、2,5标准答案:A知识点解析:a>>=1等价于a=a>>1,即a除以2,则a=2,b=(a>>1)+4=1+4=5,因此,打印出来为1,5。答案为A选项。37、语句printf("%d\n",strlen("\t\"\\\n\’\065\08AB"));的输出结果是A、6B、7C、8D、9标准答案:A知识点解析:字符串"\t\"\\\n\’\065\08AB"中共有13个字符,而strlen()函数从字符串第一个字符开始扫描,直到碰到第一个结束符’\0’为止,然后返回计数器值(长度不包含"\0")。故输出结果为6。答案为A选项38、以下叙述错误的是()。A、C语言区分大小写B、C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改C、整数和实数都能用C语言准确无误地表示出来D、在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示标准答案:C知识点解析:本题涉及C语言最基本的3个概念:①C语言是区分大小写的,q和Q是两个不同的变量;②变量的实质就是在内存中占据一定的存储单元,存储单元里存放的是该变量的值,变量的值可以根据需要进行修改:③整数在允许的范围内可以准确的表示出来,但不可能表示无限度的实数。正整数可用二进制、十越制、八进制和十六进制表示。39、以下程序段中完全正确的是()。A、int*P;scanf("%d",&p);B、int*P;scanf("%d",p);C、intk,*p=&k;scanf("%d",p)D、intk,*P;*p=&k;scanf("%d",p)标准答案:C知识点解析:选项A错在没有对指针进行初始化,是无效指针,并且在scanf("%d",&p)中无需再进行取地址操作;选项B没有对指针进行初始化,是无效指针;选项D,语句*p=&k;的左端*p是指针所指内存空间的值,&k是地址,应为p=&k。二、程序填空题(本题共1题,每题1.0分,共1分。)40、使用VC++2010打开考生文件夹下blank1中的解决方案。此解决方案的项目中包含一个源程序文件blank1.c。在此程序中,函数fun的作用是:统计整型变量m中各数字出现的次数,并存放到数组a中,其中:a[0]存放0出现的次数,a[1]存放1出现的次数,……a[9]存放9出现的次数。例如,若m为14579233,则输出结果应为:0,1,1,2,1,1,0,1,0,1,请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。注意:源程序存放在考生文件夹下的BLANK1.C中。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>voidfun(intm,inta[10]){inti;for(i=0;i<10;i++)/*********found*********/【1】=0;while(m>0){/*********found*********/i=【2】;a[i]++;/*********found*********/m=【3】;}}main(){intm,a[10],i;printf("请输入一个整数:");scanf("%d",&m);fun(m,a);for(i=0;i<10;i++)printf("%d,",a[i]);printf("\n’);}标准答案:(1)a[i](2)m%10(3)m/10知识点解析:数组a各元素初始化为0,用求余和整除相结合的方法得到数字的每一位数字,并用它做为数组a的下标,相应元素加1。填空1:数组a的10个元素赋值为O。填空2:m%10可得到数m的最后一位数字。填空3:m/10可使数字截短,即去掉最后一位。三、程序修改题(本题共1题,每题1.0分,共1分。)41、下列给定程序中函数fun的功能是:将P所指字符串中的所有字符复制到b中,要求每复制三个字符之后插入一个空格。例如,若给a输入字符串:ABCDEFGKHIJK,调用函数后,字符数组b中的内容为:ABCDEFGHIJK。请改正程序中的错误,使它能得出正确的结果。注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构。#includevoidfun(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];prinff(“Enterastring:”);gets(a);prinff(“Theoriginalstring:”);puts(a);fun(a,b);prinff(“\nThestringafterinsertspace:”);puts(b);prinff(“\n\n”);}标准答案:(1)b[k]=*p;(2)b[k]=‘’;k++;知识点解析:暂无解析四、程序设计题(本题共1题,每题1.0分,共1分。)42、N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun,其功能是:求出平均分,并由函数值返回。例如,若学生的成绩是:8576698591726487,则平均分应当是:78.625。注意:部分源程序在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。#include#include#de6neN8structslist{doubles;structslist*next;};typedefstructslistSTREC;doublefun(STREC*h){}STREC*creat(double*s){STREC*h,*P,*q;inti=0;h=P=(STREC*)malloc(sizeof(STREC));p一>s=0;while(is=s[i];i++;P一>next=q;P=q;}P一>next=0:returnh;}oudist(STREC*h){STREC*p;P=h一>next;prinff(“head”);do{prinff(“一>%4.If”,P一>s);P=P一>next;}while(P!=0);prinff(“\n\n”);}main(){doubles[N]={85,76,69,85,9l,72,64,87},ave;voidNONO();STREC*h;h=creat(s);outlist(h);ave=fun(h);prinff(“ave=%6.3f\n”,ave);NONO();{}voidNONO(){/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/FILE*in,*out;inti,j;doubles[N],ave;STREC*h:in=fopen(“in.dat”,“r”);out=fopen(“out.dat”,“w”);for(i=0;i<10;i++){for(j=0;j标准答案:doublefun(STREC*h){doubleave=0.0:STREC*p=h->next;while(p!=NULL){ave=ave+p—>s;p=p->next;}retumave/N;}知识点解析:暂无解析国家二级(C语言)机试模拟试卷第2套一、选择题(本题共40题,每题1.0分,共40分。)1、有以下程序:#include<stdio.h>main()(intstlm=10,n=1;while(n<3){sum=sum—n;n++;}printf("%d,%d",n,sum);}程序运行后的输出结果是()。A、2,8B、3,7C、3,8D、2,7标准答案:B知识点解析:考查while循环。当循环条件n<3成立的时候,执行循环体{sum=sum—n;n++;}中的语句。循环初值sum为10,n为1。首先判断循环条件n<3成立,开始第1次循环,执行sum=sum—n=10—1=9,执行n++,即将n中的值加1,执行后n为2;此时n中的值为2,sum中的值为9,循环条件n<3成立,继续执行第2次循环,执行sum=sum—n=9—2=7,执行n++,即将n中的值加l,执行后n为3;n为3时,循环条件不成立,结束循环,输出结果为3,7。故B选项正确。2、下面结构体的定义语句中,错误的是()。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知识点解析:C语言中结构体变量的定义有3种方法:①定义结构体类型的同时定义结构体变量,如C项;②使用无名结构体类型定义结构体变量,如D项;③先定义结构体类型,后定义结构体变量,如A项。3、关系数据库管理系统能实现的专门关系运算包括()。A、排序、索引、统计B、选择、投影、连接C、关联、更新、排序D、显示、打印、制表标准答案:B知识点解析:关系数据库管珲系统的专门关系运算包括选择运算,投影运算和连接运算。4、当输入为“Fool?Swalow”时,下面程序的执行结果是()。#include<stdio.h>main(){charc;while(c!=’?’){c=getchar();putchar(c);}}A、SwalowB、FoolC、Fool?D、?Swalow标准答案:C知识点解析:本程序是通过getchar()函数读入字符,并通过putchar()函数将字符逐个输出,当用户输入“?”时停止输出。5、有以下程序:#include<stdio.h>main(){chara=’H’;a=(a>=’A’&&a<=’Z’)?(a+32):a;printf("%c\n",a);}程序运行后的输出结果是()。A、hB、HC、AD、a标准答案:A知识点解析:考查条件运算符。条件表达式的形式为:表达式1?表达式2:表达式3,计算“表达式1”的值,若为“真”,取“表达式2”的值作为整个条件表达式的值;若为“假”,取“表达式3”的值作为整个条件表达式的值。字符参与运算时一般计算其ASCII码,并且一个字母的小写-大写=32(ASCII码),该程序将大写字母转成对应的小写字母,答案选A。6、有以下程序:#include<stdio.h>main(){inti,j;for(i-3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序运行后的输出结果是()。A、432543B、453423C、233445D、233423标准答案:B知识点解析:第一次执行外循环,i的值为3,第一次执行内循环j的值为1,j<=2条件成立,打印i+j的值,即4;第二次执行内循环j的值为2,j<=2条件成立,打印i+j的值,即5;再判断条件不成立,打印回车换行符,跳出内循环。第二次执行外循环,i的值为2,内循环的执行同第一次一样,所以打印3和4,打印回车换行,结束内循环。第三次执行外循环i的值为1,同理内循环中打印2和3,打印回车换行符,结束内循环。7、以下语句中存在语法错误的是()。A、charss[6][20];ss[1]="right?";B、charss[][20]={"right?"};C、char*ss[6];ss[1]="right?";D、char*ss[]={"right?"};标准答案:A知识点解析:A项错误,数组定义后,不能对数组整体赋值,ss是二维数组,ss[1]是一维字符数组,即字符串,字符串赋值可以使用“strcpy(ss[1],”right”);”的形式,但不能使用赋值的形式。B、D两项正确,在定义时对数组同时进行初始化;C项正确,将常量字符串在内存中的首地址赋给指针数组的一个元素。8、若有说明:typedefstruct{inta;charc;}w;则以下叙述正确的是()。A、编译后系统为w分配5个字节B、编译后系统为w分配6个字节C、编译后系统为w分配58个字节D、编译后系统不为w分配存储空间标准答案:D知识点解析:w是一个自定义类型,而不是变量,故编译后系统不为w分配存储空间。当使用w定义变量时才会为其定义的变量分配存储空间。9、以下程序:#include#includemain(){charstr[]="abcd\n\123\xab";printf("%d",strlen(str));}运行后的输出结果是()。A、10B、9C、7D、14标准答案:C知识点解析:本题考查字符串的长度,需注意转义字符串,例如,“\n”表示换行,为一个长度,“\123”表示3位八进制数123表示的字符,为一个长度,“\xab”表示二位十六进制数ab表示的字符,也为一个长度。10、以下程序中函数sort的功能是对a数组中的数据进行由大到小的排序voidsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10},i;sort(&aa[3],5);for(i=0;j<10;i++)ptintf(’’%d,’’,aa[i]);printf(’’\n’’);}程序运行后的输出结果是()。A、1,2,3,4,5,6,7,8,9,10,B、10,9,8,7,6,5,4,3,2,1,C、1,2,3,8,7,6,5,4,9,10,D、1,2,10,9,8,7,6,5,4,3,标准答案:C知识点解析:程序中sort函数的功能是对数组中的数据进行从大到小的排序。主函数main中调用函数“sort(&aa[3],5);”,使得数组aa中从第4个元素开始的5个元素进行从大到小的排序,数组aa中的元素变为:1,2,3,8,7,6,5,4,9,10。并输出这些元素。11、若有如下说明,且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不可以通过extem关键字提前引用。12、下列选项中,不属于数据管理员(DBA)职责的是()。A、数据库维护B、数据库设计C、改善系统性能,提高系统效率D、数据类型转换标准答案:D知识点解析:数据库管理员(DataBaseAdministrator,DBA)是指对数据库的规划、设计、维护、监视等的人员,其主要工作如下:数据库设计。DBA的主要任务之一是数据库设计,具体地说是进行数据模式的设计。数据库维护。DBA必须对数据库中的数据安全性、完整性、并发控制及系统恢复、数据定期转储等进行实施与维护。改善系统性能,提高系统效率。DBA必须随时监视数据库的运行状态,不断调整内部结构,使系统保持最佳状态与效率。13、若要使用C数学库中的sin函数,需要在源程序的头部加上#include关于引用数学库,以下叙述正确的是()。A、通过引用math.h文件,说明sin函数的参数个数和类型,以及函数返回值类型B、将数学库中sin函数链接到编译生成的可执行文件中,以便能正确运行C、将数学库中sin函数的源程序插入到引用处,以便进行编译链接D、实际上,不引用math.h文件也能正确调用sin函数标准答案:A知识点解析:考查文件包含处理。文件包含命令的功能是把指定的文件添加到预处理部分,从而把指定的文件和当前的源程序文件连接起来,该文件则包含了程序要调用的函数的声明。由此,选项B)、C)、D)表述错误。答案选A)。14、下列数据结构中,能够按照“先进后出”原则存取数据的是()。A、循环队列B、栈C、队列D、二叉树标准答案:B知识点解析:栈是按先进后出的原则组织数据的。队列是先进先出的原则组织数据。15、下列程序的运行结果是()。#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,并输出。16、若有以下程序:#includeintf(intm){staticintn=0;inta=2;n++;a++;returnn+m+a;}main(){intk;for(k=0;k<4;k++)printf(“%d,”,f(k));}则程序的输出结果是()。A、3,5,7,9,B、4,7,10,13,C、4,5,6,7,D、4,6,8,10,标准答案:D知识点解析:本题考查静态局部变量以及自增运算符,静态局部变量在函数调用结束后,并不释放,仍然保留它的值,本题中,k为0时,retumn+m+a之前,n为1,a为局部变量,值为3,m为0,所以第一个返回值为4。k为1,在函数返回值之前,静态局部变量为2,局部变量a仍然为3,m为1,所以结果是6,依此类推答案为D。17、一般情况下,当对关系R和S进行自然连接时,要求R和S含有一个或者多个共有的()。A、记录B、行C、属性D、元组标准答案:C知识点解析:进行自然连接时要求两个关系具有相同列,即属性。18、若有以下程序:#includemain(){intb=10,a=-11;a%=b%=4:printf("%d%d\n",a,b);}则程序的输出结果是()。A、12B、-12C、-1-2D、1-2标准答案:B知识点解析:先计算b%=4,即b=b%4,结果为2,然后计算a%=2,结果为-1,最后a的值为-1,b的值为2,所以选择B选项。19、有以下程序#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]);fclose(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选项正确。20、如果需要打开一个已经存在的非空文件“FILE”并进行修改,正确的语句是()。A、fp=fopen("FILE","r");B、fp=fopen("FILE","a+");C、fp=fopen("FILE","w+");D、fp=fopen("FILE","r+");标准答案:D知识点解析:本题考查打开文件函数fopen(),打开文件函数fopen()的调用形式为:fp=fopen(文件名,文件使用方式)。“文件使用方式”说明:方式“r”为以输入方式打开一个文本文件;方式“a+”为以读/写方式打开一个文本文件,保留文件中原有的数据;方式“W+”为以读/写方式建立一个新的文本文件;方式“r+”为以读/写方式打开一个文本文件。21、)以下程序的输出结果是()。#includevoidprt(int*x,int*y,int*z){ptintf("%d,%d,%d\n",++*x,++*y,*(z++));}main(){inta=10,b=40,c=20;prt(&a,&b,&c);prt(&a,&b,&c);}A、11,42,3112,22,41B、11,41,2012,42,20C、11,21,4011,21,21D、11,41,2112,42,22标准答案:B知识点解析:本题考查的是函数参数的传递及自加运算符。主函数中第一次调用函数prt(&a,&b,&c);,此函数中的输出语句printf("%d,%d,%d\n",++*x,++*y,*(z++));使得a和b的值均加1,而*(z++)由于先执行z++所以c的值不变;第二次调用函数prt(&a,&b,&c);使得a和b在上一次的基础上再各自加1(因为形参和实参进行的是地址传递),而c的值仍不变。22、下列定义变量的语句中错误的是()。A、int_int;B、doubleint_;C、charFor;D、floatUS$;标准答案:D知识点解析:C语言规定,变量的标识符只能由字母、数字和下划线3种字符组成,且首字符必须为字母或下划线。在C语言中大写字母和小写字母被认为是两个不同的字符。选项A定义的变量标识符_int和选项B定义的变量标识符_int与C语言的关键字int是不同的,是正确的变量标识。选项C定义的变量标识符For与C语言中的关键字for是两个不同的标识符,所以选项C是正确的,而选项D包含有特殊字符$,因而其不符合C语言的变量命名规定。23、有以下程序:main(){intk=33;printf("%d,%0,%x",k,k,k);}执行后的输出结果是()。A、33,033,0x21B、33,033,21C、3.3041e+007D、33,41,21标准答案:D知识点解析:本题考查不同进制间的转换。printf输出函数中输出变量的格式,由输出格式符决定。题中“%0”格式符表示以八进制的形式输出;“%x”格式符表示以十六进制的形式输出。“33”的八进制和十六进制分别是41和21。24、有以下程序:#include<stdio.h>main(){inta=2,b;b=a<<2;printf("%d\n",b):程序运行后的输出结果是()。A、2B、4C、6D、8标准答案:D知识点解析:本题考查运算符,题目中将a向左移两位,左移两位表示乘以4,所以答案为8,选项D正确。25、以下选项中关于程序模块化的叙述错误的是()。A、可采用自底向上、逐步细化的设计方法把若干独立模块组装成所要求的程序B、把程序分成若干相对独立、功能单一的模块,可便于重复使用这些模块C、把程序分成若干相对独立的模块,可便于编码和调试D、可采用自顶向下、逐步细化的设计方法把若干独立模块组装成所要求的程序标准答案:A知识点解析:程序模块化思想中,可以采用自顶向下、逐步细化的方法。所以选项A中“自底向上”的说法是错误的。26、以下能正确表述算式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)。27、以下关于字符串的叙述中正确的是A、空串比空格打头的字符串小B、两个字符串中的字符个数相同时才能进行字符串大小的比较C、可以用关系运算符对字符串的大小进行比较D、C语言中有字符串类型的常量和变量标准答案:A知识点解析:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,B选项不正确;字符串比较大小除了使用库函数strcn3()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小。因为字符串在表达式中相当于constchar*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。C选项不正确。C语言中只有字符串常量而没有字符串变量,D选项描述不正确;空串的长度为0,而以空格打头的字符串的长度至少为1,因此A选项是正确。28、有以下程序:#includevoidfun(int*a,int*b){int*c;c=a;a=b;b=13;}main(){intx=3,y=5,*p=dzx,*q=&y;fun(p,q);printf("%d,%d,",*p,*q);fun(&x,&y);printf("%d,%d\n",*P,*q);}程序运行后的输出结果是()。A、3,5,3,5B、3,5,5,3C、5,3,3,5D、5,3,5,3标准答案:A知识点解析:fun函数的功能是交换形式参数的值,即交换指针变量a和b的值。但是fun函数并不能够交换实参的值,因此fun(p,q)不能交换p和q的值,所以第一个pfintf语句的输出为3,5。第二个fun函数对x和y的地址进行了操作,同样不能交换x和y的值,但并不影响p和q指针指向的数据,因此第二个printf语句的输出也是3,5。因此A选项正确。29、有以下程序:#include<stdio.h>main(){inti,j,m=55;for(i=1;i<=3;i++)for(j=3;j<=i;j++)m=m%j;printf("%d\n",m);}程序运行后的输出结果是()。A、0B、1C、2D、3标准答案:B知识点解析:第一次执行外循环i的值为1,满足条件,判断第一次内循环,j的值为3,不满足条件,跳出内循环。第二次执行外循环i的值为2,同理也不满足内循环条件,跳出内循环。第三次执行外循环i的值为3,此时进入内循环判断条件时,条件成立,执行m=m%j,m的值为1,跳出内循环,跳出外循环打印m的值。30、有以下程序:#include<stdio.h>#include<string.h>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(structAt){t.a=1002;strcpy(t.b,"ChangRong");t.c=1202.0;}程序运行后的输出结果是()。A、1002,ZhangDa,1202.0B、1002,ChangRong,1202.0C、1001,ChangRong,1098.0D、1001,ZhangDa,1098.0标准答案:D知识点解析:本题考查结构体的相关操作以及传值、传址的区别,该题中调用f函数后,会生成参数a的一个副本,而不会改变a的值,所以a值维持原值,选项D正确。31、设有宏定义:#defineIsDIV(k,n)((k%n==1)?1:0)且变量m已正确定义并赋值,则宏调用:IsDIV(m,5)&&IsDIV(m,7)为真时所要表达的是()。A、判断m是否能被5和7整除B、判断m被5和7整除是否都余1C、判断m被5或者7整除是否余1D、判断m是否能被5或者7整除标准答案:B知识点解析:本题考查逻辑运算符的相关概念,逻辑与若要为真,那么两边都要为真,即m都能被5和7整除都余1,所以选项B正确。32、若有以下程序#include<stdio.h>main(){charc1,c2;c1=’C’+’8’-’3’;c2=’9’-’0’;printf("%c%d\n",c1,c2);}则程序的输出结果是A、H’9’B、H9C、F’9’D、表达式不合法输出无定值标准答案:B知识点解析:本题考察字符变量以及printf()函数相关知识,字符变量c1被赋值为’C’+’8’-’3’,即ASSCII码的运算,67+54-49=72,即H;字符变量c2被赋值为’9’-’0’,但输出时,需要注意的是c1以字符变量输出,而c2是以十进制整型变量输出。因此B选项正确。33、以下选项中,能正确进行字符串赋值的是A、char*s="ABCDE";B、chars[5]={’A’,’B’,’C’,’D’,’E’};C、chars[4][5]={"ABCDE"};D、char*s;gets(s);标准答案:A知识点解析:本题考查字符数组的初始化,B选项中字符数组没有字符串的结束标志所以错误。C选项中字符串包含6个字符,所以不能赋值在左边只能放5个字符的字符串数组中。D选项的指针s没有赋初值,不能使用。所以选项A正确。34、有以下程序:#ineludetypedefstruct{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、2,4B、1,2C、1,4D、2,3标准答案:B知识点解析:结构体变量可以作为函数的参数和返回值。作为函数的实参时,可以实现函数的传值调用。当使用结构体变量作为函数的形参时,实参也应该是结构体变量名以实现传值调用,实参将拷贝副本给形参,在被调用函数中改变形参值对于调用函数中的实参没有影响。所以选择B。35、有表示公司和职员及工作的三张表,职员可在多家公司兼职。其中公司C(公司号,公司名,地址,注册资本,法人代表,员工数),职员S(职员号,姓名,性别,年龄,学历),工作W(公司号,职员号,工资),则表W的键(码)为A、公司号,职员号B、职员号,工资C、职员号D、公司号,职员号,工资标准答案:A知识点解析:由于职员可以再多加公司兼职,表W的键(码)应为公司关系和职员关系的主码,即公司号和职员号。36、关于程序模块化的叙述中错误的是()。A、程序模块化有利于提高程序运行的效率B、程序模块化有利于提高程序编制的效率C、程序模块化有利于提高程序代码复用率D、程序模块化有利于提高调试程序的效率标准答案:A知识点解析:模块化设计与程序的运行效率没有关系,只能提高程序编制的效率、程序代码复用率和程序调试效率。37、设x为整型变量,n=14,n的地址为4000;m=6,m的地址为2000;执行语句x=&n后的结果为()。A、14B、6C、2000D、4000标准答案:D知识点解析:&是取地址运算符,表达式x=&a是表示将a的地址赋给变量x。38、若要求从键盘读入含有空格字符的字符串,应使用函数()。A、getc()B、gets()C、getchar()D、scanf()标准答案:B知识点解析:scanf()语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf()函数不能输入空格;getchar()函数用于输入字符,其调用形式为:ch=getchar(),getehar()函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入。Enter键时,读入才开始执行。gets()函数的调用形式为:gets(str_adr,),其中str_adr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc()函数的调用形式为:ch=gete(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。39、有以下程序#include<stdio.h>main(){inta=2,b;b=(a>>=1)+4;printf("%d,%d",a,b);}程序运行后的输出结果是A、1,5B、2,4C、2,6D、2,5标准答案:A知识点解析:a>>=1等价于a=a>>1,即a除以2,则a=2,b=(a>>1)+4=1+4=5,因此,打印出来为1,5。答案为A选项。40、数据库系统的数据独立性是指A、不会因为系统数据存储结构与数据逻辑结构的变化而影响应用程序B、不会因为数据的变化而影响应用程序C、不会因为存储策略的变化而影响存储结构D、不会因为某些存储结构的变化而影响其他的存储结构标准答案:A知识点解析:数据库系统的数据独立性,是指数据库中数据独立于应用程序且不依赖于应用程序,即数据的逻辑结构、存储结构与存取方式的改变不会影响应用程序。故选A选项。二、程序填空题(本题共1题,每题1.0分,共1分。)41、下列给定程序中,函数fun的功能是:把形参a所指数组中的偶数按原顺序依次存放到a[0]、a[1]、a[2]…中,把奇数从数组中删除,偶数的个数通过函数值返回。例如,若a所指数组中的数据最初排列为:9、1、4、2、3、6、5、8、7,删除奇数后,a所指数组中的数据为:4、2、6、8,返回值为4。请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构!试题程序:#include<stdio.h>#defineN9intfun(inta[],intn){inti,j;j=0;for(i=0;i<n;i++)/*********found*********/if(【1】==0){/*********found*********/【2】=a[i];j++;}/*********found*********/return【3】;}main(){intb[N]={9,1,4,2,3,6,5,8,7),i,n;printf("\nTheoriginaldata:\n");for(i=0;i<N;i++)printf("%4d",b[i]);printf("\n");n=fun(b,N);printf("\nThenumberofeven%d\n",n);printf("\nTheeven:\n");for(i=0;i<n;i++)printf("%4d",b[i]);printf("\n");}标准答案:(1)a[i]%2(2)a[j](3)j知识点解析:填空1:if语句条件表达式,判断数组元素是否为偶数,对2求余,结果为0,则为偶数;结果为1则为奇数。填空2:如果该数组元素是偶数,则将其值保存。填空3:最后按要求将偶数个数通过return语句返回给main函数。三、程序修改题(本题共1题,每题1.0分,共1分。)42、给定程序MODI1.C中函数fun的功能是:将长整型数s中每一位上为偶数的数依次取出,构成一个新数放在t中。高位仍在高位,低位仍在低位。例如,当s中的数为:87653142时,t中的数为:8642。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构!1#include<stdio.h>2voidfun(longs,long*t)3{intd;4longs1=1;5*t=0;6while(s>0)7{d=s%10;8/**********found**********/9if(d%2=0)10{*t=d*s1+*t;11s1*=10;12}13/**********found**********/14s\=10;15}}16main()17{longs,t;18printf(’’\nPleaseenters:’’);scanf(’’%1d’’,&s);19fun(s,&t);20printf(’’Theresultis:%1d\n’’,t);21}标准答案:(1)if(d%2==0)(2)s/=10;知识点解析:(1)第一个标识是判断d是否是偶数,即比较“d%2”是否等于0,在C语言中,“==”表示的是“等于”,而“=”是赋值,因此第一个标识下“if(d%2=0)”应改为“if(d%2==0)”。(2)第二个标识下的“s\=10;”是对a的截取,这里的“\”本意应该是除号,但这个在C语言中是不可识别的,所以第二个标识下“s\=10;”应该改为“s/=10;”。四、程序设计题(本题共1题,每题1.0分,共1分。)43、函数fun的功能是:将S所指字符串中除了下标为偶数、同时ASCII值也为偶数的字符外,其余的全都删除;串中剩余字符所形成的一个新串放在t所指的数组中。例如,若S所指字符串中的内容为:’’ABCDEFGl23456’’,其中字符A的ASCII码值为奇数,因此应当删除;其中字符B的ASCII码值为偶数,但在数组中的下标为奇数,因此也应当删除;而字符2的ASCII码值为偶数,所在数组中的下标也为偶数,因此不应当删除,其他依此类推。最后t所指的数组中的内容应是:’’246’’。注意:部分源程序存在文件PROG1.C中。请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。1#include<stdio.h>2#include<string.h>3voidfun(char*s,chart[])4{5}6main()7{8chars[100],t[100];9voidNONO();10printf("\nPleaseenterstringS:’’);scanf(’’%s’’,s);11fun(s,t);12printf(’’\nTheresultis:%s\n’’,t);13NONO();}14voidNONO()15{/*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*/16chars[100],t[100];17FILE*rf,*wf;18inti;19rf=fopen(’’in.dat’’,’’r’’);20wf=fopen(’’out.dat’’,’’w’’);21for(i=0;i<10;i++){22fscanf(rf,’’%s’’,s);23fun(s,t);24fprintf(wf,’’%s\n’’,t);25}26fclose(rf);27fclose(wf);}标准答案:1inti,j=0;2for(i=0;i<strlen(s);i+=2)3if(s[i]%2==0)t[j++]=s[i];4t[j]=’\0’;知识点解析:(1)判断一个字符串中的某一字符下标i是否为偶数,可用“i%2==0”来判断;也可以从下标0开始,每次增2。判断字符中的ASCII码值是否为偶数,则可用“s[i]%2==0”来判定。(2)对串s中下标为偶数的字符进行考查,满足ASCII码值是偶数条件的字符就顺序放在新串s中,否则就不存放。(3)所有字符处理完后,记得在新串s的末尾加上结束符“’\0’”。国家二级(C语言)机试模拟试卷第3套一、选择题(本题共39题,每题1.0分,共39分。)1、下列关于C语言文件的叙述中正确的是()。A、文件由一系列数据依次排列组成,只能构成二进制文件B、文件由结构序列组成,可以构成二进制文件或文本文件C、文件由数据序列组成,可以构成二进制文件或文本文件D、文件由字符序列组成,其类型只能是文本文件标准答案:C知识点解析:C语言将文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。根据数据的组成形式,可将文件分为两种:①ASCII文件,又称文本(text)文件,它的每一个字节可放一个ASCII码,代表一个字符;②二进制文件,是把内存中的数据按其在内存中的存储形式原样输出到磁盘上存放。所以C文件就是一个字节流或一个二进制流。2、下列选项中,不属于模块间耦合的是()。A、内容耦合B、异构耦合C、控制耦合D、数据耦合标准答案:B知识点解析:耦合可以分为下列几种,它们之间的耦合度由高到低排列:内容耦合——若一个模块直接访问另一模块的内容,则这两个模块称为内容耦合。公共耦合一若一组模块都访问同
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 星艺家装装饰项目施工流程及施工工艺
- 2026年青岛市市南区工会人员招聘考试模拟试题及答案详解
- 2026年晋中市榆次区政务服务中心(窗口人员)招聘考试备考题库及答案详解
- 泸州市纳溪区2026年公开招募基层服务岗位人员(64人)笔试备考题库及答案详解
- 2026年扬州市邗江区政务服务中心(窗口人员)招聘笔试备考试题及答案详解
- 2026年济南市历城区政务服务中心(窗口人员)招聘笔试参考试题及答案详解
- 年农村土地承包经营权流转委托合同协议书模板范本
- 2026年伊春市汤旺河区政务服务中心(窗口人员)招聘笔试备考题库及答案详解
- 人教版五年级上册语文《期末》测试卷及完整答案
- 2026年8月台州市黄岩区公路与运输管理中心招聘编外养护工程人员2人考试模拟试题及答案详解
- 2026年浙江平湖市国有企业公开招聘工作人员35人考试模拟试题及答案详解
- 2026年四川省拟任县处级党政领导职务政治理论水平任职资格考试冲刺试题及答案
- 2026年高考全国2卷数学高考真题试题(含答案)
- 2026年度全国保密教育线上培训题库(选择+判断)及参考答案
- 2026年比亚迪网申在线测试题及答案
- 无人机数字化管控平台搭建方案
- 乐平市市属国资控股集团有限公司面向社会公开招聘人员【15人】笔试历年常考点试题专练附带答案详解
- TCABEE080-2024零碳建筑测评标准(试行)
- 审计署工作保密制度
- 医疗器械质量意识培训资料
- 2026年中医内科临床诊疗指南-尘肺病
评论
0/150
提交评论