1、国家二级(C 语言)机试模拟试卷 123及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.在关系代数运算中,有 5种基本运算,它们是( )。(分数:2.00)A.并()、差()、交()、除()和笛卡儿积()B.并()、差()、交()、投影()和选择()C.并()、交()、投影()、选择()和笛卡儿积()D.并()、差()、投影()、选择()和笛卡儿积()2.在数据库系统的组织结构中,下列( )映射把用户数据库与概念数据库联系了起来。(分数:2.00)A.外模式模式B.内模式外模式C.模式内模式D.内模式模式3.下列关于线性链表的描述中,正确的是
2、( )。、只含有一个指针域来存放下一个元素地址、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)、结点由两部分组成:数据域和指针域。(分数:2.00)A.仅、B.仅、C.仅、D.全部4.下面关于数据库三级模式结构的叙述中,正确的是( )。(分数:2.00)A.内模式可以有多个,外模式和模式只有一个B.外模式可以有多个,内模式和模式只有一个C.内模式只有一个,模式和外模式可以有多个D.模式只有一个,外模式和内模式可以有多个5.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟
3、划分后的结果为( )。(分数:2.00)A.23,13,51,57,66,26,81,69,76B.13,23,26,51,57,66,81,76,69C.23,13,51,57,26,66,81,69,76D.23,13,51,57,81,26,66,69,766.下列哪一条不属于数据库设计的任务?( )(分数:2.00)A.设计数据库应用结构B.设计数据库概论结构C.设计数据库逻辑结构D.设计数据库物理结构7.数据库技术的根本目标是( )。(分数:2.00)A.数据存储B.数据共享C.数据查询D.数据管理8.需求分析阶段的任务是( )。(分数:2.00)A.软件开发方法B.软件开发工具C.
4、软件开发费用D.软件系统功能9.关系数据库管理系统能实现的专门关系运算包括( )。(分数:2.00)A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表10.数据管理技术发展的三个阶段中,( )没有专门的软件对数据进行管理。人工管理阶段 文件系统阶段 数据库阶段(分数:2.00)A.仅B.仅C.和D.和11.下面说法正确的是( )。(分数:2.00)A.一个 C程序可以有多个主函数B.一个 C语言的函数中只允许有一对花括号C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内D.在对 C程序进行编译时,可以发现注释行中的拼写错误12.下列不合法的用户
5、标识符是( )。(分数:2.00)A.j2_KEYB.DoubleC.4dD._8_13.以下 4个选项,不能看作一条语句的是( )。(分数:2.00)A.;B.int x=0,y=1,z=0;C.if(!a);D.if(b=0)m=1;n=2;14.设 a和 b均为 int型变量,且 a=6、b=11、c=3,则能使值为 3的表达式是( )。(分数:2.00)A.b(c4)B.b(c-a5)C.ba-a5D.(ba)-(a4)15.以下程序的输出结果是( )。 main() int a=4,b=3,c=2,d=1; printf(“d“,ab?a:dc?d:b);(分数:2.00)A.1B.
6、3C.2D.416.阅读以下程序 #includestdioh main() Int Case;float printF; printf(“请输入 2个数:“): scanf(“df“,&Case,&printF); printf(“dfn“,Case,printF);以下说法正确的是( )。(分数:2.00)A.定义语句出错,Case 是关键字,不能用作用户自定义标识符,printF 不能用作用户自定义标识符B.定义语句出错,Int 无法被识别C.定义语句无错,scanf 不能作为输入函数使用D.定义语句无错,printf 不能输出 Case的值17.若有定义:float x=15;int
7、a=1,b=3,c=2;则正确的 switch语句是( )。(分数:2.00)A.switch(x) case 10:printf(“*n“); case 20:printf(“*n“);B.switch(int)x); case 1:print(“*n“); case 2:printf(“*n“);C.switch(a+b) case 1:print(“*n“); case 2+1:print(“*n“);D.switch(a+b) case 1:printf(“*n“); case c:printf(“*n“);18.有以下程序: main() int k=33; printf(“d,o,
8、x“,k,k,k);执行后的输出结果是( )。(分数:2.00)A.33,033,0x21B.33,033,21C.33,041,021D.33,41,2119.当输入为“Fool&Swalow“时,下面程序的执行结果是( )。 #includestdioh main() char c; while(c!=?) c=getchar(); putchar(c);(分数:2.00)A.SwalowB.FoolC.Fool?D.?Swalow20.下面程序段的输出结果是( )。 #includestdioh main() float x=1236547; printf(“fn“,(int)(x*10
9、00+05)(float)1000);(分数:2.00)A.1237000B.输出格式说明与输出项不匹,输出无定值C.1236000D.12421.若变量都已正确说明,则以下程序段( )。 #includestdioh main() int a=8; int b=6: printf(ab?“&a=d“:“!b=d“,a,b);(分数:2.00)A.输出为:&a=8B.输出为:!b=8C.输出为:&a=8 !b=6D.全部错误22.语句“printf(“abhowareyboun“);”的输出结果是( )。(分数:2.00)A.abhowareybouB.abhowareybouC.howare
10、youD.ahowareybou23.下面程序的运行结果是( )。 #includestdioh main() int i; for(i=1;i=5;i+) if(i2)printf(“*“); else printf(“#“);(分数:2.00)A.*#*#*B.#*#*#*C.*#*#D.#*#*24.以下关于 return语句的叙述中不正确的是( )。(分数:2.00)A.一个自定义函数中必须有一条 return语句B.一个自定义函数中可以根据不同情况设置多条 return语句C.如果一个函数有多个 return语句,那么不论运行到哪一个 return语句,该函数将结束D.没有 retu
11、rn语句的自定义函数在执行完最后一条语句时返回到调用处25.有以下程序: main() int n=0; don+; printf(“dn“,n); while(n=3);程序的输出结果是( )。(分数:2.00)A.1 2B.1 2 3C.1 2 3 4D.126.下面程序的运行结果是( )。 #includestdioh void del(char*s) int i,j;char*a; a=s; for(i=0,j=0;ai!=0;i+) if(ai=0&ai=9)sj=ai;j+; sj=0; main() char s=“aa89gggh“; del(s); printf(“ns“,s
12、);(分数:2.00)A.aaB.89C.ggghD.aa89gggh27.下列说法不正确的是( )。(分数:2.00)A.int*fun():-fun 是一个返回 int指针的函数B.int(*fun)();-fun 是一个返回 int指针的函数C.int(*array5)();-array 是一个有 5个元素的数组,每一个元素都是一个函数指针,指向一个返回 int的函数D.int(*fun(int)(int);-fun 是带有一个 int参数的函数,返回值是一个函数指针,这个指针指向带有一个 int参数并返回 int的函数28.下列程序的输出结果是( )。 #includestdioh m
13、ain() void fun(int*a,int*b) int a=1,b=2,*x=&a,*y=&b; int*k; fun(x,y); k=a;a=b;b=k; printf(“dd“,a,b);(分数:2.00)A.2 1B.1 2C.编译出错D.0 029.下列二维数组初始化语句中,正确且与语句 int a3=1,2,3,4,5等价的是( )。(分数:2.00)A.int a2=1,2,3,4,5;B.int a3=1,2,3,4,5,0;C.int a3=1,0),2,0,3,0);D.int a2=1,2,3,4,5,6;30.有以下字符串,说明表达式 strlen(s)值的是(
14、)。 char s10=a,n,a,b,t,c;(分数:2.00)A.10B.1C.6D.731.有以下程序: #includestdioh main() void fun(char*c,int d) char a=F,b=f; *c=*c+1: fun(&b,a); d+=1; printf(“c,cn“,a,b); printf(“c,c“,*c,d);程序的输出结果为( )。(分数:2.00)A.g,GF,gB.g,FF,gC.G,fF,GD.f,gf,g32.若有以下定义,则对 a数组元素地址的正确引用是( )。 int a5,*p=a;(分数:2.00)A.p+5B.*a+1C.&a
15、+1D.&a033.判断字符串 s1是否大于字符串 s2,应该使用( )。(分数:2.00)A.if(strcmp(s1,s2)0)B.if(s1s2)C.if(strcmp(s2,s1)0)D.if(strcmp(s1,s2)34.若输入 bcdefgh、m、abcdefg,以下程序的输出结果为( )。 #includestdioh #includestringh main() int i; char string20,str320; for(i=O;i3;i+)gets(stri); if(strcmp(str0,str1)0)strcpy(string,str0); else strcp
16、y(string,str1); if(strcmp(str2,string)0)strcpy(string,str2); printf(“s“,string);(分数:2.00)A.bcdefghB.mC.abcdefgD.bcdefgh或 abcdefg35.请阅读以下程序: #includestdioh #includestringh void fun(int b) main() static int i=0; int k,a5=1,3,5,4,9; Do bi+=bi+1; fun(a); while(+i2); for(k=0;k5;k+)printf(“d“,ak);上面程序的输出是
17、( )。(分数:2.00)A.13579B.48579C.48549D.4899936.在下述程序中,判断 ij 共执行的次数是( )。 main() int i=0,j=10,k=2,s=0; for(;) i+=k; if(ij)printf(“d“,s);break; s+=i;(分数:2.00)A.4B.7C.5D.637.下列程序的输出结果是( )。 #includestdioh main() struct st int y,x,z; union long i;intj; char k;un; printf(“d,dn“,sizeof(struct st),sizeof(un);(分
18、数:2.00)A.6,2B.6,4C.8,4D.8,638.以下对联合类型叙述正确的是( )。(分数:2.00)A.可以对联合变量名直接赋值B.使用联合变量的目的是为了节省内存C.任何一个联合变量可以同时引用联合中的不同成员D.联合类型定义中不能同时出现结构类型的成员39.以下程序中 C的二进制值是( )。 char a=2,b=4,c; c=ab2(分数:2.00)A.00000011B.00010100C.00011100D.0001100040.有以下程序 #includestdioh main() FILE*fp;int i=20,j=30,k,n; fp=fopen(“d1dat“,
19、“w“); fprintf(fp,“dn“,i);fprintf(fp,“dn“,j); fclose(fp); fp=fopen(“d1dat“,“r”); fscanf(fp,“dd“,&k,&n);printf(“ddn“,k,n); fclose(fp);程序运行后的输出结果是( )。(分数:2.00)A.20 30B.20 50C.30 50D.30 20二、程序填空题(总题数:1,分数:2.00)41.给定程序中,函数 fun的功能是:在形参 ss所指字符串数组中查找与形参 t所指字符串相同的串,找到后返回该串在字符串数组中的位置(下标值),未找到则返回1。ss 所指字符串数组中共
20、有 N个内容不同的字符串,且串长小于 M。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的 BLANK1C 中。 不得增行或删行,也不得更改程序的结构! #includestdioh #includestringh #define N 5 #define M 8 int fun(char(*ss)M,char*t) int i; *found* for(i=0;i_(1);i+) *found* if(strcmp(ssi,t)=0)return_(2); return-1; main() char chNM=“if“,“while“,
21、“switch“,“int“,“for“,tM; int n,i; printf(“nThe original stringnn“); for(i=0;iN;i+)puts(chi);printf(“n“); printf(“nEnter a string for search:“);gets(t); n=fun(ch,t); *found* if(n=_(3)printf(“nDont found!n“); else printf(“nThe position is dn“,n); (分数:2.00)_三、程序修改题(总题数:1,分数:2.00)42.给定程序 MODI1C 中函数 fun的
22、功能是:从低位开始取出长整型变量 S中奇数位上的数,依次构成一个新数放在 t中。高位仍在高位,低位仍在低位。例如,当 s中的数为:7654321 时,t 中的数为:7531。请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增行或删行,也不得更改程序的结构! #includestdioh *found* void fun(long s,long t) long s1=10; *t=s10; while(s0) s=s100; *t=s10*s1+*t; *found* s1=s1*100; main() long s,t; printf(“nPlease enter
23、 s:“);scanf(“ld“,&s); fun(s,&t); printf(“The result is:ldn“,t);(分数:2.00)_四、程序设计题(总题数:1,分数:2.00)43.请编写一个函数 fun,它的功能是:找出一维整型数组元素中最大的值和它所在的下标,最大的值和它所在的下标通过形参传回。数组元素中的值已在主函数中赋予。 主函数中 x是数组名,n 是 x中的数据个数,max 存放最大值,index 存放最大值所在元素的下标。注意:部分源程序存在文件 PROG1C 文件中。请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 #
24、includestdlibh #includestdioh void fun(int a,int n,int*max,int*d) main() int i,x20,max,index,n=10;void NONO(); for(i=0;in;i+)xi=rand()50;printf(“4d“,xi); printf(“n“); fun(x,n,&max,&index); printf(“Max=5d,Index=4dn“,max,index); NONO(); voidNONO() *本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。 * FILE*fp,*wf; int i,x
25、20,max,index,n=10,j; fp=fopen(“indat“,“r“); wf=fopen(“outdat“,“w“); for(i=0;i10;i+) for(j=0;jn;j+)fscanf(fp,“d,“,&xj); fun(x,n,&max,&index);fprintf(wf,“Max=d,Index=dn“,max,index); fclose(fp); fclose(wf);(分数:2.00)_国家二级(C 语言)机试模拟试卷 123答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.在关系代数运算中,有 5种基本运算,
26、它们是( )。(分数:2.00)A.并()、差()、交()、除()和笛卡儿积()B.并()、差()、交()、投影()和选择()C.并()、交()、投影()、选择()和笛卡儿积()D.并()、差()、投影()、选择()和笛卡儿积() 解析:解析:并、差、笛卡儿积、投影和选择是 5种基本的运算,其他运算即交、连接和除,均可以通过5种基本的运算来表达。2.在数据库系统的组织结构中,下列( )映射把用户数据库与概念数据库联系了起来。(分数:2.00)A.外模式模式 B.内模式外模式C.模式内模式D.内模式模式解析:解析:数据库有两层映像,即外模式模式和模式内模式映像。模式内模式映像定义数据库全局逻辑结
27、构与存储结构之间的对应关系。3.下列关于线性链表的描述中,正确的是( )。、只含有一个指针域来存放下一个元素地址、指针域中的指针用于指向该结点的前一个或后一个结点(即前件或后件)、结点由两部分组成:数据域和指针域。(分数:2.00)A.仅、B.仅、C.仅、D.全部 解析:解析:在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。在链式存储方式中,要求每个结点由两部分组成:一部分用于存放数据元素值,称为数据域;另一部分用于存放指针,称为指针域。其中指针用于指向该结点的前一个或后一个结点(即前件或后件)。4.下面关于数据库三级模式结构的叙述中,正确的是( )。(
28、分数:2.00)A.内模式可以有多个,外模式和模式只有一个B.外模式可以有多个,内模式和模式只有一个 C.内模式只有一个,模式和外模式可以有多个D.模式只有一个,外模式和内模式可以有多个解析:解析:数据库的三级模式结构是指数据库系统的外模式、模式和内模式。一个数据库可以有多个外模式,但只有一个模式和一个内模式。5.设有关键码序列(66,13,51,76,81,26,57,69,23),要按关键码值递增的次序排序,若采用快速排序法,并以第一个元素为划分的基准,那么第一趟划分后的结果为( )。(分数:2.00)A.23,13,51,57,66,26,81,69,76 B.13,23,26,51,5
29、7,66,81,76,69C.23,13,51,57,26,66,81,69,76D.23,13,51,57,81,26,66,69,76解析:解析:快速排序是起泡排序的改进。在快速排序中,任取一个记录,以它为基准用交换的方法将所有的记录分成两部分,关键码值比它小的在一部分,关键码值比它大的在另一部分,再分别对两个部分实施上述过程,一直重复到排序完成。6.下列哪一条不属于数据库设计的任务?( )(分数:2.00)A.设计数据库应用结构 B.设计数据库概论结构C.设计数据库逻辑结构D.设计数据库物理结构解析:解析:数据库设计工作量大而且过程复杂,既是一项数据库工程也是一项庞大的软件工程。考虑数据
30、库及其应用系统开发全过程,将数据库设计分为以下 6个阶段:需求分析、概念结构设汁、逻辑结构设计、物理结构设计、数据库实施和数据库的运行和维护。7.数据库技术的根本目标是( )。(分数:2.00)A.数据存储B.数据共享 C.数据查询D.数据管理解析:解析:数据库是长期储存在计算机内、有组织的、可共享的大量数据的集合,它具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享,所以数据库技术的根本目标是解决数据共享问题。8.需求分析阶段的任务是( )。(分数:2.00)A.软件开发方法B.软件开发工具C.软件开发费用D.软件系统功能 解析:解析:需求分析县软件定
31、义时期的最后一个阶段,它的基本任务就是详细调查现实世界要处理的对象,充分了解原系统的工作概况,明确用户的各种需求,然后存这些基础上确定新系统的功能。9.关系数据库管理系统能实现的专门关系运算包括( )。(分数:2.00)A.排序、索引、统计B.选择、投影、连接 C.关联、更新、排序D.显示、打印、制表解析:解析:关系数据库管理系统的专门关系运算包括选择运算、投影运算和连接运算。10.数据管理技术发展的三个阶段中,( )没有专门的软件对数据进行管理。人工管理阶段 文件系统阶段 数据库阶段(分数:2.00)A.仅 B.仅C.和D.和解析:解析:数据管理技术发展的三个阶段中,只有人工管理阶段,没有操
32、作系统,没有管理数据的软件,数据处理方式是批处理。在文件系统阶段,操作系统中已经有了专门数据管理软件,一般称为文件系统。在数据库系统阶段,出现了统一管理数据的专门软件系统,即数据库管理系统。11.下面说法正确的是( )。(分数:2.00)A.一个 C程序可以有多个主函数B.一个 C语言的函数中只允许有一对花括号C.C程序的书写格式是自由的,一个语句可以写在一行上,也可以写在多行内 D.在对 C程序进行编译时,可以发现注释行中的拼写错误解析:解析:本题涉及 C语言基本的 3个知识点:c 语言规定一个程序只允许有一个主函数,一个函数内可以允许有多个花括号;C 程序的注释部分仅仅是方便程序员阅读,提
33、高程序的可读性和可移植性,它并不参与程序的编译,所以编译器也就不会发现注释中的错误。12.下列不合法的用户标识符是( )。(分数:2.00)A.j2_KEYB.DoubleC.4d D._8_解析:解析:在 C语言程序中,合法标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第一个字符必须是字母或下划线。13.以下 4个选项,不能看作一条语句的是( )。(分数:2.00)A.;B.int x=0,y=1,z=0;C.if(!a);D.if(b=0)m=1;n=2; 解析:解析:if 语句是用来判定所给的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。 在 if和 e
34、lse后面可以只含一个内嵌的操作语句,也可以有多个操作语句,此时用花括号“”将几个语句括起来成为一个复合语句。选项 D)中没有将两个操作语句括起来,不能看作一条语句。14.设 a和 b均为 int型变量,且 a=6、b=11、c=3,则能使值为 3的表达式是( )。(分数:2.00)A.b(c4)B.b(c-a5)C.ba-a5D.(ba)-(a4) 解析:解析:选项 D)括号内的运算分别是 ba=116=5 和 ac=64=2,最后得到 52=3。15.以下程序的输出结果是( )。 main() int a=4,b=3,c=2,d=1; printf(“d“,ab?a:dc?d:b);(分数
35、:2.00)A.1B.3C.2D.4 解析:解析:本题首先判断 ab,当 ab 时结果等于 a,否则等于“dc?d:b”,因为 ab,所以直接输出 a的值,注:这里“a:dc?d:b”是用来干扰考生的。16.阅读以下程序 #includestdioh main() Int Case;float printF; printf(“请输入 2个数:“): scanf(“df“,&Case,&printF); printf(“dfn“,Case,printF);以下说法正确的是( )。(分数:2.00)A.定义语句出错,Case 是关键字,不能用作用户自定义标识符,printF 不能用作用户自定义标识
36、符B.定义语句出错,Int 无法被识别 C.定义语句无错,scanf 不能作为输入函数使用D.定义语句无错,printf 不能输出 Case的值解析:解析:C 语言是一种大小写敏感的语言,因此 Int应为 int,而 Case printF则可以使用。17.若有定义:float x=15;int a=1,b=3,c=2;则正确的 switch语句是( )。(分数:2.00)A.switch(x) case 10:printf(“*n“); case 20:printf(“*n“);B.switch(int)x); case 1:print(“*n“); case 2:printf(“*n“);
37、C.switch(a+b) case 1:print(“*n“); case 2+1:print(“*n“); D.switch(a+b) case 1:printf(“*n“); case c:printf(“*n“);解析:解析:在 C语言中,switch()后的一对圆括号中可以是整型表达式或字符表达式。case 语句后面的常量表达式的类型必须与 switch后圆括号中的表达式类型相同,各 case语句标号的值应该互不相同。选项 A)中 case后面的常量表达式为实型,所以不正确;选项 D)中 case后面出现了变量表达式,所以选项 D)错误。18.有以下程序: main() int k=
38、33; printf(“d,o,x“,k,k,k);执行后的输出结果是( )。(分数:2.00)A.33,033,0x21B.33,033,21C.33,041,021D.33,41,21 解析:解析:本题考查不同进制间的转换。printf 输出函数中输出变量的格式,由输出格式符决定。题中“o”格式符表示以八进制的形式输出;“x”格式符表示以十六进制的形式输出。“33”的八进制和十六进制分别是 41和 21。19.当输入为“Fool&Swalow“时,下面程序的执行结果是( )。 #includestdioh main() char c; while(c!=?) c=getchar(); pu
39、tchar(c);(分数:2.00)A.SwalowB.FoolC.Fool? D.?Swalow解析:解析:本程序是通过 getch()函数读入字符,并通过 putchar()函数将字符逐个输出,当用户输入“?”时停止输出。20.下面程序段的输出结果是( )。 #includestdioh main() float x=1236547; printf(“fn“,(int)(x*1000+05)(float)1000);(分数:2.00)A.1237000 B.输出格式说明与输出项不匹,输出无定值C.1236000D.124解析:解析:本题中,(int)(x*1000+05)的结果为 1237
40、,(float)1000 是将 1000强制转换成 float类型;整个表达式(int)(x*1000+05)(float)1000 的结果为 1237000,再以实数(6 位小数)形式输出。21.若变量都已正确说明,则以下程序段( )。 #includestdioh main() int a=8; int b=6: printf(ab?“&a=d“:“!b=d“,a,b);(分数:2.00)A.输出为:&a=8 B.输出为:!b=8C.输出为:&a=8 !b=6D.全部错误解析:解析:本题考查 printf的输出格式和条件表达式“?:”的使用。printf 函数输出时,“&dn”和“!dn”
41、中的“&”和“!”都是直接输出。条件表达式的基本格式为:a?b:c。其运算规则为:当 a为非 0时,整个表达式的值取 b的值,当 a为 0时,整个表达式取 c的值。printf函数中如果在格式说明符之前插入任何字符都将原样输出。本题中 ab 为真,所以返回“&a=d”。22.语句“printf(“abhowareyboun“);”的输出结果是( )。(分数:2.00)A.abhowareybouB.abhowareybouC.howareyou D.ahowareybou解析:解析:“b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“b”格式符前面的字母不能输出: “”,格式符
42、表示输出单引号字符;“”格式符表示输出反斜线字符。23.下面程序的运行结果是( )。 #includestdioh main() int i; for(i=1;i=5;i+) if(i2)printf(“*“); else printf(“#“);(分数:2.00)A.*#*#* B.#*#*#*C.*#*#D.#*#*解析:解析:分析程序可知,程序循环 5次,然后利用 if语句决定每次循环时输出的字符。当 i为奇数时,i2=i,if(i2)为真,输出“*”;当 i为偶数时,i2=0,if(i2)为假,执行 elsc语句,输出“#”,所以当 i取 1、3、5 值时输出“*”,当 i取 2、4
43、值时输出“#”。24.以下关于 return语句的叙述中不正确的是( )。(分数:2.00)A.一个自定义函数中必须有一条 return语句 B.一个自定义函数中可以根据不同情况设置多条 return语句C.如果一个函数有多个 return语句,那么不论运行到哪一个 return语句,该函数将结束D.没有 return语句的自定义函数在执行完最后一条语句时返回到调用处解析:解析:return 语句主要用于返回函数的值。在一个自定义函数中,可以根据小同的情况设置多条return语句返回函数的值,也可以不包含 return语句。25.有以下程序: main() int n=0; don+; pri
44、ntf(“dn“,n); while(n=3);程序的输出结果是( )。(分数:2.00)A.1 2B.1 2 3C.1 2 3 4 D.1解析:解析:本题考查 dowhile循环。在 dowhile构成的循环体中,总是先执行一次循环体,然后再求表达式的值。当执行完第三次循环时,得到 n=3,while 循环表达式仍然成立,接着执行直到 n=4,表达式不成立,跳出循环,结束程序。26.下面程序的运行结果是( )。 #includestdioh void del(char*s) int i,j;char*a; a=s; for(i=0,j=0;ai!=0;i+) if(ai=0&ai=9)sj=
45、ai;j+; sj=0; main() char s=“aa89gggh“; del(s); printf(“ns“,s);(分数:2.00)A.aaB.89 C.ggghD.aa89gggh解析:解析:本题中 del(char*s)函数实现的功能是:逐个读入 s数组中的字符,如果遇到数字,则将其重新存在 s中,遇到非数字字符则跳过。所以最后输出的应该是字符串 s中的所有数字。27.下列说法不正确的是( )。(分数:2.00)A.int*fun():-fun 是一个返回 int指针的函数B.int(*fun)();-fun 是一个返回 int指针的函数 C.int(*array5)();-array 是一个有 5个元素的数组,每一个元素都是一个函数指针,指向一个返回 int的函数D.int(*fun(int)(int);-fun 是带有一个 int参数的函数,返回值是一个函数指针,这个指针指向带有一个 int参数并返回 int的函数解析:解析:该函数中 fun是一个函数指针。指向一个返回 int的函数。28.下列程序的输出结果是( )。 #include
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1