1、国家二级( C语言)笔试模拟试卷 59及答案与解析 1 下列数据结构中,按先进后出原则组织数据的是 ( A)线性链表 ( B)栈 ( C)循环链表 ( D)顺序表 2 具有 3个结点的二叉树有 ( A) 2种形态 ( B) 4种形态 ( C) 7种形态 ( D) 5种形态 3 设有下列二叉树:对此二叉树前序遍历的结果为 ( A) ZBTYCPXA ( B) ATBZXCYP ( C) ZBTACYXP ( D) ATBZXCPY 4 结构化程序设计主要强调的是 ( A)程序的规模 ( B)程序的效率 ( C)程序设 计语言的先进性 ( D)程序易读性 5 程序的 3种基本控制结构是 ( A)过
2、程、子过程和分程序 ( B)顺序、选择和重复 ( C)递归、堆栈和队列 ( D)调用、返回和转移 6 下列叙述中,不属于测试的特征的是 ( A)测试的挑剔性 ( B)完全测试的不可能性 ( C)测试的可靠性 ( D)测试的经济性 7 需求分析中开发人员要从用户那里了解 ( A)软件做什么 ( B)用户使用界面 ( C)输入的信息 ( D)软件的规模 8 下列关系模型中,能使经运算后得到的新关系中属性个数多于原来关系中 属性个数的是 ( A)选择 ( B)连接 ( C)投影 ( D)并 9 下列叙述中,正确的是 ( A)用 E-R图能够表示实体集间一对一的联系、一对多的联系和多对多的联系 ( B
3、)用 E-R图只能表示实体集之间一对一的联系 ( C)用 E-R图只能表示实体集之间一对多的联系 ( D)用 E-R图表示的概念数据模型只能转换为关系数据模型 10 “年龄在 18-25之间 ”这种约束是属于数据库当中的 ( A)原子性措施 ( B)一致性措施 ( C)完整性措施 ( D)安全性措施 11 请读程序: #include stdio.h main() int a;float b,c; scanf(“%2d%3t%4f“, printf(“na=%d,b=%f,c=%fn“,a,b,c); 若运行时从键盘上输入 (图片 ),则上面程序的输出结果是 _。 ( A) a=98,b=76
4、5,c=4321 ( B) a=10,b=432,c=8765 ( C) a=98,b=765.000000,c=4321.000000 ( D) a=98,b=765.0,c=4321.0 12 一个良好的算法由下面的基本结构组成,但不包括 _。 ( A)顺序结构 ( B)选择结构 ( C)循环结构 ( D)跳转结构 13 请选出以下程序的输出结果 _。 #include stdio.h sub(x,y,z) int x,y,*z; *z=y-x; main() int a,b,c; sub(10,5,sub(7,a,sub(a,b, printf(“%d,%d,%dn“,a,b,c); (
5、 A) 5,2,3 ( B) -5,-12,-7 ( C) -5,-12,-17 ( D) 5,-2,-7 14 下面程序在屏幕上的输出是 _。 main() printf(“abbbc“); ( A) abbbc ( B) ac ( C) abc ( D) abc 15 若 x是整型变量, pb是基类型为整型的指针变量,则正确的赋值表达式是_。 ( A) pb=的输出为 _。 ( A) 10 ( B) 11 ( C) 12 ( D)语法错误 17 若要用下面的程序片段使指针变量 p指向一个存储整型变量的动态存储单元 int *p p=_malloc(sizeof(int); 则应填入 _。
6、( A) int ( B) int* ( C) (*int) ( D) (int*) 18 下面程序输出的结果是 _。 main() int i=5,j=9,x; x=(i=j?i:(j=7); printf(“n%d,%d“,i,j); ( A) 5,7 ( B) 5,5 ( C)语法错误 ( D) 7,5 19 若执行下面程序时从键盘上输入 5, main() int x; scanf(“%d“, if(x+ 5)printf(“%dn“,x); else printf(“%dn“,x-); 则输出是 _。 ( A) 7 ( B) 6 ( C) 5 ( D) 4 20 若有以下定义和语句:
7、 int a=1,2,3,4,5,6,7,8,9,10, *p=a; 则值为 3的表达式是 _。 ( A) p+=2,*(p+) ( B) P+=2,*+p ( C) P+=3,*p+ ( D) P+=2,+*p 21 以下程序的输出结果是 #include stdio.h main() int a=15/b=21, m=0; switch(a%3) case0: m+; break; case 1: m +; switch(b%2) default: m+; case 0: m +; break; printf(“%dn“, m); ( A) 1 ( B) 2 ( C) 3 ( D) 4 2
8、2 设有以下程序段 int x=0, s=0; while(!x!=0)s+=+x; printf(“%d“, s); ( A)运行程序 段后输出 0 ( B)运行程序段后输出 1 ( C)程序段中的控制表达式是非法的 ( D)程序段执行无限次 23 在 C语言中,退格符是 ( A) n ( B) t ( C) f ( D) b 24 以下叙述正确的是 ( A)函数可以嵌套定义但不能嵌套调用 ( B)函数既可以嵌套调用也可以嵌套定义 ( C)函数既不可以嵌套定义也不可以嵌套调用 ( D)函数可以嵌套调用但不可以嵌套定义 25 C语言规定,函数返回值的类型是由 ( A) return语句中的表达
9、式类型所决定 ( B)调用该函数时的主调函数类 型所决定 ( C)调用该函数时系统临时决定 ( D)在定义该函数时所指定的函数类型所决定 26 下列程序执行后的输出结果是 void func1(int i); void func2(int i); char st=“hello, friend!”; void func1(int i) printf(“%c“, sti); if(i 3)i+=2;func2(i); void func2(int i) printf(“%c“, sti); if(i 3)i+=2; func1(i); int i=0; func1(i); printf(“n“);
10、 ( A) hello ( B) hel ( C) hlo ( D) hlm 27 以下程序的输出结果是 #include stdio.h void prt(int *x, int*y, int*z) printf(“%d, %d, %dn“, +*x, +*y, *(z+); main() int a=10, b=40,c=20; prt( for(i=0; i 3;i) pi=i 4;i+) sub(a, x); printf(“%d“, x); printf(“n“); sub(s, y) int*s, y; static int t=3; y=st; t-; ( A) 1 2 3 4
11、( B) 4 3 2 1 ( C) 0 ( D) 4444 33 若有以下的说明语句,则与它等价的说明是 char s35=“aaaa“, “bbbb“,“cccc“; ( A) char*s1=“aaaa“, “bbbb“, “cccc“; ( B) char*s23=“aaaa“, “bbbb“, “cccc“; ( C) char s35=“aaaa“, “bbbb“, “cccc“; ( D) char s44=“aaaa“, “bbbb“, “cccc“; 34 若在以下定义和赋值语句,则才 s数组的第 i行第 j列 (假设 i, j已正确说明并赋值 )元素地址的合法引用为 int
12、s23=0, ( *p)3; p=s; ( A) *(*(p+i)+j) ( B) *(pi+j) ( C) (p+i)+j ( D) (*(p+i)j 35 下面能正确进行字符串赋值操作的是 ( A) char s5=“ABCDE“; ( B) char s5=A, B, C, D, E; ( C) char*s; s=“ABCDE“; ( D) char*s; scanf(“%s“, s); 36 若已包括头文件 stdio.h且已有定义 static char str9;,现要使 str从键盘获取字符串 “The lady“,应使用 ( A) scanf(“%s“, str) ( B)
13、for(i=0;i 9;i+)gethchar(stri); ( C) gets(str); ( D) for(i=0;i 9;i+)scanf(“%s“, t=MAX(a+b, c+d); PRINT(t); ( A) Y=3 ( B)存在语法错误 ( C) Y=7 ( D) Y=0 45 以下程序的输 出结果是 #include stdio.h struct st int x; int *y; *p; int dt4=10, 20, 30, 40; struct st aa4=50, &dt0, 60, &dt0, 60,&dt0, 60, &dt0, ; main() p=aa; pri
14、ntf(“%dn“, +(p- x); ( A) 10 ( B) 11 ( C) 51 ( D) 60 46 以下程序的功能是进行位运算 main() unsigned char a, b; a=73; b= 4&3; printf(“%d%dn“, a, b); 程序运行后的输出结果是 ( A) 4 3 ( B) 7 3 ( C) 7 0 ( D) 4 0 47 以下 scanf函数调用语句中对结构体变量成员的不正确引用是 struct pupil char name20; int age int sex; pup5, *p; p=pup; ( A) scanf(“%s“, pup0.nam
15、e); ( B) scanf(“%d“, &pup0.age); ( C) scanf(“%dT“, &(p- sex); ( D) scanf(“%d“, p- age); 48 若有下面的说明语句,已知 A的 +进制数为 65,则以下的输出结果为 union un int a; char c2; w; w.c0=A; w.c1=a; printf(“%on“,w.a); ( A) 60501 ( B) 30240 ( C) 9765 ( D)以上答案均 错 49 fwrite函数的一般调用形式是 ( A) fwrite(buffer, count, size, fp); ( B) fwri
16、te(fP, size, count, buffer); ( C) fwrite(fp, count, size, buffer); ( D) fwrite(buffer, size, count, fp); 50 函数 rewind的作用是 ( A)使文件位置指针重新返回文件的开始位置 ( B)将文件位置指针指向文件中所要求的特定位置 ( C)使文件位置指针指向文件的末尾 ( D)使文件位置指针 自动移至下一个字符位置 51 长度为 n的顺序存储线性表中,当在任何位置上插入一个元素概率都相等时,插入一个元素所需移动元素的平均个数为【 】。 52 用树型结构表示实体类型及实体间联系的数据模型称
17、为【 】。 53 类是一个支持集成的抽象数据类型,而对象是类的【 】。 54 数据流图的类型有【 】和事务型。 55 当数据的物理结构 (存储结构 )改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【 】。 56 如下程序片段: in a, b, c; printf(“input a, b, c: “); scanf(“a=%d, b=%d, c=%d“, &a, &b, &c); 欲使输出结果为 1、 2、 3(分别对应于 a、 b、 c),输入数据的正确形式为【 】。 57 以下程序的运行结果是【 】。 #define MAX(a, b)(a b?a: b)+1 m
18、ain() int i=6, j=8, k; printf(“%dn“, MAX(i, j); 58 以下程序输出的结果是【 】。 main() int a=5, b=4, c=3, d; d=(a b c); printf(“%dn“, d); 59 以下程序段的输出结果是【 】。 main() int a=2, b=3, c=4; a*=16+(b+)-(+c); printf(“%d“, a); 60 阅读下面语句,则执行后的输出结果为【 】。 #include“stdio.h“ main() char a, b; for(a=0, b=9; a b; a+, b-) printf(“%
19、c%c“, a, b); printf(“n“); 61 如下语句 printf(“%cn“, B+40);在执行后的输出结果是【 】。 62 以下程序的输出结果是【 】。 fun(int x, int y, int z) z =x*x+y*y; main() int a=31; fun(6, 3, a) printf(“%d, a) 63 strcat函数的作用是【 】。 64 以下程序的输出结果是【 】。 void fun() static int a=0; a+=2; printf(“%d“, a); main() int cc; for(cc=1; cc 4; cc+)fun(); p
20、rintf(“n“); 65 以下程序的功能是:处理由学号和成绩组成的学生记录, N名学生的数据已在主函数中放入结构体数组 s中,它的 功能是:把分数最高的学生数据放在 h所指的数组中,注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。请填空。 #include stdio.h #define N 16 typedef struct char num10; int s; STREC; int fun(STREC *a, STREC *b) int i, j=0, max=a0 s; for(i=0; i N; i+) if(max ai s)max=ai s; for(i=0; i
21、N; i+) if(【 】 )bj+=ai; return j; main() STREC sN= “GA005“, 85, “GA003“, 76, “GA002“, 69,“GA004“, 85, “GA001“, 91, “GA007“, 72, “GA008“, 64, “GA006“, 87, “GA015“, 85, “GA013“, 91, “GA012“, 64, “GA014“, 91, “GA011“, 66, “GA017“, 64, “GA018“, 64, “GA016“, 72 ; STREC hN; int i, n; FILE*out; n=fun(s, h);
22、 printf(“The%d highest score; n“, n); for(i=0; i n; i+) printf(“%s%4dn“, hi num, hi s); printf(“n“); out=fopen(“out15.dat“, “w“); fprintf(out, “%dn“, n); for(i=0; i n; i+); fprintf(out, “%4dn“, hi s); fclose(out); 66 函数 my_cmp()的功能是比较字符串 s和 t的大小,当 s等于 t时返回 0,否则返回 s和 t的第一个不同字符的 ASCII码差值,即 s t时返回正值,当
23、s t时返回负值。请填空。 my_cmp(char*s, char*t) while(*s=*t) if(*s=0)return0; +s; +t; return【 】; 67 以下程序的功能是:删去一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回删除后数组中数据的个数。 例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10 删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。 请填空。 #include stdio.h #define N 80 in fun(int a, int n)
24、int i, j=1; for(i=1; i n; i+) if(aj-1【 】 ai) aj+=ai; 【 】; main() int aN=2, 2, 2, 3, 4, 4, 5, 6, 6, 6, 6, 7, 7, 8, 9, 9, 10, 10,10, i, n=19; printf(“The original data: n“); for(i=0; i n; i+)printf(“%3d“, ai); n=fun(a, n); printf(“nThe data after deleted : n“); for(i=0; i n; i+)printf(“%3d“, ai); prin
25、tf(“nn“); 68 有下列程序,功能是把输入的 +进制长整型数以 +六进制的形式输出,完成程序 #include“stdio.h“ main() char b17=“0123456789ABCDEF“; int c50, d, i=0, base=16; long n; scanf(“%1d“, &n); doci=n%base; i+; n=【 】; while(n!=0); for(-i; i =0; -i) d=【 】; printf(“%c“, bd); printf(“Hn“); 国家二级( C语言)笔试模拟试卷 59答案与解析 1 【正确答案】 B 【试题解析】 栈是限定在一
26、端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈 是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的。注意:队列组织数据的原则是 “先进先出 ”或 “后进后出 ”。注意:数据结构中,栈和队列组织数据的原则。 2 【正确答案】 D 【试题解析】 具有 3个结点的二叉树具有以下的几种形态:注意:二叉树的结构及画法。 3 【正确答案】 B 【试题解析】 所谓二叉树的前序遍历 (DLR)是指在访问根结点、遍历左子树与遍历右子
27、树这 3者中,首先访问根结点,然后遍历左子树,最后遍历右子树,并且,在遍历左右子树时,上述规则同样适用,即 “根 -左 -右 ”。故该二叉树的前序遍历结果为 “ATBZXCYP”。注意:对于本题,若使用后序遍历和中序遍历的结果分别为 “ZBTYCPXA“和 “TZBACYXP“。 4 【正确答案】 D 【试题解析】 注意:结构化的程序设计的目的。 5 【正确答案】 B 【试题解析】 采用结构化程序设计方法编写程序,可使程序结构良好、易读、易理解、易维护,它包括 3种基本控制结构,分别是顺序结构、选择结构和重复结构 (又称循环结构 )。注意:控制程序结构的方法和作用。 6 【正确答案】 C 【试
28、题解析】 软件测试的目标是在精心控制的环 境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。它有 3个方面的重要特征,即测试的挑剔性、完全测试的不可能性及测试的经济性。其中没有测试的可靠性这一说法。注意:软件测试与软件调试的概念,以及相应的方法。 7 【正确答案】 A 【试题解析】 需求分析是软件定义时期的最后一个阶段,它的基本任务就是准确回答 “系统必须做什么 ”这个问题即软件系统功能,需求分析的任务还不是确定系统怎样完成它的工作,而仅仅是确定系统必须完成哪些工作,也就是对目标系统提出完整、准确、清晰、具体的要求。 8 【正确答案】 B 【试题解析】 关系代数中包括传统的集合运算和专门
29、的关系运算。经过选择或投影运算得到的新关系的属性个数最多不会超过原关系中的属性个数。经过连接运算得到的新关系最多不少于原关系中属性的个数。 9 【正确答案】 A 【试题解析】 两个实体之间的联系实际上是实体集间的函数关系,这种函数关系可以有下面几种,即一对一的联系、一对多 (或多对一 )的联系和多对多的联系;概念模型便于向各种模型转换。由于概念模型不依赖于具体的数据库管理系统,因此,容易向关系模型、网状模型和层次模型等各种模型转换。 10 【正确答案】 C 【试题解析】 数据库的完整性是指数据的正确性和相容性 (如学生的学号必须惟一,性别只能是女或男等 ),数据库是否具备完整性关系到数据库系统
30、能否真实反映现实世界,因此维护数据库的完整性是非常重要的。注意:数据库的各种特性及表达形式。 11 【正确答案】 C 【试题解析】 scanf()把用户从键盘录入的数字的第 1、 2位存入整型变量 a;把第3、 4、 5位存入单精度实型变量 b,把第 6、 7、 8、 9位存入单精度实型变量 c,用户录入的第 10位被 scanf()遗弃。这时变量 a、 b、 c的值分别 为: 98、765.000000、 4321.000000。 12 【正确答案】 D 【试题解析】 1966年, Bohra和 Jacopini提出了以下三种基本结构,用这三种基本结构作为表示 个良好算法的基本单元: 1、顺
31、序结构; 2、选择结构; 3、循环结构。 13 【正确答案】 B 【试题解析】 sub()函数的作用是将形参 y和 x的差赋给了 z指向的那个内存地址,所以在 sub(10,5,&a), 10和 5属于值传递, a是属于地址传递,也就是 a与 z指向了同 个存储单元,在执行函数后, a的值随 *z变化, 所以此次函数被调用后, a的值为 y-x=-5,同理可知,在 sub(7,a,&b)后, b的值发生变化,其值为 -5-7=-12,在 sub(a,b,&c)后, c的值发生变化,其值为 -12-(-5)=-7。 14 【正确答案】 B 【试题解析】 C语言中允许使用 种特殊形式的字符常量,就
32、是以 个 “”开头的字符序列,这样的字符称为 “转文字符 ”。常用的转文字符有: n,换行; t,水平制表; b,退格: r,回车。 15 【正确答案】 A 【试题解析】 选项 A将变量 x的地址赋给指针变量 pb,使 pb指 向 x选项 B是将 x的值当作地址赋绐指针 pb, pb指向 个地址等于 x值的内存单元:选项 C将x的地址赋给指针 pb指向的地址等于 x的内存单元。 16 【正确答案】 D 【试题解析】 C语言中有基本的算术运算符 (+、 -、 *、 /)还包括自增自减运算符(+、 -),在 C语言解析表达式时,它总是进行贪婪咀嚼,这样,该表达式就被解析为 i+i,显然该表达式不合
33、 C语言语法。 17 【正确答案】 D 【试题解析】 不论 p是指向什么类型的指针变量,都可以通过强制类型转换的方法使之类型一致,强制类型转换的 格式为 (数据类型 *)。 18 【正确答案】 A 【试题解析】 条件表达式的一般形式为:表达式 1?表达式 2:表达式 3;先求解表达式 1,若为真则求解表达式 2;若表达式 1的值为假,则求解表达式 3。本题中先判断 i=j,不等,执行 j=7;然后执行 x=7。故本题为 A。 19 【正确答案】 B 【试题解析】 根据 C语言的语法, X+是在使用 x之后,再将 x的值加 1,在 if语句中, x的值为 5,条件不成立,执行 else后面的语句
34、,因为 x的值已经加 1,为 6,所以打印结果为 6。 20 【正确答案】 A 【试题解析】 引用 个数组元素,可以用: (1)下标法,如 ai形式: (2)指针法,如 *(a+i)或 *(p+i)。数组的下标从 0开始,值为 3的数组元素是 a2。 B、 C的内容为 a3, D将 a2前自加,结果为 4。 21 【正确答案】 A 【试题解析】 switch语句的条件是 “a%3=15%3= 0”,所以执行 case 0后面的语句, m+; m=1,然后就执行 break,跳出 switch语句,所以最后输出的 m的值为 1。注意: switch嵌套语句的使用。 22 【正确答案】 B 【试题
35、解析】 本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符 “!”的优先级大于不等于运算符 “!=”的优先级。注意: for语句和 dowhile 语句的使用。 23 【正确答案】 D 【试题解析】 C语言的转义字符见下表所示。注意:选项 A)表示换行;选项 B)表示横向跳若干格 (代表 “Tab“键 );选项 C)表示换页。 24 【正确答案】 D 【试题解析】 在 C语言中,所有的函数都是平行的,即在定义函数时是互相独立的,一个函数并不从属于另一个函数,即函数不能嵌套定义,但可以互相调用,但不能调 用 main函数。注意:函数不能嵌套定义,但可以嵌套调用,故选项A)、 B)和 C)中的
36、描述都错误。 25 【正确答案】 D 【试题解析】 C语言容许函数返回一个值,通过 re- turn语句实现,其格式是: return(表达式 );或 return表达式; 功能是把表达式的值带回主调函数的调用处,作为函数的返回值。函数返回值的类型以函数类型为准,为了明确表示 “不带回值 ”,可用 “void”类型说明符定义 “空类型 ”。在以下几种情况下,可不在调用函数中对被调用函数类型声明: 如果函数值是整型或字符型 ,可不进行声明,系统自动默认函数值是整型。 如果被调用函数的定义出现在调用函数之前,可不进行声明。注意:函数的定义。 26 【正确答案】 C 【试题解析】 函数调用的一般形式
37、为: 函数名 (实参列表 ) 首先调用函数 funcl(0),输出 st0=h。 i值变为 2,并调用函数 func2(2),输出st2=l。 i值此时变为 4,又调用函数 funcl(4),输出 st4=0。此时 i值大于等于3,执行完毕。因此,输出结果为 hlo。注意:函数调用的一般格式以及函数的返回值。 27 【正 确答案】 B 【试题解析】 尽管 C语言以传值方式进行函数调用,但也可以通过传递指针的值 (变量的地址 )来达到修改实参变量值的目的,这是此题主要说明的问题。其次,应注意表达式。 (z+)的值是 *z,其后的 z+在程序中无实际作用。函数调用时,由于 x, y和 z分指向 a
38、, b和 c,因此, *x, *y和 *z就是 a, b和 c。第一次调用函数时, *x=a=10, *y=b=40, *z=c=20输出结果为 11, 41, 20,至此,已经可以肯定选项 B)是正确的。在第一次输出后, a=11, b=41, c=20,第二次输出为:12, 42, 20。注意:指针作为参数的函数调用的执行过程。 28 【正确答案】 C 【试题解析】 本题综合考查一维数组和多维数组指针变量的表示方法。在 C语言中,引用数组元素的方法有两种,即:下标法和指针法。下标法如 ai形式;指针法如 *(a+i)或 *(p+1)。其中 a是数组名, p是指向数组的指针变量,其初值p=a
39、。再如 *(*(p+2) +2)是 a22的值,注意语句中指针型数组的书写格式,不能写成 “(*数组名 )长度 ”,因为这是定义指向含有 “长度 ”个元素的一维数组的指针变量。例如有定义语句 “int a, b, c, c, *P3=&a, &b, &c; ”,它定义了一个名为 p的指针型数组,其 3个元素 p0, p 1, p2分别指向 B个整型变量 a,b, c。注意:数组元素的引用方法。 29 【正确答案】 B 【试题解析】 选项 B定义的数组长度为 5,而初始化时却赋予了 6个变量值,越界了,所以错误。注意:数组中元素的引用。 30 【正确答案】 B 【试题解析】 在选项 B)中,因为
40、数组的第一维的数目不明确,所以理解会有歧义,可以理解为 1行 3列,或者 2行 3列等。所以选项 B)错误。注意:数组中 元素的引用。 31 【正确答案】 D 【试题解析】 当 k=1时,引用的是二维数组元素 w 11,值为字符串 “FGH”;当 k=2时,引用的是数组元素 w22,即字符串 “KL”;当 k=3时,结束程序的执行。注意:字符串数组的定义。 32 【正确答案】 C 【试题解析】 若指针 s指向数组 a,则 st可以引用数组 a中下标为 t的元素。注意:通过数组的首地址引用数组元素。 33 【正确答案】 C 【试题解析】 本题中的 s数组是一个二维字符数组,选项 A)是一个双重指
41、针,但字符串 的长度没有限制;选项 B)是一个元素为字符指针的数组,同样的也是字符串的长度没有限制;选项 D)中,每个字符串的长度限制为 4,不正确。注意:用字符数组作为字符串和用指针指向的一个字符串之间的区别。 34 【正确答案】 A 【试题解析】 p+i是数组 s的第 i+1行的首地址,而 *(p+i)则是数组第 i+1行第 1列的元素的地址, *(p+i)+j则是第 i+1行的第 j+1列的地址, *(* (p+i)+j)引用的是数组元素 sij的值。注意:通过建立一个指针数组来引用二维数组元素。 35 【正确答案】 C 【试题解析】 选项 A)和 B)定义的数组空间太小,至少应该为 6
42、个字符的长度才可以。选项 D)中的指针 s未赋初值,所以指向 个不确定的地址,因而不能用 scanf输入数据到这一指针所指向的地址中。注意:通过赋初值的方式给一维字符数组赋字符串。 36 【正确答案】 C 【试题解析】 gets(str)是专门用来输入字符串的函数,可以包含空格,因此只有选项 C)正确,其他选项都不正确。注意:通过 scanf函数从键盘输入数据。 37 【正确答案】 D 【试题解析】 数组 a中最后一个元素是 字符串结束标识 0,所以 a数组长度为7,而 b数组长度为 6,所以答案为 D)。注意:通过赋初值的方式给一维字符数组赋字符串。 38 【正确答案】 D 【试题解析】 选
43、项 A)中, s为数组名,是一个常量地址,而指针 p为一个字符变量,不能说两者完全相同,所以选项 A)错误。选项 B)和 C)的说法都不严谨,只有选项 D)的说法正确。注意:用于字符串处理的函数。 39 【正确答案】 C 【试题解析】 语句 “p=s; ”是使指针 p指向字符数组 s。 *p则引用了 p所指位置的数组元素。注意:通过指针来引用一维数组 元素。 40 【正确答案】 C 【试题解析】 通过行指针 p来实现数组元素的引用。注意:用格式说明符 %s进行整串输入与输出。 41 【正确答案】 D 【试题解析】 字符串复制函数 strcpy调用形式为: strcpy(s1, s2),此函数用
44、来把 s2所指字符串的内容复制到 s1所指存储空间中,函数返回 s1的值,即目的串的首地址;求字符串长度函数 strlen的调用形式如下: strlen(s),此函数计算出以s为起始地址的字符串长度,并作为函数值返回。注意这一长度不包括串的结束标志。注意:用于字符 串处理的函数。 42 【正确答案】 C 【试题解析】 在本题中,将函数的入口地址赋给指针后就可以用该指针调用函数了。注意:函数的指针形参。 43 【正确答案】 A 【试题解析】 这是使用递归算法求著名的菲波拉奇数列,并要熟悉函数的递归方法的调用。 44 【正确答案】 C 【试题解析】 宏替换不像函数调用要进行参数值的计算、传递等,而
45、只是简单按照原格式进行字符串的替换。注意:宏定义的命令格式。 45 【正确答案】 C 【试题解析】 通过指针来引用结构体成员的方法是 (指 针变量 )-结构体成员名。注意:结构体变量中的数据引用。 46 【正确答案】 A 【试题解析】 a=73=11111=100=4(+进制 ), b= 4&3= 100&11=11&11=11=3(+进制 ),所以,答案为选项 A)。注意:位运算的优先级及其所构成的表达式。 47 【正确答案】 D 【试题解析】 可用结构体变量名数据成员名或者结构体指针 -数据成员名两种方法来引用。注意:结构体类型的变量、数组和指针变量的定义。 48 【正确答案】 A 【试题
46、解析】 由于共用体变量中的所有成 员共享存储空间,赋值后, w.c字符数组的值即是整型变量 a的值。注意:共用体变量的定义、初始化及其成员的引用。 49 【正确答案】 D 【试题解析】 fwrite的形式是 fwrite(buffer, size, count, fp), buffer表示准备输出的数据块的起始地址, size表示每个数据块的字节数, count用来指定每写一次或输出的数据块, fp为文件指针。 50 【正确答案】 A 【试题解析】 函数 rewind的功能是将文件指针重新指向一个流的开头。用法如下: int rewind(FILE * stream);并且无返值。 51 【正
47、确答案】 n/2 【试题解析】 在线性表的任何位置插入一个元素的概率相等,即概率为p=1/(n+1),则插入一个元素时所需移动元素的平均次数为 E=1/(n+1) (n-i+1)= n/2。 52 【正确答案】 层次模型 【试题解析】 用树型结构表示实体类型及实体间联系的数据模型称为层次模型,用有向图结构表示实体类型及实体间联系的数据模型称为网状模型,用二维表格结构表示实体及其联系的数据模型称为关系模型。 53 【正确答案】 实 例 【试题解析】 将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。所以,类是对象的抽象,对象则是其对应类的一个实例。 54 【正确答案】 变换型 【试题解析】 典型的数据流类型有两种:变换型和事务型。变换型是指信息沿输入通路进入系统,同时由外部形式变换成
copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1