1、国家二级(C 语言)机试模拟试卷 146 及答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是( )。(分数:2.00)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对2.下列叙述中正确的是( )。(分数:2.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构C.循环链表是非线性结构D.双向链表是非线性结构3.下列关于二叉树的叙述中,正确的是( )。(分数:2.00)A.叶子结点总是比度为 2 的结点少一个B.叶子结点
2、总是比度为 2 的结点多一个C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度为 1 的结点数的两倍4.软件生命周期中的活动不包括( )。(分数:2.00)A.市场调研B.需求分析C.软件测试D.软件维护5.某系统总体结构图如下图所示: (分数:2.00)A.7B.6C.3D.26.程序调试的任务是( )。(分数:2.00)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误7.下列关于数据库设计的叙述中,正确的是( )。(分数:2.00)A.在需求分析阶段建立数据字典B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建
3、立数据字典8.数据库系统的三级模式不包括( )。(分数:2.00)A.概念模式B.内模式C.外模式D.数据模式9.有三个关系 R、S 和 T 如下: (分数:2.00)A.自然连接B.交C.投影D.并10.下列选项中属于面向对象设计方法主要特征的是( )。(分数:2.00)A.继承B.自顶向下C.模块化D.逐步求精11.以下叙述中错误的是( )。(分数:2.00)A.算法正确的程序可以有零个输入B.算法正确的程序最终一定会结束C.算法正确的程序可以有零个输出D.算法正确的程序对于相同的输入一定有相同的结果12.以下叙述中正确的是( )。(分数:2.00)A.C 语句必须在一行内写完B.C 程序
4、中的每一行只能写一条语句C.C 语言程序中的注释必须与语句写在同一行D.简单 C 语句必须以分号结束13.以下选项中关于 C 语言常量的叙述错误的是( )。(分数:2.00)A.经常被使用的变量可以定义成常量B.常量分为整型常量、实型常量、字符常量和字符串常量C.常量可分为数值型常量和非数值型常量D.所谓常量,是指在程序运行过程中,其值不能被改变的量14.以下选项中,不合法的 C 语言用户标识符是( )。(分数:2.00)A.a_bB.AaBcC.a-bD._115.若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是( )。(分数:2.00)A.x=y=5;B.x=n25;C.x+n=i
5、;D.x=5=4+1;16.设有定义:int a;float b;执行 scanf(“2df“,&a,&b);语句时,若从键盘输入 8765430回车则 a 和 b 的值分别是( )。(分数:2.00)A.87 和 60B.876 和 5430C.87 和 5430D.76 和 543017.有以下定义语句,编译时会出现编译错误的是( )。(分数:2.00)A.char a=x2d;B.char a=n;C.char a=a;D.char a=“aa“;18.当变量 c 的值不为 2、4、6 时,值也为“真“的表达式是( )。(分数:2.00)A.(c=2&c=6)&(c21=1)B.(c=2
6、)|(c=4)|(c=6)C.(c=2&c=6)&!(c2)D.(c=2&c=6)|(c!=3)|(c!=5)19.有以下计算公式 (分数:2.00)A.if(x=0)y=sqrt(x); if(x0)y=sqrt(-x);B.if(x=0)y=sqrt(x); else y=sqrt(-x);C.y=sqrt(x); if(x0)y=sqrt(-x);D.y=sqrt(x=0?x:-x);20.有以下程序:#includestdiohmain()int y=10;while(y-);printf(“y=dn“,y);程序执行后的输出结果是( )。(分数:2.00)A.y=-1B.y=0C.y
7、=1D.while 构成无限循环21.有以下程序:#includestdiohmain()int i;for(i=1;i=40;i+)if(i+5=0)if(+i8=0)printf(“d“,i);printf(“n“);程序执行后的输出结果是( )。(分数:2.00)A.5B.24C.32D.4022.有以下程序:#includestdiohmain()ints;scanf(“d“,&s);while(s0)switch(s)case1:printf(“d“,s+5);case2:printf(“d“,s+4);break;case3:printf(“d“,s+3);default:prin
8、tf(“d“,s+1);break;scanf(“d“,&s);运行时,若输入 1 2 3 4 5 0回车,则输出结果是( )。(分数:2.00)A.66656B.6566456C.66666D.666665623.以下叙述中错误的是( )。(分数:2.00)A.用户定义的函数中可以没有 return 语句B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值C.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型D.函数的 return 语句中可以没有表达式24.有以下程序:#includestdiohvoid fun(char*c,int
9、 d)*c=*c+1;d=d+1;printf(“c,c,“,*c,d);main()char b=a,a=A;fun(&b,a);printf(“c,cn“,b,a);程序运行后的输出结果是( )。(分数:2.00)A.b,B,b,AB.b,B,B,AC.a,B,B,aD.a,B,a,B25.下列选项中,能正确定义数组的语句是( )。(分数:2.00)A.int num02008;B.int num;C.int N=2008;D.#deftne N2008 int BumN;int BumN;26.以下函数实现按每行 8 个输出 w 所指数组中的数据:#includestdiohvoid f
10、un(int*w,int n)int i;for(i=0;in;i+)_printf(“d“,wi);printf(“n“);在横线处瘦填入的话句是( )。(分数:2.00)A.if(i8=0)printf(“n“);B.if(i8=0)continue;C.if(i8=0)printf(“n“);D.if(i8=0)continue;27.有以下程序:#includestdiohvoid fun(char*c)while(*c)if(*c=a&*c=z)*c=*c-(a-A);e+;main()char s81;gets(s);fun(s);puts(s);当执行程序时从键盘上输入Hello
11、 Beijing回车,则程序运行后的输出结果是( )。(分数:2.00)A.hello beijingB.Hello BeijingC.HELLO BEIJINGD.hELLO Beijing28.有以下程序:#includestdiohmain()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1;inti,j,k,t;for(i=0;i4;i+)for(j=0;j3;j+)for(k=J+1;k4;k+)if(ajiaki)t=aji;aji=aki;aki=t;*按列排序*for(i=0;i4;i+)printf(“d,“,aii);程序运行后的输出结果是(
12、)。(分数:2.00)A.1,6,2,1,B.8,7,3,1,C.4,7,5,2,D.1,6,5,7,29.有以下程序(strcat 函数用于连接两个字符串):#includestdioh#includestringhmain()char a20=“ABCD0EFG0“,b=“IJK“;strcat(a,b);printf(“sn“,a);程序运行后的输出结果是( )。(分数:2.00)A.IJKB.ABCDE0FG0IJKC.ABCDIJKD.EFGUK30.有以下程序段:char name20;int nun;scanf(“name=s Bum=d“,name,&num);当执行上述程序段
13、,并从键盘输入:name=Lili num=1001回车后,name 的值为( )。(分数:2.00)A.name=LiliRum=1001B.name=LiliC.Lili Rum=D.Lili31.有以下程序:#includestdiohmain()char ch=“uvwxyz“,*pc;pc=ch;printf(“cn“,*(pc+5);程序运行后的输出结果是( )。(分数:2.00)A.zB.0C.元素 ch5的地址D.字符 y 的地址32.有以下程序:#includestdiohmain()char s=“012xy“;int i,n=0;for(i=0;Si!=0;i+)if(s
14、i=a&si=z)n+;printf(“dn“,n);程序运行后的输出结果是( )。(分数:2.00)A.0B.2C.3D.533.有以下程序:#includestdiohint fun(int n)if(n=1)return1;elsereturn(n+fun(n-1);main()int x;seanf(“d“,&x);x=fun(x);printf(“dn“,x);执行程序时,给变量 x 输入10,程序运行后的输出结果是( )。(分数:2.00)A.55B.54C.65D.4534.有以下程序:#includestdiohint f(int m)static int n=0;n+=m;r
15、eturn n;main()int n=0;printf(“d,“,f(+n);printf(“dn“,f(n+);程序运行后的输出结果是( )。(分数:2.00)A.3,3B.1,1C.2,3D.1,235.设有以下语句:typedef struct TTehar c;int a4;CIN;则下面叙述中正确的是( )。(分数:2.00)A.CIN 是 struct TT 类型的变量B.TT 是 struet 类型的变量C.可以用 TT 定义结构体变量D.可以用 CIN 定义结构体变量36.有以下程序:#includestdiohstruet ordint x,y;dt2=1,2,3,4;ma
16、in()struct ord*p=dt;printf(“d,“,+(p-x);printf(“dn“,+(p-y);程序运行后的输出结果是( )。(分数:2.00)A.3,4B.4,1C.2,3D.1,237.有以下程序:#includestdioh#define SUB(A)(a)-(a)main()int a=2,b=3,c=5,d;d=SUB(a+b)*c;printf(“dn“,d);程序运行后的输出结果是( )。(分数:2.00)A.0B.-12C.-20D.1038.有以下程序:#includestdiohmain()int a=2,b;b=a2:printf(“dn“,b);程序
17、运行后的输出结果是( )。(分数:2.00)A.2B.4C.6D.839.下列关于 C 语言文件的叙述中正确的是( )。(分数:2.00)A.文件由一系列数据依次排列组成,只能构成二进制文件B.文件由结构序列组成,可以构成二进制文件或文本文件C.文件由数据序列组成,可以构成二进制文件或文本文件D.文件由字符序列组成,其类型只能是文本文件40.有以下程序:#includestdiohmain()FILE*fp;int a10=1,2,3,0,0,i;fp=fopen(“d2dat“,“wb“);fwrite(a,sizeof(int),5,fp);fwrite(a,sizeof(int),5,f
18、p);felose(fp);fp=fopen(“d2dat“,“rb“);fread(a,sizeof(int),10,fp);felose(fp);for(i=0;i10;i+)printf(“d,“,ai);程序运行后的输出结果是( )。(分数:2.00)A.1,2,3,0,0,0,0,0,0,0,B.1,2,3,1,2,3,0,0,0,0,C.123,0,0,0,0,123,0,0,0,0,D.1,2,3,0,0,1,2,3,0,0,二、程序填空题(总题数:1,分数:2.00)41.下列给定程序中,函数 fun 的功能是:将 s 所指字符串中的所有数字字符移到所有非数字字符之后,并保持数
19、字字符串和非数字字符串原有的次序。例如,s 所指的字符串为“dei35adh3kjsdf7”,执行后结果为“defadhajsdt3537”。请在程序的下划线处填入正确的内容并将下划线删除,使程序得出正确的结果。注意:部分源程序在文件 BLANK1C 中。不得增行或删行,也不得更改程序的结构!#includestdiohvoid fun(char*s)int i,j=0,k=0;char t180,t280;for(i=0;si!=0;i+)if(si=0&si=9)*found*t2j=si;【1】;else t1k+=si;t2j=0;t 1k=0;*found*for(i=0;ik;i+
20、)【2】;*found*for(i=0;i【3】;i+)sk+i=t2i;main()char s80=“ba3a54j7sd567sdffs“;printf(“nThe original string is:sn“,s);fun(8);pfinff(“nThe result is:sn“,s);(分数:2.00)_三、程序修改题(总题数:1,分数:2.00)42.下列给定程序中函数 fun 的功能是:从整数 10 到 55 之间,查找能被 3 整除且有一位上的数值是 5 的数,把这些数放在 b 所指的数组中,这些数的个数作为函数值返回。规定函数中 a1 放个位数,a2 放十位数。请改正程序中
21、的错误,使它能得出正确的结果。注意:部分源程序在文件 MODI1C 中,不得增行或删行,也不得更改程序的结构!#includestdiohint fun(int*b)int k,a1,a2,i=0;for(k=10;k=55;k+)*found*a2=k10;a1=k-az*10;if(k3=0&a2=5)|(k3=0&a1=5)bi=k;i+;*found*return k;main()int a100,k,m;m=fun(a);printf(“The result is:n“);for(k=0;km;k+)printf(“4d“,ak);printf(“n“);(分数:2.00)_四、程序
22、设计题(总题数:1,分数:2.00)43.请编写函数 fun,其功能是分别统计形参 t 所指二维数组中字母 A 和 C 的个数。注意:部分源程序存在 PROG1C 中,请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入所编写的若干语句。试题程序:#includestdioh#includestdlibh#define M14void NONO();void fun(char(*t)M,int*a,int*c)void get(char(*s)M)int i,j;for(i=0;iM;i+)for(j=0;JM;j+)sij=65+rand()12;printf(
23、“c“,sij);printf(“n“);main()char aMM;int x,y;get(a);fun(a,&x,&y);printf(“A=d C=dn“,x,y);NONO();void NONO()*本函数用于打开文件,输入数据,调用函数,输出数据,关闭文件。*FILE*fp,*wf;int i,j,x,y;char aMM;fp=fopen(“c:testindat“,“r“);wf=fopen(“c:testoutdat“,“w“);for(i=0;iM;i+)for(j=0;jM;j+)fscanf(fp,“c“,&aij);fun(a,&x,&y);fprintf(wf,“
24、A=dn“,X);fprintf(wf,“C=dn“,y);felose(fp);felose(wf);(分数:2.00)_国家二级(C 语言)机试模拟试卷 146 答案解析(总分:86.00,做题时间:90 分钟)一、选择题(总题数:40,分数:80.00)1.下列叙述中正确的是( )。(分数:2.00)A.算法就是程序B.设计算法时只需要考虑数据结构的设计C.设计算法时只需要考虑结果的可靠性D.以上三种说法都不对 解析:解析:算法是指解题方案的准确而完整的描述,算法不等于程序,也不等于计算方法,所以 A 错误。设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的控制结构。2.下列叙述
25、中正确的是( )。(分数:2.00)A.有一个以上根结点的数据结构不一定是非线性结构B.只有一个根结点的数据结构不一定是线性结构 C.循环链表是非线性结构D.双向链表是非线性结构解析:解析:线性结构应满足:有且只有一个根结点与每个结点最多有一个前件,也最多有一个后件,所以 B 正确。所以有一个以上根结点的数据结构一定是非线性结构,所以 A 错误。循环链表和双向链表都是线性结构的数据结构。3.下列关于二叉树的叙述中,正确的是( )。(分数:2.00)A.叶子结点总是比度为 2 的结点少一个B.叶子结点总是比度为 2 的结点多一个 C.叶子结点数是度为 2 的结点数的两倍D.度为 2 的结点数是度
26、为 1 的结点数的两倍解析:解析:根据二叉树的基本性质 3:在任意一棵二叉树中,度为 0 的叶子结点总是比度为 2 的结点多一个。所以选择 B。4.软件生命周期中的活动不包括( )。(分数:2.00)A.市场调研 B.需求分析C.软件测试D.软件维护解析:解析:软件生命周期可以分为软件定义、软件开发与软件运行维护三个阶段。主要活动阶段是:可行性研究与计划阶段、需求分析、软件设计、软件实现、软件测试、运行和维护,所以选择 A。5.某系统总体结构图如下图所示: (分数:2.00)A.7B.6C.3 D.2解析:解析:根据总体结构图可以看出该树的深度为 3,比如:XY 系统功能 2功能 21,就是最
27、深的度数的一个表现。6.程序调试的任务是( )。(分数:2.00)A.设计测试用例B.验证程序的正确性C.发现程序中的错误D.诊断和改正程序中的错误 解析:解析:程序调试的任务是诊断和改正程序中的错误。7.下列关于数据库设计的叙述中,正确的是( )。(分数:2.00)A.在需求分析阶段建立数据字典 B.在概念设计阶段建立数据字典C.在逻辑设计阶段建立数据字典D.在物理设计阶段建立数据字典解析:解析:数据字典是在需求分析阶段建立,在数据库设计过程中不断修改、充实和完善的。8.数据库系统的三级模式不包括( )。(分数:2.00)A.概念模式B.内模式C.外模式D.数据模式 解析:解析:数据库系统的
28、三级模式是概念模式、外模式和内模式,所以选择 D。9.有三个关系 R、S 和 T 如下: (分数:2.00)A.自然连接 B.交C.投影D.并解析:解析:自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,所以根据 T 中元组可以判断 R 和 S 做的是自然连接操作。10.下列选项中属于面向对象设计方法主要特征的是( )。(分数:2.00)A.继承 B.自顶向下C.模块化D.逐步求精解析:解析:面向对象基本方法的基本概念有对象、类和实例、消息、继承与多态性,所以选择 A。11.以下叙述中错误的是( )。(分数:2.00)A.算法正确的
29、程序可以有零个输入B.算法正确的程序最终一定会结束C.算法正确的程序可以有零个输出 D.算法正确的程序对于相同的输入一定有相同的结果解析:解析:算法的特征:有穷性。一个算法(对任何合法的输入)在执行有穷步后能够结束,并且在有限的时间内完成。确定性。算法中的每一步都有确切的含义。可行性。算法中的操作能够用已经实现的基本运算执行有限次来实现。输入:一个算法有零个或者多个输入,零个输入就是算法本身确定了初始条件。输出:一个算法有一个或者多个输出,以反映出数据加工的结果。所以 C 选项错误。12.以下叙述中正确的是( )。(分数:2.00)A.C 语句必须在一行内写完B.C 程序中的每一行只能写一条语
30、句C.C 语言程序中的注释必须与语句写在同一行D.简单 C 语句必须以分号结束 解析:解析:C 语句可以跨行来写,但是必须以分号结束,所以 A 选项错误。C 程序中的一行可以有多条语句,所以 B 选项错误。C 语言中的注释语句可以与原语句放在行也可以不放在一行,所以 C 选项错误。13.以下选项中关于 C 语言常量的叙述错误的是( )。(分数:2.00)A.经常被使用的变量可以定义成常量 B.常量分为整型常量、实型常量、字符常量和字符串常量C.常量可分为数值型常量和非数值型常量D.所谓常量,是指在程序运行过程中,其值不能被改变的量解析:解析:C 语言中,常量是指在程序运行过程中其值不能被改变的
31、量,变量是指运行过程中其值可以改变的量,二者不能混淆,所以 A 选项错误。14.以下选项中,不合法的 C 语言用户标识符是( )。(分数:2.00)A.a_bB.AaBcC.a-b D._1解析:解析:C 语言规定,变量命名必须符合标识符的命名规则,C 选项中包含了非法字符“一”,所以错误。标识符由字母、数字或下划线组成,且第一个字符必须是大小写英文字母或者下划线,而不能是数字。15.若变量均已正确定义并赋值,以下合法的 C 语言赋值语句是( )。(分数:2.00)A.x=y=5; B.x=n25;C.x+n=i;D.x=5=4+1;解析:解析:B 选项中运算符“”的前后必须为整数,C 选项中
32、不能将变量赋给表达式 x+n,D 选项中不能将表达式 4+1 赋给常量 5。16.设有定义:int a;float b;执行 scanf(“2df“,&a,&b);语句时,若从键盘输入 8765430回车则 a 和 b 的值分别是( )。(分数:2.00)A.87 和 60 B.876 和 5430C.87 和 5430D.76 和 5430解析:解析:在格式字符前加入一个整数可以指定输入数据所占的宽度,所以赋值时会将 87 赋给 int 型变量 a,把 60 赋给 int 型 float 型变量 b。17.有以下定义语句,编译时会出现编译错误的是( )。(分数:2.00)A.char a=x
33、2d;B.char a=n;C.char a=a;D.char a=“aa“; 解析:解析:D 选项中将字符串常量“aa”赋给字符变量 a 是错误的。18.当变量 c 的值不为 2、4、6 时,值也为“真“的表达式是( )。(分数:2.00)A.(c=2&c=6)&(c21=1)B.(c=2)|(c=4)|(c=6)C.(c=2&c=6)&!(c2)D.(c=2&c=6)|(c!=3)|(c!=5) 解析:解析:逻辑或运算符中只要有一个运算量为真结果就是真,当 c=2&c=6 条件不成立时 c 的值肯定不是 2、3、4、5、6,所以 c!=3,与 c!=5 均成立。所以 D 选项的结果一定为真
34、。19.有以下计算公式 (分数:2.00)A.if(x=0)y=sqrt(x); if(x0)y=sqrt(-x);B.if(x=0)y=sqrt(x); else y=sqrt(-x);C.y=sqrt(x); if(x0)y=sqrt(-x); D.y=sqrt(x=0?x:-x);解析:解析:本题重点考查的知识点是:sqrt()函数。sqrt()函数的作用是计算平方根,要求输出的参数x 必须大于等于 0。题目公式的要求是无论 x 大于等于 0 还是小于 0,y 的值都为 x 绝对值的开方。选项 C中调用了 sqrt(x)函数,而没有判断 x 的正负,则 y=sqrt(x)会出错。20.有
35、以下程序:#includestdiohmain()int y=10;while(y-);printf(“y=dn“,y);程序执行后的输出结果是( )。(分数:2.00)A.y=-1 B.y=0C.y=1D.while 构成无限循环解析:解析:y-表示 y 使用后再自减 1。所以最后一次 y 的值为 0,条件不成立但仍要执行自减操作,y的值为一 1,跳出循环。打印 y 的值-1。21.有以下程序:#includestdiohmain()int i;for(i=1;i=40;i+)if(i+5=0)if(+i8=0)printf(“d“,i);printf(“n“);程序执行后的输出结果是( )
36、。(分数:2.00)A.5B.24C.32 D.40解析:解析:本题的含义是在 1-40 的整数的范围中,只有当 i 的值能被 5 整除,且 i+2 的值能被 8 整除时,打印 i 的值,满足这个条件的只有 32,选择 C 选项。22.有以下程序:#includestdiohmain()ints;scanf(“d“,&s);while(s0)switch(s)case1:printf(“d“,s+5);case2:printf(“d“,s+4);break;case3:printf(“d“,s+3);default:printf(“d“,s+1);break;scanf(“d“,&s);运行时
37、,若输入 1 2 3 4 5 0回车,则输出结果是( )。(分数:2.00)A.66656B.6566456 C.66666D.6666656解析:解析:switch 语句的执行流程是:首先计算 switch 后面圆括号中表达式的值,然后用此值依次与各个 case 的常量表达式比较,若圆括号中表达式的值与某个 case 后面的常量表达式的值相等,就执行此case 后面的语句,执行后遇 break 语句就退出 switch 语句;若圆括号中表达式的值与所有 case 后面的常量表达式都不等,则执行 default 后面的语句。然后退出。所以输入 1 时打印 65,输入 2 时打印 6,输入 3
38、时打印 64,输入 4 时打印 5,输入 5 时打印 6。23.以下叙述中错误的是( )。(分数:2.00)A.用户定义的函数中可以没有 return 语句B.用户定义的函数中可以有多个 return 语句,以便可以调用一次返回多个函数值 C.用户定义的函数中若没有 return 语句,则应当定义函数为 void 类型D.函数的 return 语句中可以没有表达式解析:解析:本题重点考察函数返回值的相关知识,函数的值只能通过 return 语句返回主调函数,在函数中允许有多个 return 语句,但每次调用只能有一个 return 语句被执行,因此只能返回一个函数值。不返回函数值的函数,可以明
39、确定义为“空类型”,类型说明符为“void”。因此 B 选项正确。24.有以下程序:#includestdiohvoid fun(char*c,int d)*c=*c+1;d=d+1;printf(“c,c,“,*c,d);main()char b=a,a=A;fun(&b,a);printf(“c,cn“,b,a);程序运行后的输出结果是( )。(分数:2.00)A.b,B,b,A B.b,B,B,AC.a,B,B,aD.a,B,a,B解析:解析:本题重点考察函数的调用,首先要了解字母对应的 ASCII 码。例如 A 为 65,a 为 97。即字母+1 则可得到下一个字母。其次是函数形参和实
40、参的问题,运行过程如下:在 fun(&b,a)qj,*c=a,d=65。*c+1=b,d+1=66,printf(“c,c,“,c,d);输出 b,B,因为指针 c 指向地址的值为 b,此时 b=*c=b;函数返回执行 printf(“c,cn“,b,a);输出 b,A,因此 A 选项正确。25.下列选项中,能正确定义数组的语句是( )。(分数:2.00)A.int num02008;B.int num;C.int N=2008;D.#deftne N2008 int BumN;int BumN; 解析:解析:C 语言不允许定义动态数组,定义数组的大小必须为常量表达式。A 选项错误,C 语言中
41、数组没有此类型的定义方法;B 选项错误,定义数组应指明数组大小,如果不指明数组大小,需要给定初值的个数;C 选项错误,N 为变量,不能用来定义数组大小。因此 D 选项正确。26.以下函数实现按每行 8 个输出 w 所指数组中的数据:#includestdiohvoid fun(int*w,int n)int i;for(i=0;in;i+)_printf(“d“,wi);printf(“n“);在横线处瘦填入的话句是( )。(分数:2.00)A.if(i8=0)printf(“n“);B.if(i8=0)continue;C.if(i8=0)printf(“n“); D.if(i8=0)con
42、tinue;解析:解析:要按照每行 8 个输出数据的话,横线处语句的功能应该为:当 i 是 8 的倍数时(即 i8=0),输出一个换行符。因此 C 选项正确。27.有以下程序:#includestdiohvoid fun(char*c)while(*c)if(*c=a&*c=z)*c=*c-(a-A);e+;main()char s81;gets(s);fun(s);puts(s);当执行程序时从键盘上输入Hello Beijing回车,则程序运行后的输出结果是( )。(分数:2.00)A.hello beijingB.Hello BeijingC.HELLO BEIJING D.hELLO
43、Beijing解析:解析:主程序读取整个字符串存于 s 中,调用 fun 函数,字符指针 c 指向数组 s。函数 fun 的功能是把指针 c 所指向的字符数组中的所有小写字符转换为大写。gets 函数可以把空格作为字符串的一部分输入,以回车作为输入结束。如果*c 为小写字符,则*c=*c-32(转大写)。因此 C 选项正确。28.有以下程序:#includestdiohmain()int a44=1,4,3,2,8,6,5,7,3,7,2,5,4,8,6,1;inti,j,k,t;for(i=0;i4;i+)for(j=0;j3;j+)for(k=J+1;k4;k+)if(ajiaki)t=a
44、ji;aji=aki;aki=t;*按列排序*for(i=0;i4;i+)printf(“d,“,aii);程序运行后的输出结果是( )。(分数:2.00)A.1,6,2,1,B.8,7,3,1,C.4,7,5,2,D.1,6,5,7, 解析:解析:首先对二维数组进行赋值操作,a00、a01、a32、a33的值为1、4、6、1。通过 for 语句和 if 语句,对二维数组各列元素进行由小到大的排序操作,程序最后通过 for 语句输出二维数组对角线上的元素。因此 D 选项正确。29.有以下程序(strcat 函数用于连接两个字符串):#includestdioh#includestringhma
45、in()char a20=“ABCD0EFG0“,b=“IJK“;strcat(a,b);printf(“sn“,a);程序运行后的输出结果是( )。(分数:2.00)A.IJKB.ABCDE0FG0IJKC.ABCDIJK D.EFGUK解析:解析:字符数组 a 中包含两个0,遇到第一个0时就表示字符串 a 结束。字符串处理函数 strcat(字符数组 a,字符数组 b),功能是连接两个字符数组中的字符串,把字符串 b 连接到 a 的后面,结果放在字符数组 a 中。连接时将字符串 a 后的0取消,只在新串最后保留一个0。本题相当于将“ABCD”和“IJK”连接。因此 C 选项正确。30.有以下程序段:char name20;int nun;scanf(“name=s Bum=d“,name,&num);当执行上述程序段,并从键盘输入:name=Lili num=1001回车后,name 的值为( )。(分数:2.00)A.name=LiliRum=1001B.name=LiliC.Lili Rum=D.Lili 解析:解析:在输入格式控制“name=s num=d”中,普通字符“name=num=”在输入时要原样输入,而格式控制符s