[计算机类试卷]国家二级(C语言)笔试模拟试卷5及答案与解析.doc

上传人:unhappyhay135 文档编号:503479 上传时间:2018-11-29 格式:DOC 页数:33 大小:94KB
下载 相关 举报
[计算机类试卷]国家二级(C语言)笔试模拟试卷5及答案与解析.doc_第1页
第1页 / 共33页
[计算机类试卷]国家二级(C语言)笔试模拟试卷5及答案与解析.doc_第2页
第2页 / 共33页
[计算机类试卷]国家二级(C语言)笔试模拟试卷5及答案与解析.doc_第3页
第3页 / 共33页
[计算机类试卷]国家二级(C语言)笔试模拟试卷5及答案与解析.doc_第4页
第4页 / 共33页
[计算机类试卷]国家二级(C语言)笔试模拟试卷5及答案与解析.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

1、国家二级( C语言)笔试模拟试卷 5及答案与解析 1 下列选项中不符合良好程序设计风格的是 ( )。 ( A)源程序要文档化 ( B)数据说明的次序要规范化 ( C)避免滥用 goto语句 ( D)模块设计要保证高耦合、高内聚 2 下列关于队列的叙述中正确的是 ( )。 ( A)在队列中只能插入数据 ( B)在队列小只能删除数据 ( C)队列是先进先出的线性表 ( D)队列是先进后出的线性表 3 下列选项中不属于软件生命周期开发阶段任务的是 ( )。 ( A)软件测试 ( B)概要设计 ( C)软件维 护 ( D)详细设计 4 下列叙述中正确的是 ( )。 ( A)线性链表中的各元素在存储空间

2、中的位置必须是连续的 ( B)线性链表中的表头元素一定存储在其他元素的前面 ( C)线性链表中的各元素在存储空间中的位置不一定是连续的,但表头元素一定存储在其他元素的前面 ( D)线性链表中的各元素在存储空间中的位置不一定是连续的,且各元素的存储顺序也是任意的 5 下列叙述中正确的是 ( )。 ( A)线性链表是线性表的链式存储结构 ( B)栈与队列是非线性结构 ( C)双向链表是非线性结构 ( D)只有根结 点的二叉树是线性结构 6 下列叙述中正确的是 ( )。 ( A)黑箱 (盒 )测试方法完全不考虑程序的内部结构和内部特征 ( B)黑箱 (盒 )测试方法主要考虑程序的内部结构和内部特征

3、( C)白箱 (盒 )测试不考虑程序内部的逻辑结构 ( D)上述 3种说法都不对 7 下列叙述中正确的是 ( )。 ( A)接口复杂的模块,其耦合程度一定低 ( B)耦合程度弱的模块,其内聚程度一定低 ( C)耦合程度弱的模块,其内聚程度一定高 ( D)上述 3种说法都不对 8 下列描述中正确的是 ( )。 ( A)程序就是软件 ( B)软件开发不受计算机系统的限制 ( C)软件既是逻辑实体,又是物理实体 ( D)软件是程序、数据与相关文档的集合 9 用树形结构来表示实体之间联系的模型称为 ( )。 ( A)关系模型 ( B)层次模型 ( C)网状模型 ( D)数据模型 10 数据库 DB、数

4、据库系统 DBS、数据库管理系统 DBMS之间的关系是 ( )。 ( A) DB包含 DBS和 DBMS ( B) DBMS包含 DB和 DBS ( C) DBS包含 DB和 DBMS ( D)没有任何关系 11 算法具有 5个特性,以下选项中不属于算法特 性的是 ( )o ( A)有穷性 ( B)简洁性 ( C)可行性 ( D)确定性 12 以下选项中可作为 C语言合法整数的是 ( )。 ( A) 10110B ( B) 386 ( C) 0Xffa ( D) x2a2 13 以下不合法的字符常量是 ( )。 ( A) 018 ( B) ( C) ( D) xcc 14 表达式 3.6-5/

5、2+1.2+5%2的值是 ( )。 ( A) 4.3 ( B) 4.8 ( C) 3.3 ( D) 3.8 15 以下非法的赋值语句是 ( )。 ( A) n=(i=2, +i) ( B) j+; ( C) +(i+1) ( D) x=j 0; 16 若有以下程序段 (n所赋的是八进制数 ): int m=32767,n=032767; printf(“%d,%n“, m, n); 执行后输出结果是 ( )。 ( A) 32767, 32767 ( B) 32767, 032767 ( C) 32767, 77777 ( D) 32767, 077777 17 设有定义: float a=2,

