1、国家二级( C语言)笔试模拟试卷 89及答案与解析 1 算法的空间复杂度是指 ( )。 ( A)算法程序的长度 ( B)算法程序中的指令条数 ( C)算法程序所占的存储空间 ( D)算法执行过程中所需要的存储空间 2 下列关于队列的叙述中正确的是 ( )。 ( A)在队列中只能插入数据 ( B)在队列中只能删除数据 ( C)队列是先进先出的线性表 ( D)队列是先进后出的线性表 3 设树 T的度为 4,其中度为 1, 2, 3, 4的结点个数分别为 4, 2, 1, 1,则 T中的叶子结点数为 ( )。 ( A) 5 ( B) 6 ( C) 7 ( D) 8 4 程序设计方法要求在程序设计过程
2、中 ( )。 ( A)先编制出程序,经调试使程序运行结果正确后再画出程序的流程图 ( B)先编制出程序,经调试使程序运行结果正确后再在程序中的适当位置处加注释 ( C)先画出流程图,再根据流程图编制出程序,最后经调试使程序运行结果正确后再在程序中的适当位置处加注释 ( D)以上三种说法都不对 5 下列叙述中正确的是 ( )。 ( A)在面向对象的程序设计中,各个对象之间具有密切的联系 ( B)在面向对象的程序设计中,各个对象都是公用的 ( C)在面向对象的程序设计中,各个对象之间相对独立,相互依赖性小 ( D)上述三种说法都不对 6 下列叙述中正确的是 ( )。 ( A)运行结果正确的程序一定
3、具有易读性 ( B)自己编写的程序主要是给自己使用的 ( C)当前编写的程序主要是为当前使用的 ( D)上述三种说法都不对 7 在数据流图 (DFD)中,带有名字的箭头表示 ( )。 ( A)模块之间的调用关系 ( B)程序的组成成份 ( C)控制程序的执行顺序 ( D)数据的流向 8 数据库系统的核心是 ( )。 ( A)数据模型 ( B)数据库管理系统 ( C)软件工具 ( D)数据库 9 下列叙述中正确的是 ( )。 ( A)数据库系统是一个独立的系统,不需要操作系统的支持 ( B)数据库设计是指设计数据库管理系统 ( C)数据库技术的根本目标是要解决数据共享的问题 ( D)数据库系统中
4、,数据的物理结构必须与逻辑结构一致 10 下列叙述中正确的是 ( )。 ( A)数据库系统是一个独立的系统,不需要操作系统的支持 ( B)数据库技术的根本目标是要解决数据的共享问题 ( C)数据库管理系统就是数据库系统 ( D)以上三种说法都不 对 11 以下叙述中正确的是 ( )。 ( A) C程序中注释部分可以出现在程序中任意合适的地方 ( B)花括号 和 只能作为函数体的定界符 ( C)构成 C程序的基本单位是函数,所有函数名都可以由用户命名 ( D)分号是 C语句之间的分隔符,不是语句的一部分 12 结构化程序由 3种基本结构组成, 3种基本结构组成的算法 ( )。 ( A)可以完成任
5、何复杂的任务 ( B)只能完成部分复杂的任务 ( C)只能完成符合结构化的任务 ( D)只能完成一些简单的任务 13 以下定义语句中正确的是 ( )。 ( A) char a=Ab=B; ( B) float a=b=l0.0; ( C) int a=l0,*b= char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); printf(“%d %d %3.1f %3.1fn“,a,c,f,x); 程序运行后的输出结果是 ( )。 ( A) 1 65 1 6.5 ( B) 1 65 1.5 6.5 ( C) 1 65 1.0 6.5 ( D) 2
6、65 1.5 6.5 15 下列关于 C语言用户标识符的叙述中正确的是 ( )。 ( A)用户标识符中可以出现下划线和中划线 (减号 ) ( B)用户标识符中不可以出现中划线,但可以出现下划线 ( C)用户标识符中可以出现下划线,但不可以放在用户标识符的开头 ( D)用户标识符中可以出现下划线和数字,它们都可以放在用户标识符的开头 16 有以下程序: main() int m=3,n=4,x; x;-m+; x=x+8/+n; printf(“%dn“,x); 程序运行后的输出结果是 ( )。 ( A) 3 ( B) 5 ( C) -1 ( D) -2 17 有以下程序: main() cha
7、r a=a,b; printf(“%c,“,+a); printf(%cn“,b=a+); 程序运行后的输出结果是 ( )。 ( A) b,b ( B) b,c ( C) a,b ( D) a,c 18 有以下程序: main() int x=102, y=012; printf(“%2d,%2dn“,x,y); 执行后输出结果是 ( )。 ( A) 10,01 ( B) 02,12 ( C) 102,10 ( D) 02,10 19 有以下程序段: int m=0,n=0; char c=a; scanf(“%d%c%d“, printf(“%d,%c,%dn“,m,c,n); 若从键盘上输
8、入 10A10回车,则输出结果是 ( )。 ( A) 10, A, 10 ( B) 10, a, 10 ( C) 10, a, 0 ( D) 10, A, 0 20 有定义语句: “int a=1,b=2,c=3,x;”,则以下选项中各程序段执行后, x的值不为3的是 ( )。 ( A) if(c a)x=1; elseif(b a)x=2; elsex=3; ( B) if(a 3)x=3; elseif(a 2)x=2; elsex=1; ( C) if(a 3)x=3; if(a 2)x=2; if(a 1)x=1; ( D) if(a b)x=b; if(b c)X=c; if(c a
9、)x=a; 21 已有定义: int x=3, y=4, z=5;,则表达式 !(x+y)+z-1 ( C) y=0; if(x =0) if(x 0)y=1; e1se y=-1; ( D) if(x =0) if(x 0)y=1; elsey=0: elsey=-1; 23 以下选项中,与 k=n+完全等价的表达式是 ( )。 ( A) k=n, n=n+1 ( B) n=n+1, k=n ( C) k=+n ( D) k+=n+1 24 以下程序的功能是:按顺序读入 10名学生 4门课程的成绩,计算出每位学生的平均分并输出,程序如下。 main() int n,k; float scor
10、e;sum,ave; sum=0.0; for(n=1;n =10;n+) for(k=1;k =4;k+) scanf(“%f“, sum+=score; ave=sum/4.0; printf(NO%d: %fn“,n,ave); 上述程序运行后结果不正确,调试中发现有一条语句出现在程序中的位置不正确。这条语句是 ( )。 ( A) sum=0.0; ( B) sum+=score; ( C) ave=sun/4.0; ( D) printf(“NO%d: %fn“,n,ave); 25 有以下程序段: int n=0, p; doscanf(“%d“,n+;while(p!=12345
11、此处 do-while循环的结束条件是 ( )。 ( A) p的值不等于 12345并且 n的值小于 3 ( B) p的值等于 12345并且 n的值大于等于 3 ( C) p的值不等于 12345或者 n的值小于 3 ( D) p的值等于 12345或者 n的值大于等于 3 26 若有如下程序: main() int x=9,y=4,n=0; switch(x%2) case 0:n+;break; case 1:n+; case 0:n+;break; printf(“%dn“,n); 则程序运行后的输出结果是 ( )。 ( A) 1 ( B) 2 ( C) 3 ( D)编译错误 27 有
12、以下程序 main() char a1=M,a2=m; printf(“%cn“,(a1,a2); 以下叙述中正确的是 ( )。 ( A)程序输出大写字母 M ( B)程序输出小写字母 m ( C)格式说明符不足,程序出错 ( D)程序运行时产生出错信息 28 若有以下调用语句,则不正确的 fun函数的首部是 ( )。 main() int a50,n; fun(n, ( A) void fun(int m,int x) ( B) void fun(int s,int h41) ( C) voidfun(int p,int*s) ( D) void fun(int n,iht a) 29 若
13、fp是指向某文件的指针,且已读到文件末尾,则函数 feof(fp)的返回值是( )。 ( A) EOF ( B) -1 ( C) 1 ( D) NULL 30 下列程序段的输出结果是 ( )。 void fun(int *x,int *y) printf(“%d%d“,*x,*y);*x=3;*y=4; main() int x=2,y=1; fun( printf(“%d%d“,X,y); ( A) 1243 ( B) 1212 ( C) 1234 ( D) 2112 31 以下程序中函数 sort的功能是对 a所指数组中的数据进行由大到小的排序: void sort(int a,int n
14、) int i,j,t; for(i=0;i n-1;i+) for(j=i+1;i n;j+) if(aiaj) t=ai;ai=aj;aj=t; main() int aa10=1,2,3,4,5,6,7,8,9,10,i; sort( for(i=0;i 10;i+) printf(%d,“,aai); 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
15、, 2, 10, 9, 8, 7, 6, 5, 4, 3, 32 下述程序的输出结果是 ( )。 #include stdio.h int f(n) int n; if(n=0 | | n=1) return 3; return n-f(n-2); void main() printf(“n%d“,f(10); ( A) 3 ( B) 8 ( C) 9 ( D) 10 33 有以下程序: main() char a =a,b,c,d,e,f,g,h,0; int i,j; i=sizeof(a); j=strlen(a); printf(“%d,%db“,i,j); 程序运行后的输出结果是 (
16、 )。 ( A) 9, 9 ( B) 8, 9 ( C) 1, 8 ( D) 9, 8 34 以下程序中函数 reverse的功能是将 a所指数组中的内容进行逆置: void reverse(int a ,int n) int i,t; for(i=0;i n/2l;i+) t=ai;ai=an-1-i;an-1-i=t; main() int b10=1,2,3,4,5,6,7,8,9,10; int i,s=0; reverse(b,8); for (i=6;i 10;i+) s+=bi; printf(“%dn“,s); 程序运行后的输出结果是 ( )。 ( A) 22 ( B) 10
17、( C) 34 ( D) 30 35 下面程序段的执行结果是 ( )。 main() int a55,i,j; for(i=1;i 5;i+) for(j=1;j 5;j+) aij=(i j)*(j/i); for(i=1;i 5;i+) for(j=1;j 5;j+) printf(“%2d“,aij); printf(“n“); ( A) 1111 1111 1111 1111 ( B) 0001 0010 0100 1000 ( C) 1000 0100 0010 0001 ( D) 0000 0000 0000 0000 36 有以下程序: #include string.h mai
18、n() char *p=“abcdeOfghjik0“; printf(“%dn“,strlen(p); 程序运行后的输出结果是 ( )。 ( A) 12 ( B) 15 ( C) 6 ( D) 5 37 下面的程序输出结果是 ( )。 #define U 5 #define V U+1 #define W V*V/2 main() printf(“%d “,W); printf(“%d“,5*W); ( A) 18 72 ( B) 10.5 52.5 ( C) 10.5 25.5 ( D) 10 30 38 若有如下程序: #include“stdio.h“ void main() FILE
19、 *fp; fp=fopen(“test“,“wb“); fprintf(fp,“%d%.1f,%c%c“,5,238.41,B,h); fclose(fp); 则程序运行后向文件输出的结果是 ( )。 ( A) 5238.41Bh ( B) 5238.4,Bh ( C) 5, 238.4, B, h ( D) 5238.41Bh 39 以下叙述中错误的是 ( )。 ( A)二进制文件打开后可以先读文件的末尾,而顺序文件不可以 ( B)在程序结束时,应当用 fclose函数关闭已打开的文件 ( C)在利用 fread函数从二进制文件中读数据时,可以用数组名给数组中所有元素读入数据 ( D)不可
20、 以用 FILE定义指向二进制文件的文件指针 40 有以下程序: #include string.h main(int argc,char *argv) int i,len=0; for(i=1;i argc;i+) len+=strlen(argvi); printf(“%dn“,len); 程序编译连接后生成的可执行文件是 ex1.exe,若运行时输入带参数的命令行是: ex1 abcd efg 10回车 则运行的结果是 ( )。 ( A) 22 ( B) 17 ( C) 12 ( D) 9 41 有以下程序: int fa(int x) return x*x;) int fb(int x
21、) return x*x*x; int f(int (*f1)().int (*f2)(),int x) return f2(x)-f1(x); main() int i; i=f(fa,fb,2);printf(“%dn“,i); 程序运行后的输出结果是 ( )。 ( A) -4 ( B) 1 ( C) 4 ( D) 8 42 有以下程序: main() int i=1,j=1,k=2; if(j+|k+) 执行后输出结果是 ( )。 ( A) 1, 1, 2 ( B) 2, 2, 1 ( C) 2, 2, 2 ( D) 2, 2, 3 43 有以下程序: void ss(char *s,c
22、har t) while(*s) if(*s=t) *s=t-a+A; s+; main() char str1100=“abcddfefdbd“,c=d; ss(str1,c); printf(“%sn“,str1); 程序运行后的输出结果是 ( )。 ( A) ABCDDEFEDBD ( B) abcDDfefDbD ( C) abcAAfefAbA ( D) Abcddfefdbd 44 有以下程序: struct STU char name10; int num; int score; ; main() struct STU s5=“YangSan“,20041,703,“LiSiGu
23、o“,20042,580, “WangYin“,20043,680,“SunDan“,20044,550), Penghua“,20045,537,*p5,*t; int i,j; for(i=0;i 5;i+) pi= for(i=0;i 4;i+) for(j=i+1;j 5;j+) if(pi- Score pj- Score) t=pi;pi=pj;pi=t; printf(“%d %dn“,s1.Score,p1- Score); 执行后输出结果是 ( )。 ( A) 550 550 ( B) 680 680 ( C) 580 550 ( D) 580 680 45 若有如下语句 :
24、 struct a char x10 int y; s,*t; t= 则对结构体变量 s中的成员 y的正确引用是 ( )。 ( A) a.y; ( B) t- y; ( C) t.y; ( D) *t- y; 46 有以下程序: struct s int x,y;) data2=10,100,20,200); main() struct s *p=data; printf(“%dn“,+(p- x); 程序运行后的输出结果是 ( )。 ( A) 10 ( B) 11 ( C) 20 ( D) 21 47 若有以下说明和定义: typedef int *INTEGER; INTEGER p,*q
25、; 以下叙述正确的是 ( )。 ( A) p是整型变量 ( B) p是基类型为整型的指针变量 ( C) q是基类型为整型的指针变量 ( D)程序中可用 INTEGER代替 int类型名 48 有以下程序: main() unsigned char a,b; a=4 | 3; b=4 printf(“%d %dn“,a,b); 执行后输出结果是 ( )。 ( A) 7 0 ( B) 0 7 ( C) 1 1 ( D) 43 0 49 有以下程序: #include stdlib.h struct NODE int num; struct NODE *next; main() struct NOD
26、E *p,*q,*r; int sum=0; p=(struct NODE *)malloc(sizeof(struct NODE); q=(Struct NODE *)malloc(sizeof(struct NODE); r=(Struct NODE *)malloc(sizeof(struct NODE); p- num=1; q- num=2; r- num=3; p- next=q; q- next=r; r- next=NULL; sum+=q- next- num;sum+=p- num; printf(“%dn“,sum); 执行后的输出结果是 ( )。 ( A) 3 ( B)
27、 4 ( C) 5 ( D) 6 50 C语言中,能识别处理的文件为 ( )。 ( A)文本文件和数据块文件 ( B)文本文件和二进制文件 ( C)流文件和文本文件 ( D)数据文件和二进制文件 51 在深度为 5的完全二叉树中,度为 2的结点数最多为【 】。 52 数据的逻辑结构在计算机存储空间中的存放形式称为数据的【 】。 53 若按功能划分,软件测试的方法通常分为白盒测试方法和 【 】测试方法。 54 在关系运算中,【 】运算是对两个具有公共属性的关系所进行的运算。 55 实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只属于一个学校,
28、则实体集学校与实体集学生之间的联系属于【 】的联系。 56 以下程序运行后的输出结果是【 】。 main() int p=30; printf(“%dkn“,(p/3 0?p/10:p%3); 57 以下程序运行后的输出结果是【 】。 main() char m; m=B+32; printf(“%cn“,m); 58 若有如下定义,则该数组的第一维大小为【 】。 int b4=1,2,3,4,5,6,7,8,9); 59 以下程序运行后的输出结果是【 】。 main() int i,m=0,n=0,k=0; for(i=9;i =11;i+) switch (i/10) case 0: m+
29、;n+;break; case 1: n+;break; default: k+;n+; printf(“%d %d %dn“,m,n,k); 60 以下程序运行后的输出结果是【 】。 void fun(int X,int y) x=x+y;y=x-y;x=x-y; printf(“%d,%d,“,x,y); main() int x=2,y=3; fun(x,y); printf(“%d,%dn“,x,y); 61 以下程序运行后的输出结果是【 】。 main() char a=“Language“,b=“Programe“; char *p1, *p2; int k; p1=a; p2=b
30、; for(k=0;k =7;k+) if(*(p1+k)=*(p2+k) printf(%c“,*(p1+k); 62 以下程序的输出结果是【 】。 #include stdio.h main() int a=1234; float b=123.456; double c=12345.54321; printf(“n%2d,%2.1f,%2.11f“,a,b,C); 63 以下程序的输出结果为【 】。 #define JFT(x)x*x main() int a, k=3; a =+ JFT(k+1); printf(“%d“,a); 64 用以下语句调用库函数 malloc,使字符指针 s
31、t指向具有 11个字节的动态存储空间,请填空。 st=(char*)【 】 ; 65 如果调用 fopen函数不成功,则函数返回【 】;如果调用 fclose函数不成功,则函数返回【 】。 66 下面程序的功能是用来统计文件中字符个数。请填空。 #include“stdio.h“ main() long count=OL; FILE*fp=【 】 (“text.dat“,“r“); if(fp=0) printf(“Open errorn“); exit(0); while( 【 】 ) fgetc(fp); count+; fclise(fp); printf(“%1dn“,count);
32、67 以下程序的功能是求下列算式中 A、 B、 C的值,请填空。 #include stdio.h main() int a,b,c,k,t=348; for(a=0;a 10;a+) for(b=0;b 10;b+) for(c=0;【 】 ;c+) k=【 】 ; if(k=t) printf(“A=%d B=%d C=%dn“,a,b,c); 国家二级( C语言)笔试模拟试卷 89答案与解析 1 【正确答案】 D 【试题解析】 算法的空间复杂度指执行这个算法所需要的内存空间规模。 2 【正确答案】 C 【试题解析】 队列是 指允许在一端进行插入、而在另一端进行删除的线性表,选项 A和选项
33、 B错误;在队列中,最先插入的元素将最先被删除,又称为 “先进先出 ”的线性表,选项 C正确,选项 D错误。 3 【正确答案】 D 【试题解析】 根据给定的条件,在树中,各结点的分支总数为 41 22 1341 15;树中的总结点数为 15(各结点的分支总数 ) 1(根结点 )=16;非叶子结点总数为 4 2 1 1 8。因此,叶子结点数为 16(总结点数 )-8(非叶子结点总数 )=8。因此,本题的正确答案为选项 D。 4 【正确答案】 D 【试题解析】 程序设计的过程应是先画出流程图,然后根据流程图编制出程序,所以选项 A错误。程序中的注释是为了提高程序的可读性,使程序易于理解、易于维护,
34、注释:必须在编制程序的同时加入,所以,选项 B和选项 C错误。综上所述,本题的正确答案为选项 D。 5 【正确答案】 C 【试题解析】 在面向对象的程序设计中,对象是面向对象的软件的基本模块,从模块的独立性考虑,对象内部各种元素彼此结合得很紧密,内聚性强。由于完成对象功能所需要的数据和方法基本上都被封装在对象内部,它与外界的联系自然就比较少,所以,对象之间 的耦合通常比较松。选项 A与选项 B错误,选项 C正确。 6 【正确答案】 D 【试题解析】 程序设计中,除了设计和编制出一个运行结果正确的程序之外,还应养成良好的程序设计风格。我们编制的程序主要是给别人看的,而且,所编制的程序主要是为以后
35、看的。因此,选项 A、 B和 C的说法都错误。 7 【正确答案】 D 【试题解析】 在数据流图中,用标有名字的箭头来表示数据流。 8 【正确答案】 B 【试题解析】 数据库管理系统是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数 据服务等,因此数据库管理系统是数据库系统的核心。 9 【正确答案】 C 【试题解析】 数据库系统需要操作系统的支持,这一点必不可少,故选项 A叙述不正确。选项 B错误,数据库设计是指设计一个能满足用户要求,性能良好的数据库。选项 D也不对,数据库应该具有物理独立性和逻辑独立性,改变其中的一个而不影响另一个。 10 【正确答案】 B 【试题解析
36、】 数据库系统由操作系统、数据库管理系统和应用程序在一定的硬件支持下构成,它不仅指数据库本身,也不仅指数据库管理系统,而是指计算机系统中引进数据库以后的系 统,选项 A和 C错误。选项 B的说法正确。 11 【正确答案】 A 【试题解析】 /*与 */之间的信息称为注释信息,在 C语言中,允许在任何能够插入空格符的位置插入注释,但 C语言的注释不能进行嵌套,故选项 A正确:在 C语言中,函数体是从花括号 开始,到花括号 结束。但没有规定花括号 和 只能作为函数体定界符,故选项 B错误;选项 C中前半句是正确的, C程序由一个或多个函数所组成,但不是所有的函数都由用户自己命名,有些函数,比如主函
37、数main()就不能由用户来命名,故选 C不正确;在 C语言中明确规定每条语句以分号 ;结束,分号是语句不可缺少的一部分,故选项 D不正确。所以, 4个选项中选项 A符合题意。 12 【正确答案】 A 【试题解析】 C程序由 3种基本的结构组成,分别为顺序结构、选择结构和循环结构,这 3种结构可以组成任何复杂的 C程序,即可以完成任何复杂的任务,故选项 B、选项 C和选项 D都不正确。所以, 4个选项中选项 A符合题意。 13 【正确答案】 C 【试题解析】 C语言中可以同时定义多个变量,但变量之间必须用 “,”隔开,显然,选项 A中少了一个逗号 “,”,故选项 A不正确;选项 B中定义变量时
38、用了连续的 赋值语句,这在定义变量是不正确的,故选项 B不正确:选项 D定义了一个float型指针 a,然后定义了一个 float型变量 b,并。让这个变量的初值为指针变量 a的地址,显然这是错误的,除非 b是指向 float型指针变量的指针。故选项 D不正确,所以选项 C符合题意。 14 【正确答案】 B 【试题解析】 主函数中先定义了一个整型变量 a,一个字符变量 c并赋初值 10,一个浮点型变量 f并赋初值 100.00和一个 double型 x,接着执行a=f/=c*=(x=6.5),该语句从右向左计算,先把 6.5赋值给 x(该括号表达 式的值也为6.5),此时 x的值变为 6.5,
39、然后执行 c*=(x=6.5)相当于执行 c=c*(x=6.5),此时 c的值为 65,接着向左执行 f/c*=(x=6.5),语句相当于执行 f=f/c,所以 f的值为 100/651.538。接着向最右边执行 “a=f”,由于 a是整型变量,所以 a最后去 f的整数部分为 1。程序最后输出的 a、 c、 f和 x的值 (f和 x只保留小数点后面 1位 )分别为 1、 65、 1.5、 6.5。所以, 4个选项中选项 B符合题意。 15 【正确答案】 B 【试题解析】 在 C语言中,合法的标识符由字母、数 字和下划线组成 (故选项 A不正确 ),并且第一个字符必须为字母或者下划线 (故选项
40、C和选项 D不正确 )。故B为所选。 16 【正确答案】 D 【试题解析】 主函数中首先定义了整型变量 m、 n和 x,并给 m和 n赋初值为 3和 4,接着执行两条赋值语句,第一条 x=-m+等价于 x=-m, m+,运行后 x的值为 -3,第二条 x=x+8/+n等价于 +n,x=x+8/n,即 x=-3+8/5=-2,因此最后输出 x的值为 -2。所以, 4个选项中选项 D符合题意。 17 【正确答案】 A 【试题解析】 程序中的第一条输 出语句输出表达式 +a的值,即输出 a+1的值,而此时 a的值为 a,所以第一条输出语句输出的值为 b;第二条输出语句中输出表达式 b=a+的值,即输
41、出 a的值,而此时 a的值为 b,所以第二条输出语句输出的值也为 b。故选项 A符合题意。 18 【正确答案】 C 【试题解析】 本题中, “printf(“%2d,%2dn“,x,y)”表示以逗号隔开输出两个十进制整数,每个整数域宽是 2。而在 C语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出,因此最后的输出值为 102和 10(y的初值 012表示八进制整数 12,等于十进制的 10)。所以, 4个选项中选项 C符合题意。 19 【正确答案】 A 【试题解析】 格式字符 %d用于输入整数, %c用于输入字符。在输入时,系统把第一个 10作为整数 10赋给 m,把随后的 A作为
42、字符赋值给 c,后面的 10作为整数赋给 n,最后输出的结果为 10, A, 10所以, A选项为所选。 20 【正确答案】 C 【试题解析】 选项 A首先判断 if语句条件中表达式的值 3 1为假,然后执行最近的 else后面的语句,该 else后面又为 if-else语句,在这个 if-else语句 中首先判断该 if语句条件中表达式的值 2 1为假,程序执行其最近的 else后面的语句,将3赋值给 x。选项 B中首先判断 if语句条件中表达式的值 1 3为真,然后执行最近的 else后面的语句 x=3,后面的 else不再执行,最后 x的值为 3。选项 C中,首先执行第一条 if语句,由
43、于 1 3为真,执行此 if后面的语句 x=3,接着执行第二条 if语句,由于 1 2为真,执行此 if后面的语句 x=2,接着执行第三条 if语句,由于 1 1为假,后面的语句不执行,所以最后的 x值为 2不为 3。选项 D中,首先执行第一条 if语句,由于 a b为真, 执行此 if后面的语句 x=b:接着执行第二条 if语句,由于 b c,为真,执行此 if后面的语句 x=c,接着执行第三条 if语句,由于 c a为假,后面的语句不执行,所以最后的 x值为 c,即为 3。所以, 4个选项中选项 C符合题意。 21 【正确答案】 D 【试题解析】 本题中, ”应在外层循环中。选项 A正确。
44、 25 【正确答案】 D 【试题解析】 本题中,循环执行判断条件为 while后面括号里的表达式即p!=12345” (若是小写字母,则被转换成相应的大写字母 )语句。在 主函数中执行函数调用 ss(str1, c),很显然是把 str1数组中所有字符 d变成大写字母,其他字符不变。所以 4个选项中 B正确。 44 【正确答案】 C 【试题解析】 本题中首先定义了结构体类型 STU,该结构体由一个长度为 10的字符数组、两个整型变量 num和 Score组成。在主函数中,定义了一个长度为 5的结构体数组 s并赋初值,一个指针数组 p和一个指针变量 t,接着将数组 s中各元素的地址依次赋给指针数
45、组 p中的各成员。然后通过两个 for循环将数组 p按Score的值从小到大的顺序排列。因此最后输出的 p1- Score的值为 550,而数组 s1.Score的值为 580,所以, 4个选项中选项 C符合题意。 45 【正确答案】 B 【试题解析】 本题中的 a是结构体名, s是结构体 a的变量, t是结构体 a的指针。通过变量直接访问结构体成员应该使用 “.”运算符,而通过指针间接访问结构体成员应该使用 “- ”运算符。故本题的正确答案为 B。 46 【正确答案】 B 【试题解析】 本题中定义了一个结构体数组 data2并初始化,主函数中定义了一个结构体类型指针变量并让它指向 data的
46、首地址,由于 p指向 第一个元素的地址,所以 p- x相当于 data0.x即为 10,所以 +(p- x)后的值为 11。故 4个选项中选项 B符合题意。 47 【正确答案】 B 【试题解析】 本题中 INTEGER被定义为 int*的别名,故直接由它定义的类型基类型为整型的指针变量。因此, p是基类型为 int的指针变量, q是 int型指针的指针变量。故 4个选项中 B正确。 48 【正确答案】 A 【试题解析】 在位与运算符 &中参加运算的两位都为 1时,其结果为 1,否则结果为 0。所以本题中的 4|3: 01002|00112=01112=7。位与运算符 |中参加运算的两位只要有一个为 1,则结果为 1,只有当相应的两位都为 0结果才为 0。所以本题中的 4&3=01002&00112 =00002=0。最后输出 a和 b的值为 7和 0。故 4个选项中选项 A符合题意。 49 【正确答案】 B 【试题解析】 本题中定义了一个结点结构 stmct NODE,在主函数中定义了 3个结点指针 p、 q和 r,接着通过 malloc函数分配了 3个结点并让 p、 q和 r分别指向他们,再接着给 p、 q和 r所指向的结点的 num域赋值为 1、 2、 3,然后让结点p指向 q,让 q指向 r, r指