1、国家二级( C语言)笔试模拟试卷 13及答案与解析 1 两个或两个以上的模块之间关联的紧密程度称为 ( )。 ( A)耦合度 ( B)内聚度 ( C)复杂度 ( D)数据传输特性 2 “商品 ”与 “顾客 ”两个实体集之间的联系一般是 ( )。 ( A)一对一 ( B)一对多 ( C)多对一 ( D)多对多 3 数据库 (DB) 、数据库系统 (DBS)、数据库管理系统 (DBMS)之间的关系是 ( )。 ( A) DB包含 DBS和 DBMS ( B) DBMS包含 DB和 DBS ( C) DBS包含 DB和 DBMS ( D)没有任何关系 4 按照 “后进先出 ”原则组织数据的数据结构是
2、 ( )。 ( A)队列 ( B)栈 ( C)双向链表 ( D)二叉树 5 下列描述中正确的是 ( )。 ( A)线性链表是线性表的链式存储结构 ( B)栈与队列是非线性结构 ( C)双向链表是非线性结构 ( D)只有根结点的二叉树是线性结构 6 在 E-R图中,用来表示实体的图形是 ( ); ( A)矩形 ( B)椭圆形 ( C)菱形 ( D)三角形 7 在深度为 7的满二叉树中,叶子结点的个数为 ( )。 ( A) 32 ( B) 31 ( C) 64 ( D) 63 8 对如下二叉树 进行后序遍历的结果为 ( )。 ( A) ABCDEF ( B) DBEAFC ( C) ABDECF
3、( D) DEBFCA 9 下列选项中不属于结构化程序设计方法的是 ( )。 ( A)自顶向下 ( B)逐步求精 ( C)模块化 ( D)可复用 10 下列叙述中正确的是 ( )。 ( A)软件测试应该由程序开发者来完成 ( B)程序经调试后一般不需要再测试 ( C)软件维护只包括对程序代码的维护 ( D)以上三种说法都 不对 11 下列说法不正确的是 ( )。 ( A)一个 C语言源程序可以由一个函数组成也可以由多个函数组成 ( B) main()中的 “()”是函数的参数部分,括号内可为空,但括号不能省略 ( C) C语言程序是以函数为基本单位的 ( D)在 C语言程序中,注释行只能位于一
4、条语句的后面 12 sizeof(float)是 ( )。 ( A)一种函数调用 ( B)一种函数定义 ( C)一个浮点表达式 ( D)一个整型表达式 13 下列合法的声明语句是 ( )。 ( A) int_abc=50; ( B) double int=3+5e2.5 ( C) long do=1L; ( D) float 3_asd=3e-3; 14 下列叙述中正确的是 ( )。 ( A)在赋值表达式中,赋值号的左边既可以是变量,也可以是任意表达式 ( B)实型变量中允许存放整型数 ( C)若 a和 b类型相同,在执行了赋值 a=b后, b中的值将放入 a中,但 b中的值不变 ( D)在
5、C程序中,求余运算符 “%”两边的类型相同时才能进行运算 15 设 x、 y和 z是 int型变量,且 x=4, y=6, z=8,则下列表达式中值为 0的是( )。 ( A) x main() int a=1,b=2,c=3,sum; sm=fun(a+,b+,a+B) ,c+); printf(“%dn“,sum); 执行后的输出结果是( )。 ( A) 6 ( B) 7 ( C) 8 ( D) 9 20 下列程序的输出结果是 ( )。 main() int a=4,b=5,c; if(a B) c=a*b;printf(“%d,%d,%dn“,b,a,C); else c=b/a;pri
6、ntf(“%d,%d,%dn“,b,a,C); ( A) 4,5,12 ( B) 20 ( C) 5,4,20 ( D) 12 21 有以下程序 : #include stdio.h main ( ) int a3 3 , *p,i; p= i+)pi=i: for(i=0; i 3;i+)Printf(“%d“,a1i); 程序运行后的输出结果是 ( )。 ( A) 012 ( B) 123 ( C) 234 ( D) 345 22 有以下结构体说明和变量定义,相应的链表如图所示:struet node int data; struet node * next; *p,*q,*r;现将 q所
7、指结点多链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是 ( )。 ( A) p- next=q- next; ( B) p- next=p- next- next; ( C) p- next=r; ( D) p=q- next 23 有以下程序 :#include stdio.h #include string.h main( ) char a 7 = “a0 0a0 0“; int i,j; i = sizeof(a); j = strlen(a); printf(“ % d %d n“ ,i,j); 程序运行后的输出结果是 ( )。 ( A) 22 ( B) 76 ( C)
8、 72 ( D) 62 24 已有定义: chara=“xyz“, b: x, y, z;以下叙述中正确的是 ( )。 ( A)数组 a和 b的长度相同 ( B) a数组长度小于 b数组长度 ( C) a数组长度大于 b数组长度 ( D)上述说法都不对 25 有以下程序: #include stdio.h void WriteStr(char *fn, char *sir) FILE * fP; fP=fopen(fn, “w“); fput6(str, fp); fclose(fp); main() WriteStr(“t1.dar“, “start“); WrlteStr(“t1 dat“
9、, “end“); 程序运行后,文件 t1.dat中的内容是 ( )。 ( A) start ( B) end ( C) startend ( D) endrt 26 以下叙述中正确的是 ( )。 ( A)用 C程序实现的算法必须要有输入和输出操作 ( B)用 C程序实现的算法可以没有输出但必须要有输入 ( C)用 C程序实现的算法可以没有输入但必须要有输出 ( D)用 C程序实现的算法可以既没有输入也没有输出 27 以下叙述中正确的是 ( )。 ( A)预处理命令行必须位于源文件的开头 ( B)在源文件的一行上可以有多条预处理命令 ( C)宏名必须用大写字母表示 ( D)宏替换不占用程序的运
10、行时间 28 算法具有五个特性,以下选项中不属于算法特性的是 ( )。 ( A)有穷性 ( B)简洁性 ( C)可行性 ( D)确定性 29 以下叙述中错误的是 ( )。 ( A)对于 double类型数组,不可以直接用数组名对数组进行整体输入或输出 ( B)数组名代表的是数组所占存储区的首地址,其值不可改变 ( C)当程序执行过程中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界 ”的出错信息 ( D)可以通过赋初值的方式确定数组元素的个数 30 有以下程序: #include stdio.h #define N 20 fun(int a ,int n,int m) int i,
11、j; for(i=m;i :n;i-) ai+1 =ai; main( ) int i,aN. = 11,2.3,4,5,6,7,8,9,10; fun( a,2,9) for(i =0;i 5;i + ) printf(“% d“ ,ai );程序运行后的输出结果是 ( )。 ( A) 10234 ( B) 12344 ( C) 12334 ( D) 12234 31 有以下程 序 : #include stdio.h main( ) int a32=0 ,( *ptr)2,i,j; for(i=0;i 2;i+) ptr=a+i; scanf(“%d“,ptr); ptr+; for(i
12、=0;i 3;i + ) for(j =0;j 2;j + ) prinff( “%2d“ ,ai j ); prinff(“ n“ ); 若运行时输入: 1 2 3 回车 ,则输出结果是 ( )。 ( A)产生错误信息 ( B) 10 20 00 ( C) 12 30 00 ( D) 10 20 30 32 有以下程序 :#include stdio.h prt(int * m,int n) int i; for(i =0;i n;i + ) mi +;main( ) int a = 1,2,3,4,5 ,i; prt(a,5); for(i =0;i 5;i + ) printf( “%
13、d,“ ,ai );程 序运行后的输出结果是 ( )。 ( A) 1,2,3,4,5, ( B) 2,3,4,5,6, ( C) 3,4,5,6,7, ( D) 2,3,4,5,1 33 有以下程序 :#include stdio.h void f(int * x,int * y) int t; t= *x; *x= *y; *y=t;main ( ) int a8 = 1,2,3,4,5,6,7,8 ,i, * p, * q; p=a;q = while(p q) f(p,q) ;p + ;q -; for(i =0;i 8;i + ) printf(“ % d,“ ,ai); 程序运行后的
14、输出结果是 ( )。 ( A) 8,2,3,4.,5,6,7,1, ( B) 5,6,7,8,1,2,3,4, ( C) 1,2,3,4,5,6,7,8, ( D) 8,7,6,5,4,3,2,1, 34 有以下程序 :#include stdio.h #define P 3void F(int x) return(P* x* x); tmain( ) printf(“ % d n“ ,F(3 + 5) ); 程序运行后的输出结果是 ( )。 ( A) 192 ( B) 29 ( C) 25 ( D)编译出错 35 有以下程序 : #include stdio.h main( ) intc =
15、 35; printf( “% d n“ , e 程序运行后输出结果是 ( )。 ( A) 0 ( B) 70 ( C) 35 ( D) 1 36 有以下程序 : #include stdio.h main( ) int i=1,j =2,k =3; if(i + = 1 程序运行后的输出结果是 ( )。 ( A) 123 ( B) 234 ( C) 223 ( D) 233 37 以下与函数 fseek (fp, OL, SEEK_SET)有相同作用的是 ( )。 ( A) feof(fp) ( B) ftell(fp) ( C) fgetc(fp) ( D) rewind(fp) 38 若
16、整型变量 a,b,c,d 中的值依次为 :1,4,3,2 则条件表达式 a b? a:c d? c:d的值是( )。 ( A) 1 ( B) 2 ( C) 3 ( D) 4 39 有以下程序 : #include stdio.h main( ) int m,n,p; seanf( “m = % dn = % dp = % d“, 若想从键盘上输入数据,使变量 m中的值为 123,n中的值为 456, p中的值为 789,则下列选项中正确的输入是 ( )。 ( A) m = 123n =456p =789 ( B) m = 123 n =456 p =789 ( C) m= 123,n =456
17、,p =789 ( D) 123 456 789 40 数字字符 0的 ASCII值为 48,若有以下程序 : #include stdio.h main( ) char a=1,b =2; printf( “% c,“,b + + ); printf(“ % d n“ ,b - a); 程序运行后的输出结果是 ( )。 ( A) 3,2 ( B) 50,2 ( C) 2,2 ( D) 2,50 41 有以下程序 : #include stdio.h main( ) char s =“159“ , * p; p=s; printf( “% c“, * p + + ); printf(“%“,
18、* p+);程序运行后的输出结果是 ( )。 ( A) 15 ( B) 16 ( C) 12 ( D) 59 42 有以下函数 :fun(char * a,char *b) while(*a! =0)b+; return( *a-*b); 该函数的功能是 ( )。 ( A)将 b所指字符串连接到 a所指字符串中 ( B)计算 a和 b所指字符串的长度之差 ( C)将 b所指字符串连接到 a所指字符串后面 ( D)比较 a和 b所指字符串的大小 43 以下选项中可作为 C语言合法常量的是 ( )。 ( A) -80 ( B) -080 ( C) -8e1.0 ( D) -80.0e 44 有以下
19、程序: #include stdio.h point ( char * p) p + = 3; main( ) char b4 = a,b,c,d , *p=b; point(p); printf( “% c n“ , * p); ( A) a ( B) b ( C) c ( D) d 45 有以下程序 :#iaclude stdio.h main( ) intp8 :11,12,13,14,15,16,17,18,i=0,j:0; while(i+ 7) if(pi%2) j+ =pi; printf( “%d n“ ,j);程序运行后的输出结果是( )。 ( A) 42 ( B) 45 (
20、 C) 56 ( D) 60 46 有以下程序 :#include stdio.h main( ) int a=1,b; for(b =1;b =10;b+) if(a =8) break; if(a%2 = 1) a + =5;continue; a- =3; printf( “% d n“ ,b);程序运行后的输出结果 ( )。 ( A) 3 ( B) 4 ( C) 5 ( D) 6 47 以下对结构体类型变量 td的定义中,错误的是 ( )。 ( A) typcdef struct aa int n; float m; AA; AA td; ( B) struct aa int n; f
21、loat m; struct aa td; ( C) struct int n; float m; aa; struct aa td; ( D) struct int n; float m; td; 48 以下语句或语句组中能正确进行字符串赋值的是 ( )。 ( A) ehar以 *sp; * sp = “right!“; ( B) char s10 ;s = “right!“; ( C) char s 10; * s = “right !“; ( D) char * sp = “right !“; 49 以下能正确定义一维数组的选项是 ( )。 ( A) int a5 =0,1,2,3,4,
22、5; ( B) char a = 0,1,2,3,4,5; ( C) char a = A,B,C ; ( D) int a5 = “0123“; 50 有以下程序 :#include stdio.h int f1 (int x,int y) return x y? x :y; int f2 (im x,int y) return x y? y: x; main( ) int a=4,b=3,c=5,d=2,e,f,g; e=f2(f1(a,b),f1(c,d); f=f1(f2(a,b),f2(e,d); g=a+b+e+d-e-f; printf( “% d,% d,% d n“ ,e,f
23、,g);程序运行后的输出结果是 ( )。 ( A) 4,3,7 ( B) 3,4,7 ( C) 5,2,7 ( D) 2,5,7 51 顺序存储方法是把逻辑上相邻的结点存储在物理位置【 】的存储单元中。 52 面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个【 】。 53 一个项目具有一个项目主管,一个项目主管可管理多个项目,则实体 “项目主管 ”与实体 “项目 ”的联系属于【 】的联系。 54 与结构化需求分析方法相对应的是【 】方法。 55 软件维护活动包括以下几类 :改正性维护、适应性维护、【 】维护和预防性维护。 56 以下程序运行后的输出结果是【 】。 #includ
24、e stdio.h int a=5; fun (int b) static int a=10; a+ =b+; printf(“%d“,a); main() int c=20; fun(c); a+ =c+; printf(“%dn“,a); 57 以下程序运行后的输出结果是【 】。 #include stdio.h main() char m; m=B+32; printf(“%cn“,m); 58 以下程序运行后的输出结果是【 】。 #include stdio.h main() int a=1,b=3,c=5; if (c=a+b) printf(“yesn“); else printf
25、(“non“); 59 以下程序的功能是将字符串 s中的数字字符放入 d数组中,最后输出 d中的字符串。 例如,输入字符串: abc123edf456gh,执行程序后输出: 123456。请填空。 #include stdio.h #include ctype.h main() char s80,d80; int i,j; gets(s); for(i=j=0;si! =0;i+) if(【 】 ) dj=si; j+; dj=0; puts(d); 60 已有定义如下: struct node int data; struct node *next; *p; 以下语句调用 malloc函数,
26、使指针 p指向一个具有 struct node类型的动态存储空间。请填空。 p=(struct node *)malloc(【 】 ); 61 以下程序运行后,若输入: 3,abcde 回车,则输出结果 是【 】。 #include stdio.h #include string.h move(char *str,int n) char temp; int i; temp=strn-1; for(i=n-1;i 0;i-) stri=stri-1; str0=temp; main() char s50; int n,i,z; scanf(“%d,%s“, z=strlen(s); for(i=
27、1;i =n;i+) move(s,z); printf(“%sn“,s); 62 以下程序运行后的输出结果是【 】。 #include stdio.h msin() int i,n=0,0,0,0,0; for(i=1;i =4;i+) ni=ni-1*2+1; printf(“%d“,ni); 63 执行以下程序后,输出 “#”的个数是【 】。 #include stdio.h main() int i,j; for(i=1;i 5;i+) for(j=2;j =i;j+) putchar(#); 64 请在以下程序第一行的下划线处填写适当内容,使程序能正常运行。 #include std
28、io.h 【 】 (double,double); main() double x,y; scanf(“%If%If“, printf(“%Ifn“,max(x,y); double max(double a,double b) return(a b ? a:b); 65 以下程序运行后的输出结果是【 】。 #include stdio.h main() int p=30; printf(“%dn“,(p/3 0 ? p/10:p%3); 66 以下程序运行后的输出结果是【 】。 #include stdio.h main() int i,m=0,n=0,k=0; for(i=9;i =11;
29、i+) switch(i/10) case 0: m+;n+;break; case 10: n+;break; default: k+;n+; printf(“%d%d%dn“,m,n,k); 67 以下程序运行后的输出结果是【 】。 (注:如果结果中含有回车,可加一空格写在一行,例如: 1 1 1 1 1 1 1 1 1 可以写成: 1 1 1 1 1 1 1 1 1。 #include stdio.h mala() int i,j,a3=1,2,3,4,5,6,7,8,9; for(i=0;i 3;i+) for(j=i+1;j 3;j+) aji=0; for(i=0;i 3;i+)
30、for(j=0;j 3;j+) printf(“%d“,aij); printf(“n“); 68 以下程序运行后的输出结果是【 】。 #include stdio.h fun(int x) if(x/2 0) fun(x/2); printf(“%d“,x); main() fun(6); 69 以下程序的功能是调用函数 fun计算: m=1-2+3-4+9 -10,并输出结果。请填空。 #include stdio.h int fun ( int n) int m=0,f=1,i; for(i=1;i =n;i+) m+=i*f; f=【 】 ; return m; main() prin
31、tf(“m=%dn“, 【 】 ); 国家二级( C语言)笔试模拟试卷 13答案与解析 1 【正确答案】 A 【试题解析】 耦合度是模块间互相连接的紧密程度的度量;内聚度是一个模块内部各个元素间彼此结合的紧密程度的度量。 2 【正确答案】 D 【试题解析】 由于一个顾客可以购买多种商品,同一种商品可以有多个顾客购买,所以商品和顾客之间是多对多的联系。 3 【正确答案】 C 【试题解析】 数据库系统由如下几部分组成:数据库、数据库管理系统、数据库管理员、系统平台 (硬件平台和软件平台 )。 4 【正确答案】 B 【试题解析】 栈只允许在表的一端进行插入或删除操作 ,是一种 “后进先出 ”线性表;
32、而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种 “先进先出 ”线性表。 5 【正确答案】 A 【试题解析】 根据数据结构中各数据元素之间前后关系的复杂程度,一般将数据结构分为线性结构与非线性结构。如果一个非空的数据结构满足:有且只有一个根结点,且每个结点最多有一个前件,也最多有一个后件,则称该数据结构为线性结构,又称线性表。线性表、栈与队列、线性链表都是线性结构,而二叉树是非线性结构。 6 【正确答案】 A 【试题解析】 ER图中用矩形表示实体 集,用椭圆表示属性,用菱形表示联系。 7 【正确答案】 C 【试题解析】 满二叉树是指除最后一层外,每层上的所有结点都有两个子结点;
33、即在满二叉树中,每一层上的结点数都达到最大值,则在满二叉树的第 k层上有2k-1个结点,月深度为 m的满二叉树有 2m-1个结点。深度为 7的满二叉树,其叶子结点数为 27-1=26=64。 8 【正确答案】 D 【试题解析】 后序遍历时,首先遍历左子树;然后遍历右子树,最后访问根结点;并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。 9 【正确答案】 D 【试题解析】 结构化程序设计的方法是自顶向下、逐步求精和模块化。自顶向下是指在程序设计时先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,而应先从最上层总目标开始设计,逐步使问题
34、具体化。逐步求精是指对复杂问题应设计一些子目标作为过渡,逐步细化。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,每个小目标称为一个模块。可复用是面向对象程序设计的一个优点。 10 【正确答案】 D 【试题解析】 程序调试的任务是诊断和改 正程序中的错误,调试主要在开发阶段;而软件测试贯穿整个软件生命期,目的是尽可能多地发现软件中的错误,为了达到更好的测试效果,应该由独立的第三方来构造测试;软件的运行和维护是指将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。 11 【正确答案】 D 【试题解析】 本题涉及 C语言基本的 3个
35、知识点: C语言是以函数为基本单位的,每一个函数完成相对独立的功能,一个程序可以包括多个函数,但有且仅有一个主函数; 主函数 main()的圆括号内是填写参数的,可以没有 参数,但括号不可以省略; 程序的注释部分应该在 “/*/” 之间,它允许出现在程序的任何位置。 12 【正确答案】 D 【试题解析】 sizeof(float)是 C语言内部规定的用于计算单精度型变量 (float)在计算机的内存中所占用的字节数量的函数,返回一个整数值。 13 【正确答案】 A 【试题解析】 C语言规定,标识符是由字母、数字或下面线组成,并且它的第一个字符必须是字母或者下画线。另外 C语言规定了 些专用的标
36、识符,它们有着固定的含义,不能更改。 int就是表达变量类型的标 识符,它不能再用做变量名和函数名。 do是 C语言的一个关键字,也不能再用做变量名和函数名。 14 【正确答案】 B 【试题解析】 选项 A),在赋值表达式中,赋值号的左边只能是变量或者是代表某个存储单元的表达式,不能是任意表达式。在判断选项 B)时首先应该建立这样的概念,整型变量中只能存放整型数,实型变量中能存放实型数,也能存放整型数。选项 C),执行表达式 a=b后,将把变量 b存储单元中的值赋给变量 a,从而覆盖 a中原有的值,但 b中原有的值并不改变。选项 D),在 C程序中,求余运算符 “%”两边的类型均为整型数 据。
37、 15 【正确答案】 D 【试题解析】 本题考查逻辑运算符的使用。当 “”,其返回值等 8。所以变量 sum的值等于 8。 20 【正确答案】 C 【试题解析】 本题考查 if else语句。第一个 if语句,先判断条件,发现 a b成立,执行下列的复合语句 ,得 c=a*b=20, b、 a的值不变。 21 【正确答案】 D 【试题解析】 程序通过 for(i=0; i 9; i+) pi=i语句对二维数组 a的元素依次赋值,使 a00=0, a01=1, a02=2, a10=3, a11=4, a12=5,a20 =6, a21=7, a22=8,程序运行的结果为 345。 22 【正确
38、答案】 D 【试题解析】 本题定义了结构体类型的指针变量 p, q, r,并各自有两个成员变量 data和 next, data用于存放数据, next用于存放下一个结点的地址,所以,要想将 q所指结点从链表中删除,同时保持链表的连续,必须使 P结点的 next指向r,选项 D)不对。 23 【正确答案】 C 【试题解析】 C语言中以, 0作为字符串的结束符,且 strlen函数计算的是, 0,字符前的所有字符的个数,故本题中 strlen(a)应为 2。数组定义以后系统就为其分配相应大小的内存空间,而不论其中有没有内容。 sizeof运算符是计算变量或数组所分配到的内存空间的大小,所以本题的
39、 sizeof(a)为 7。 24 【正确答案】 C 【试题解析】 数组长度是指数组占内存空间的大小,即字节数,它与 sfflen函数所求的长度不同。对于 char a=“xyz“,系统自动为其增加一个串结束符, 0,所以 a数组的长度为 4;对于 b=x, y, z,系统不会为其增加串结束符0,因此数组长度为 3,故 a数组长度大于 b数组长度。 25 【正确答案】 B 【试题解析】 在 main函数中,两次调用 WriteStr函数,即两次执行fp=fopen(fn, “w“);语句,以 “写入 ”方 式打开 fn所指向的同一文件,当第二次打开文件时,文件指针指向文件头,写入的数据将覆盖文
40、件中原有的数据。fputs(str, fp)函数的功能是将字符指针 *str的值输出到 fp所指向的文件中,故本题中 t1.dat的内容为 end。 26 【正确答案】 C 【试题解析】 “有零个或多个输入 ”, “有一个或多个输出 ”是算法的两个特性。 27 【正确答案】 D 【试题解析】 预处理命令行通常位于源文件的开头,但不一定必须位于开头,也可以写在函数与函数之间;由于预处理命令的末尾不加分号,所以,不能在一行上写多条预处理命令,否则,系统处理时就会把它当作一条命令;为了与变量名区别,宏名一般习惯用大写字母表示,但也可以用小写字母。 28 【正确答案】 B 【试题解析】 有穷性、确定性
41、、有零个或多个输入、有一个或多个输出、可行性是算法的五大特性。选项 B)错误。 29 【正确答案】 C 【试题解析】 在 c语言中,如果出现下标越界的情况,系统不管在编译还是执行时都不会给出 “下标越界 ”的错误提示。 30 【正确答案】 C 【试题解析】 本题函数 fun的作用是将指定的数组元素 (下标从 n m)向后移一位。调用函数 fun(a, 2, 9)将 a2到 a9的各元素依次向后移一位,最后 a数组中各元素的值分别为 1, 2, 3, 3, 4, 5, 6, 7, 8, 9, 10,程序输出数组的前 5个元素: 12334。 31 【正确答案】 B 【试题解析】 程序中 a3)2
42、=0将数组元素全部初始化为 0,指针变量 ptr指向包含 2个元素的一维数组。在第一个 for语句的循环体中 ptr=a+i;语句用于将指针变量 ptr指向第 i行的数组元素,通过两次循环,分别给二维数组 a的第。行的第 1个元素和第 1行的第 1个元素赋了值 1和 2,即 a00=1, a10=2。 32 【正确答案】 B 【试题解析】 prt(a, 5);用数组名 a作函数实参,不是把 a数组的值传递给形参m,而是将数组 a的首地址传递给指针变量 m,使指针变量 m指向数组 a的首地址,这样他们就占用同一段内存单元。当改变了指针变量所指向的存储单元中的内容,也就改变了数组 a中的元素。函数
43、 pit的作用是将指针变量 m所指向的存储单元中的各元素值加 1,也就是数组 a中各元素的值加 l,所以输出结果为: 2,3, 4, 5, 6, 33 【正确答案】 D 【试题解 析】 程序中函数 f的作用是交换指针变量 x和 y所指向的存储单元的值。在 main函数中,通过 P=a; q=&a7;指针变量 p指向数组的第一个元素,指针变量 q指向数组的最后一个元素。通过调用函数 f(p, q)进行前后对称位置上的数组元素的交换。当 while循环 4次 (即 p =q)后, a数组中各元素的值分别为8, 7, 6, 5, 4, 3, 2, 1,所以程序输出的结果为: 8, 7, 6, 5,
44、4, 3, 2, 1, 34 【正确答案】 D 【试题解析】 return语句用于从被调函数带回一个函数值。 void关键字表示 “无类型 ”, 即不需要从被调函数中带回函数值,所以不需要 return语句,故编译时出错。 35 【正确答案】 C 【试题解析】 按位与运算符 “&”的运算规则是:如果两个相应的二进制位都为1,则该位的结果为 1,否则为 0。因为本题中相与的两个数相同,即对应位的二进制数相等,所以结果为其值本身。 36 【正确答案】 D 【试题解析】 判断 i+=1&(+j=3|k+=3)时,先执行 i+=1,由于 i+是先运算,后自加,这时 i的值为 1,所以表达式 i+=1的
45、值为真,其值为 i;然后执行 +j=3,由于 +j是先自加,后运算,这时 j的值为 3,所以表达式 +j=3的值为真,不再计算右边表达式 k+=3,括号中表达式的值为 1, “&”运算后整个表达式的值也为 1,输出 i, j, k时,由于 k没有进行过运算,所以输出结果为2, 3, 3。 37 【正确答案】 D 【试题解析】 feof函数的功能是判断文件指针是否已指到了文件末尾,是则返回非零值,否则返回零; ftell函数的功能是得到流式文件中文件指针的当前位置,用相对于文件开头的位移量来表示; fgetc函数的功能是从指定文件读人一个字符; rewind函数的功能是使文件指针重新返回文件的开
46、头。 fseek函数用于改变文件的位置指针,调用形式为: fseek(文件类型指针,位移量,起始点 ), “起始点 ”取值 0(SEEK_SET)、 1(SEEK_CUR)、 2(SEEK_END)分别表示文件开始、文件当前位置、文件末尾。 “位移量 ”是以 “起始点 ”为基点,向前移动的字节数。函数fseek(fp, OL, SEEK_SET)的作用是将位置指针移到文件头,所以选项 D)正确。 38 【正确答案】 A 【试题解析】 本题先计算 a b的值,由 a=1, b=4得 a b的值 为真,所以整个表达式 a b? a:c d?c:d的值取 a的值 1。 39 【正确答案】 A 【试题解析】 程序中的输入函数 scanf(“m=%dn=%dP=%d“, &m, &n, &p);要求在输入数据时,要输入 “m=“、 “n=“、 “p=“字符中,且中间不能含有空格,所以选项 A)正确。 40 【正确答案】 C 【试题解析】 变量 a, b定义为字符型,执行 printf(“%c,“b+);时,首先输出字符变量 b的值 2和逗号,然后 b的值加 1, b的值变