6、b=4,h=3;以下 c语言表达式中与代数式 (a+B) h计算结 果不相符的是 ( )。 ( A) (a+B) *h/2 ( B) (1/2)*(a+B) )*h ( C) (a+B) *h*1/2 ( D) h/2*(a+B) 18 以下程序段的输出结果是 ( )。 int a=1234; printf(“%2dn“,A) ; ( A) 12 ( B) 34 ( C) 1234 ( D)提示出错,无结果 19 有以下程序: main() int m,n,p; scan f(“m=%dn=%dp=%d“, for(b=1;b =c;b+)s=s+1; 则与上述程序段功能等价的赋值语句是( )

7、。 ( A) s=a+b; ( B) s=a+c; ( C) s=s+c; ( D) s=b+c; 23 已有定义: char c;,程序前面已在命令行中包含 ctype.h文件。不能用于判断 c中的字符是否为大写字母的表达式是 ( )。 ( A) isupper(c) ( B) A =c =Z ( C) A =ci =5;i+) p*=i; ( B) for(i=1;i =5;i+) p=1; p*=i; ( C) i=1;p=1; while(i =5)p*=i; i+; ( D) i=1;p=1;dop*=i; i+; while(1 =5) 26 有以下程序: main() char

8、a,b,c,d; scanf(“%c,%c,%d,%d“, printf(“%c,%c,%c,%cn“,a,b,c,d); 若运行时从键盘上输入: 6,5,65,66回车。则输出结果是 ( )。 ( A) 6,5,A,B ( B) 6,5,65,66 ( C) 6,5,6,5 ( D) 6,5,6,6 27 有以下程序: fun(int x,int y) static int m=0, i=2; i+=m+1; m=i+x+y; return m; main() int j=1,m=1,k; k=fun(j,m); printf(“%d,“k); k=fun(j,m); printf(“%dn

9、“,k); 执行后的输出结果是 ( )。 ( A) 5,5 ( B) 5,11 ( C) 11,11 ( D) 11,5 28 设有定义: int n1=0,n2,*p=,以下赋值语句中与 n2=n1;语句等价的是 ( )。 ( A) *p=*q; ( B) p=q; ( C) *p= ( D) p=*q; 29 有以下程序: #include stdio.h main() char c1,c2,c3,c4,c5,c6; scanf(%c%c%c%c, c5=getchar(); c6=getchar(); putchar(c1); putchar(c2); printf(%c%cn,c5,c

10、6); 程序运行后,若从键 盘输入 (从第 1列开始 ) 123回车 45678回车 则输出结果是 ( )。 ( A) 1267 ( B) 1256 ( C) 1278 ( D) 1245 30 有以下程序: #include stdio.h main() printf(“%dn“,NULL); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 1 ( C) -1 ( D) NULL没定义,出错 31 以下程序中函数 sort的功能是对 a所指数组中的数据进行 由大到小的排序; void sort(int a,int n) int i,j,t; for(i=0;i n-1;i+) fo

11、r(j=i+1,j n;j+) if(ai aj) 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+)print(“%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,2,10,9,8,7,6,5,4,3, 32 有以下程序: main() char p=a,b,c,q=“abc“; pri

12、ntf(“%d %dn“,sizeof(p),sizeof(q); 程序运行后的输出结果是 ( )。 ( A) 4 4 ( B) 3 3 ( C) 3 4 ( D) 4 3 33 若有定义语句: int a23,*p3;,则以下语句中正确的是 ( )。 ( A) p=a; ( B) p0=a; ( C) p0= ( D) p1= 34 有以下程序: void change(int k)k0=k5; main() int x10=(1,2,3,4,5,6,7,8,9,10,n=0; while(n =4) change(n+; for(n=0;n 5;n+) printf(“%d“,xn); p

13、rintf(“n“); 程序运行后输出的结果是( )。 ( A) 6 7 8 9 10 ( B) 1 3 5 7 9 ( C) 1 2 3 4 5 ( D) 6 2 3 4 5 35 有以下程序: #include stdio.h main() char c1=1,c2=2; c1=getchar(); c2=getchar(); putchar(c1); putchar(c2); 当运行时输入: a回车后,以下叙述正确的是 ( )。 ( A)变量 c1被赋予字符 a, c2被赋予回车符 ( B)程序将等待用户输入第 2个字符 ( C)变量 c1被赋予字符 a, c2中仍是原有字符 2 ( D

14、)变量 c1被赋予字符 a, c2中将无确定值 36 有以 下程序: main() char s=“n123“; printf(“%d,%dn“,strlen(s),sizeof(s); 执行后输出结果是 ( )。 ( A)赋初值的字符串有错 ( B) 6,7 ( C) 5,6 ( D) 6,6 37 阅读以下函数: fun(char *s1,char *s2) int i=0; while(s1i=s2i return(s1i=0 此函数的功能是 ( )。 ( A)将 s2所指字符串赋给 s1 ( B)比较 s1和 s2所指字符串的大小,若 s1比 s2的大,函数值为 1,否则函数值为 0

15、( C)比较 s1和 s2所指字符串是否相等,若相等,函数值为 1,否则函数值为 0 ( D)比较 s1和 s2所指字符串的长度,若 s1比 s2的长,函数值为 1,否则函数值为 0 38 以下叙述中正确的是 ( )。 ( A)全局变量的作用域一定比局部变量的作用域范围大 ( B)静态 (static)类别变量的生存期贯穿于整个程序的运行期间 ( C)函数的形参都属于全局变量 ( D)未在定义语句中赋初值的 auto变量和 static变量的初值都是随机值 39 有以下程序: #include string.h void f(char p10,int n)/* 字符串从小到大排序 */ cha

16、r t10; int i,j; for(i=0;i n-1;i+) for(j=i+1;j n;j+) if(strcmp(pi,pj) 0) strcpy(t,pi); strcpy(pi,pj); strcpy(pj,t); main() char p510=“abc“,“aabdog“,“abbd“,“dcdbe“,“cd“; f(p,5); printf(“%dn“,strlen(p0); 程序运行后的输 出结果是 ( )。 ( A) 2 ( B) 4 ( C) 6 ( D) 3 40 设有如下说明: typedef struct ST long a;int b;char c2; NE

17、W; 则下面叙述中正确的是 ( )。 ( A)以上的说明形式非法 ( B) ST是一个结构体类型 ( C) NEW是一个结构体类型 ( D) NEW是一个结构体变量 41 有以下程序: #include string.h main() char p=a,b,c,q10=a,b,c; printf(“%d %dn“,strlen(p),strlen(q); 以下叙述中正确的是 ( )。 ( A)在给 p和 q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为 3 ( B)由于 p数组中没有字符串结束符,长度不能确定;但 q数组中字符串长度为3 ( C)由于 q数组中没有字符串结束符,长度

18、不能确定;但 p数组中字符串长度为3 ( D)由于 p和 q数组中都没有字符串结束符,故长度都不能确定 42 有以下程序: int a=4; int f(int n) int t=0; static int a=5; if(n%2) int a=6; t+=a+; else int a=7; t+=a+; return t+a+; main() int s=a,i=0; for(;i 2; i+) s+=f(i); printf(“%dn“,s); 程序运行后的输出结果 是 ( )。 ( A) 24 ( B) 28 ( C) 32 ( D) 36 43 有以下程序; void ss(char

19、*s,char 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) abeDDfefDbD ( C) abcAAfefAbA ( D) Abcddfefdbd 44 设有以下语句: typedef struct TT char c; int a4;CIN; 则下面叙述中正确的是 ( )。 ( A)可以用 TT定义结构体变量 ( B) TT是 struct类型的

20、变量 ( C)可以用 CIN定义结构体变量 ( D) CIN是 struct TT类型的变量 45 有以下程序: #include stdio.h stxuct tt int x;struct tt *y;*p; struct tt a4=20,a+1,15,a+2,30,a+3,17,a; main() int i; p=a; for(i=1;i =2;i+) printf(“%d,“,p- x ); p=p- y; 程序的运行结果是 ( )。 ( A) 20,30, ( B) 30,17 ( C) 15,30, ( D) 20,15, 46 有以下程序: main() int x=1,3,

21、5,7,2,4,6,0,i,j,k; for(i=0;i 3;i+) for(j=2;j =i;j-) if(xj+1 xj) k=xj; xj=xj+1; xj+1=k; for(i=0;i 3;i+) for(j=4;j 7-i;j+) if(xj xj+1) k=xj; xj=xj+1; xj+1=k; for(i=0;i 8;i+) printf(“%d“,xi); printf(“n“); 程序运行后的输出结果是 ( )。 ( A) 75310246 ( B) 1234567 ( C) 76310462 ( D) 13570246 47 设有以下定义: union data int

22、d1; float d2; demo; 则下面叙述中错误的是 ( )。 ( A)变量 demo与成员 d2所占的内存字节数相同 ( B)变量 demo中各成员的地址相同 ( C)变量 demo和各成员的地址相同 ( D)若给 demo.d1赋 99后, demo.d2中的值是 99.0 48 有以下程序: #include stdlib.h struct NODE int nurn; struct NODE *next; ; main() struct NODE *p,*q,*r; int sum=0; P=(struct NODE*)malloc(sizeof(struct NODE); q

23、=(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) 4 ( C) 5 ( D) 6 49 有以下程序: #include stdlib.h main() char *p,*q; p=(char*)ma

24、lloc(sizeof(char)*20);q=p; scanf(“%s%s“,p,q); printf(“%s%sn“,p,q); 若从键盘输入: abc def回车,则输出结果是 ( )。 ( A) def def ( B) abc def ( C) abe d ( D) d d 50 以下程序 企图把从终端输入的字符输出到名为 abc.txt的文件中,直到从终端读入字符 #号时结束输入和输出操作,但程序有错。 #include stdio.h main() FILE *four; char ch; fout=fopen(abc.txt,w); ch=fgetc(stdin); while

25、(ch!=#) fputc(ch,fout); ch=fgetc(stdin); fclose(fout); 出错的原因是 ( )。 ( A)函数 fopen调用形式有误 ( B)输入文件没有关闭 ( C)函数 fgetc调用形式有误 ( D)文件指针 stdin没有定义 51 设一棵完全二叉树共有 700个结点,则在该二叉树中有【 】个叶子结点。 52 在面向对象方法中,【 】描述的是具有相似属性与操作的一组对象。 53 诊断和改正程序中错误的工作通常称为【 】。 54 对下列二叉树进行中序遍历的结果为【 】。 55 在结构化分析使用的 数据流图 (DFD)中,利用【 】对其中的图形元素进行

26、确切解释。 56 若有定义 int a=10,b=9,c=8;,接着顺序执行下列语句,变量 b中的值是【 】。 c=(a-=(b-5); c=(a%11)+(b=3); 57 函数 pi的功能是根据以下近似公式求 值: (*)/6=1+1/(2*2)+1/(3*3)+.+1(n*n) 现在请你在下面的函数中填空,完成求 的功能。 #include “math.h“ double s=0.0; long i; for(i=1; i =n; i+)s=s+【 】 ; return(sqrt(6*S); 58 若输入字符串: abcde ,则以下 while循环体将执行【 】次。 while(ch=

27、getchar()=e)printf(“*“); 59 若有以下定义,则不移动指针 p,且通过指针 p引用值为 98的数组元素的表达式是【 】。 int w10=23,54,10,33,47,98,72,80,61, *p=w; 60 设在主函数中有以下定 义和函数调用语句,且 fun函数为 void类型;请写出fun函数的首部【 】。要求形参名为 b。 main() double 1022; int n; fun(s); 61 有以下程序: int f(int n) if(n=1)return 1; else return f(n-1)+1; main() int i,j=0; for(i=

28、1; i 3; i+)j+=f(i); printf(“%dn“,j); 程序运行后的输出结果是【 】。 62 以下程序的输出结果是【 】。 void fun() static int a=0; a+=2; printf(“%d“, A) ; main() int cc; for(cc=1; CC 4; CC+)fun(); printf(“n“); 63 以下程序的输出结果是【 】。 #define MAX(x, y) (x) (y)?(x)L:(y) main() int a=5, b=2, C=3, d=3, t; t=MAX(a+b,c+D) *10; printf(“%dn“,t);

29、 64 实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中 (相当于 copy命令 ),假定文件在当前目录下。请补全程序。 #include stdio.h void main(int argc,char*argv) FILE*f1,*f2; if(argc【 】 ) printf(“parameter error!n“); exit(0); n=fopen(argv1, “r“); f2=fopen(argv2, “w“); while(【 】 )fputc(fgetc(f1), f2); fclose(f1); fclose(f2); 国家二级( C语言

30、)笔试模拟试卷 5答案与解析 1 【正确答案】 D 【试题解析】 良好的设计风格包括:程序文档化,选项 A的说法正确:数据说明 次序规范化,选项 B的说法正确:功能模块化,即把源程序代码按照功能划分为低耦合,高内聚的模块,选项 D的说法错误:注意 goto语句的使用,选项 C的说法正确。 2 【正确答案】 C 【试题解析】 队列是指允许在一端进行插入、而在另一端进行删除的线性表,允许插入的一端称为队尾,允许删除的一端称为队头,选项 A和选项 B错误。在队列中,最先插入的元素将最先能够被删除,反之,最后插入的元素将最后才能被删除,所以,队列又称为 “先进先出 ”或 “后进后出 ”的线性表,它体现

31、了 “先来先服务 ”的原则,选项 C正确,选项 D错误。 3 【正确答案】 C 【试题解析】 软件开发周期开发阶段通常由下面 5个阶段组成:概要设计、详细设计、编写代码、组装测试和确认测试。软件维护时期的主要任务是使软件持久地满足用户的需要。选项 C中的软件维护不是软件生命周期开发阶段的任务。 4 【正确答案】 D 【试题解析】 在线性表的链式存储结构中,各数据结点的存储位置不连续,选项A错误。各结点在存储空间中的位置关系与逻辑关系也不一致,选项 B和选项 C错误。选项 D正确。 5 【正确答案】 A 【试题解析】 线性链表是线性表的链式存储结 构,选项 A的说法是正确的。栈与队列是特殊的线性

32、表,它们也是线性结构,选项 B的说法足错误的;双向链表是线性表的链式存储结构,其对应的逻辑结构也是线性结构,而不是非线性结构,选项 c的说法是错误的;二叉树是非线性结构,而不是线性结构,选项 D的说法是错误的。 6 【正确答案】 A 【试题解析】 黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例,选项 A是正确的,选项 B错误。白箱测试是根据对程序内部逻辑结构的分析来选取测试用例,选项 C错误。 7 【正确答案】 C 【试题 解析】 影响模块之间耦合的主要因素有两个:模块之间的连接形式,模块接口的复杂性。一般来说,接口复杂的模块,其耦合程度要比接口简单的的模块强,

33、所以选项 A的说法错误:耦合程度弱的模块,其内聚程度一定高,选项 B错误:选项 C正确。 8 【正确答案】 D 【试题解析】 计算机软件是计算机系统中与硬件相耳依存的另一部分,包括程序、数据及相关文档的完拄集合。 9 【正确答案】 B 【试题解析】 目前常用的数据模型有 3种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的。 10 【正确答案】 C 【试题解析】 数据库管理系统 DBMS是数据库系统中实现各种数据管理功能的核心软件。它负责数据库中所有数据的存储、检索、修改以及安全保护等,数据库内的所有活动都是在其控制下进行的。所以, DBMS包含数据库 DB。操作

34、系统、数据库管理系统与应用程序在一定的硬件支持下就构成了数据库系统 DBS。所以, DBS包含 DBMS,也就包含 DB。 11 【正确答案】 B 【试题解析】 一个算法应当具有以下 5个特性:有穷性;确定性;可行性;有零个或多个输入;由一个或多个输出。简洁性不属于 这 5个特性,所以本题应该选择 B。 12 【正确答案】 C 【试题解析】 在 C语言中,整数常量可以用十进制、八进制和十六进制来表示,选项 A为二进制表示,故选项 A不正确;选项 B是八进制表示法,但在八进制数中,各个位数只能为数字 0到 7中的一个,而在选项 B中,有一个数字 8,故选项 B不正确:选项 C为十六进制表示法正确

35、;选项 D中也为十六进制表示法,但十六进制数以 ox开头,故选项 D不正确,所以, 4个选项中选项 C符合题意。 13 【正确答案】 A 【试题解析】 在选项 A中, “”后跟着三个数字,是表示一 个 ASCII码值等于这三位数字所组成的八进制数数值的字符,但是八进制数只能是由 0-7这八个数字表示,而选项 A中出现了数字 8所以是不合法的。选项 B是表示一个双引号的转义字符表示方法;选项 C表示的是一个反斜杆;选项 D表示一个 ASCII值为十六进制值 “的字符。故应该选择 A。 14 【正确答案】 D 【试题解析】 *、 /和 %的优先级要高于 +和 ,同级别的运算符从左至右运算。所以本题

36、首先计算 5/2和 5%2,虽然我们都知道 5/2的结果应该是 2.5,但 C语言中规定了两个整数相除的结果为整数,而且是截尾取整,所以 5/2的结果是 2;5%2表示的是 5除以 2所得的余数,其结果为 1。计算完后,表达式变为 3.6-2+1.2+1,从左至右计算不难得出结果为 3.8,故应该选择 D。 15 【正确答案】 C 【试题解析】 选项 A为复合表达式,首先计算 (i=2, +i)的值,然后赋值给 n,故选项 A正确;选项 B为简单自加运算,故选项 B正确;选项 c在表达式 +(i+1);中, (i+1)不是变量,该表达式的值为常量,而在什运算中,其运算对象必须为变量,故选项 C

37、错误,选项 D中为复合赋值表达式,正确。所以应当选择 C。 16 【正确 答案】 A 【试题解析】 程序在定义时,以十进制形式为 m赋初值,以八进制的形式为 n赋初值。输出的时候 m以十进制形式输出, n以八进制形式输出,因此输出的结果为 32767和 32767。所以, A选项为所选。 17 【正确答案】 B 【试题解析】 选项 B中由于 1和 2都是整型,其 1/2的运算结果为 0,故整个表达式的值为 0,所以它的结果和题目中要求的代数式的讨算结果不相符,所以, 4个选项中选项 B符合题意。 18 【正确答案】 C 【试题解析】 当整数的值超过格式要求输出范围时,原样输出。本题中 要求输出

38、两个有效数字,而实际上 a有 4个有效数字,故原样输出,输出 1234。所以, 4个选项中 C为所选。 19 【正确答案】 A 【试题解析】 本题若想使变量 m的值为 123、 n为 456、 p为 789,则应该输入的字符串为:用这三个数据按 m、 n、 p出现在 scaaf()函数中的位置顺序替换掉scant()函数格式控制串中的格式控制符后所得到的格式控制串,即“m=123n=456p=789“。所以, 4个选项十选项 A符合题意。 20 【正确答案】 A 【试题解析】 本题中定义了整型变量 a和一个指向整型 数据的指针变量 pa,并定义 pa是一个存放 a的地址的变量。选项 B是应该将

39、 a改为 后,二维数组 p中的内容为(“aabdfg“,“abbd“,“abc“,“cd“,“dcdbc“。输出的结果是 strlen(p0),即 p中第 1个字符串的长 度,所以结果是 6。故本题应该选择 C。 40 【正确答案】 C 【试题解析】 将题目中的定义语句去掉前面的 typedef和后面的 NEW(分号保留 ),就是一条完整的结构体定义语句,其中 struct是说明符, ST是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用 struct加结构体名一起来声明, struct ST一起构成一个结构体类型,就好像字符类型char。若只去掉前面的 typede

40、f,就是一条结构体定义同时声明一个结构体变量NEW的语句,因为 NEW的前面部分是 struct ST的完整写法,可以看作是 struct ST。 C语言允许用 typedef说明一种新类型名,其语法格式为: typedef 类型 名标识符; 以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在 typedef时,该语句就变成了给 struct ST的完整写法定义一个新的名称 NEW。所以,此时的 NEW是一个结构体类型,它相当于 struct ST,即可以和 char一样单独用来声明该结构体变量,而 ST只是一个结构体名,不能单独用来声明变量。所以, 4个选项中 C符合题意。 41

41、【正确答案】 B 【试题解析】 使用初始化列表对字符数组赋初值,系统不会自动为其添加字符串结束符,使用字符串初始化时才会自动添加,所以选项 A是错的。数组长度在未指定的情况下由初始化列表项中数据的个数决定,若已指定且初始化项数不足时,多出部分会自动初始化为 0, 0等价于宁符串结束符 0。所以选项 B是正确的, C和 D都是错误的。本题应该选 B。 42 【正确答案】 B 【试题解析】 题目中第 1行声明了一个全局变量 a,在函数 f()中,也声明了一个静态变量 a,这时全局变量被屏蔽,即在 f()函数中用到的 a是其内部定义的这 个静态变量 a,而不是全局变量。但 f()函数的 if子句和

42、else子句又分别了局部变量a,这时静态变量 a又被屏蔽,即在 if子句中使用的是 if子句自己定义的 a, else子句也是这样。在主函数中,通过 for语句连续执行了 2次 f()函数,并将返回值累加到 s中,且 s被全局变量 a初始化,即初始值是 4。第 1次调用 f(),参数值为0, 0能被 2整除,执行 if子句, t被自增 6, a增 1不会影响外面的变量 a。函数返回 t和静态变量 a的和,即 11,此时,静态变量 a被增 1,这次对 a的改变会带入到下一次 f()函数的调用小去。第 2次调用 f(),参数值为 1, 1不能被 2整除,执行 else子句, t被自增 7, a增

43、1不会影响外面的变量 a。函数返回 t和静态变量a的和,此时 a的值为上次调用 f()时增 1后的值 6,即返回 7+6=13。所以,主函数中 s现在的值为 4+11+13=28。故应该选择 B。 43 【正确答案】 B 【试题解析】 本题中的函数 ss()有两个参数,一个是字符型指针变量 s,另一个是字符型变量 t。在函数中通过一个 while循环,在循环中一次取出 s指向的字符串并判断它是否和 t中存放的字符相同,若相等,则执行 “*s=t-a+A;”(若 是小写字母,则把它转换成大写字母 )语句。在主函数中执行函数调用 ss(str1,c),很显然是把 str1数组中所有字符 “d”变成

44、大写字母,其他字符不变。所以 4个选项中 B正确。 44 【正确答案】 C 【试题解析】 将题目中的定义语句去掉前面的 typedef和后面的 CIN(分号保留 ),就是一条完整的结构体定义语句,其中 struct是说明符, TT是结构体名,大括号里面的是结构体成员的定义。此时要声明该结构体变量时需要使用 struct加结构体名一起来声明, struct TT一起构成一个结构体类型,就好像字 符类型char。若只去掉前面的 typedef,就是一条结构体定义同时声明个结构体变量 CIN的语句,因为 CIN的前面部分是 struct TT的完整写法,可以看作是 struct TT。 C语言允许用

45、 typedef说明一种新类型名,其语法格式为: typedef 类型名 标识符; 以后就可以用该标识符来代替被说明的类型名了。因此,当前面存在 typedef时,该语句就变成了给 struct TT的定义一个新的名称 CIN。所以,此时的 CIN是一个结构体类型,它相当于 struct TT,即可以和 char一样单独 用来声明该结构体变量,而 TT只是一个结构体名,不能单独用来声明变量。所以, 4个选项中 C符合题意。 45 【正确答案】 D 【试题解析】 题目中定义了一个全局结构体数组 a,结构体中包含两个成员;一个 int型变量 x和一个自身类型指针 y。所以,结构体数组 a的初始化列

46、表中每两个初始化一个结构体元素。主函数通过一个 for循环,连续调用了两次输出函数printf(),每次输出 p所指元素的 x成员值。 p初始化时指向数组 a的首地址,即a0的位置,所以第 1次输出的值为 20。然后又将 a0的成员 y的值赋给 p, y在初始化时是 a+1,所以 p在第 2次输出时指向的元素是 a1,故第 2次输出的值为15。所以本题最终输出结果是 “20,15,”,应该选择 D。 46 【正确答案】 A 【试题解析】 主函数中定义了一个整型数组 x,并初始化。接着执行了一个二重for循环,在该二重循环的作用是将数组的前 4个元素按从大到小排序,接着用了一个二重循环 (也是冒泡算法 )将数组的后 4个元素按从小到大的顺序排序,故最后依次输出数组的个元素的值为 75310246,所以, 4个选项中选项 A符合题意。 47 【正确答案】 D 【试题 解析】 本题中 float所占内存字节数为 4,而 int类型在 VC 6.0中占 4字节,所以 demo就与成员 d2所占

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试资料 > 职业资格

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1