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

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

1、国家二级( C语言)笔试模拟试卷 90及答案与解析 1 下列数据结构中,不是线性结构的是 ( )。 ( A)线性链表 ( B)带链的队列 ( C)带链的栈 ( D)二叉链表 2 在深度为 6的满二叉树中,结点的个数为 ( )。 ( A) 32 ( B) 31 ( C) 16 ( D) 15 3 下图所示的二叉树的先序遍历序列是 ( )。 ( A) ABDGCEHIF ( B) DGBAHEICF ( C) GDBHIEFCA ( D) ABCDEFGHl 4 模块化程序设计主要强调的是 ( )。 ( A)程序的 规模要大 ( B)对程序进行分解 ( C)程序的执行效率 ( D)程序的可移植性

2、5 结构化程序设计的主要特点是 ( )。 ( A)每个控制结构要模块化 ( B)每个控制结构具有封装性 ( C)每个控制结构具有独立性 ( D)每个控制结构只有一个入口和一个出口 6 下列叙述中错误的是 ( )。 ( A)测试是程序执行的过程,目的在于发现错误 ( B)一个好的测试在于能发现至今未发现的错误 ( C)一个成功的测试是发现了至今未发现的错误 ( D)上述说法都不对 7 对于白箱 (盒 )测试用例的各设计准 则,下列叙述中正确的是 ( )。 ( A)分支覆盖准则比语句覆盖准则严密 ( B)条件覆盖要比分支覆盖优越。因此,条件覆盖能完全满足分支覆盖 ( C)组合条件覆盖准则既能满足分

3、支覆盖准则,也能满足条件覆盖准则。因此,组合条件覆盖准则是一种完全测试 ( D)上述说法都不对 8 下列叙述中正确的是 ( )。 ( A)数据库设计是指设计数据库系统 ( B)数据库设计是指设计数据库管理系统 ( C)数据库设计是指在已有数据库管理系统的基础上建立数据库 ( D)以上三种说法都不对 9 关系数据库管理系统能实现 的专门关系运算包括 ( )。 ( A)排序、索引、统计 ( B)选择、投影、连接 ( C)关联、更新、排序 ( D)显示、打印、制表 10 下列数据模型中,具有坚实理论基础的是 ( )。 ( A)关系模型 ( B)网状模型 ( C)层次模型 ( D)以上三个都是 11

4、一个算法应该具有 “确定性 ”等 5个特性,下面对另外 4个特性的描述中错误的是 ( )。 ( A)有零个或多个输入 ( B)有零个或多个输出 ( C)有穷性 ( D)可行性 12 C语言中用于结构化程序设计的 3种基本结构是 ( )。 ( A)顺序结构、选择结构、循环结构 ( B) if、 switch、 break ( C) for、 while、 do-while ( D) if、 for、 continue 13 在一个 C程序中 ( )。 ( A) main函数必须出现在所有函数之前 ( B) main函数可以在任何地方出现 ( C) main函数必须出现在所有函数之后 ( D) m

5、ain函数必须出现在固定位置 14 下列叙述中正确的是 ( )。 ( A) C语言中既有逻辑类型也有集合类型 ( B) C语言中没有逻辑类型但有集合类型 ( C) C语言中有逻辑 类型但没有集合类型 ( D) C语言中既没有逻辑类型也没有集合类型 15 若以下选项中的变量已正确定义,则正确的赋值语句是 ( )。 ( A) x1=26.8%3; ( B) 1+2=x2 ( C) x3=0x12; ( D) x4=1+2=3; 16 设有以下定义: int a=0; double b=1.25; char c=A; #define d 2 则下面语句中错误的是 ( )。 ( A) a+; ( B)

6、 b+; ( C) c+; ( D) d+; 17 若有如下定 义: int x=6,y=3,z=2; 则表达式 x=y|y z printf(“%dn“,(x,y); 则以下叙述中正确的是 ( )。 ( A)输出语句中格式说明符的个数少于输出项的个数,不能正确输出 ( B)运行时产生出错信息 ( C)输出值为 2002 ( D)输出值为 2003 19 有以下程序: main() int a=666,b=888; printf(“%dn“,a,b); 程序运行后的输出结果是 ( )。 ( A)错误信息 ( B) 666 ( C) 888 ( D) 666,888 20 有以下程序: main

7、() int i; for(i=0;i 3;i+) switch(i) case 0: prinft(“%d“,i); Case 2: prinft(“%d“,i); default: prinft(“%d“,i); 程序运行后的输出结果是 ( )。 ( A) 22111 ( B) 21021 ( C) 122 ( D) 12 21 有以下程序: int a=3; main() int s=0; int a=5; s+=a+; ) s+=a+; printf(%dn,s); 程序运行后的输出结果是 ( )。 ( A) 8 ( B) 10 ( C) 7 ( D) 11 22 阅读下述程序段: y

8、=-1; if(x!=0) if(x 0) y=1; else y=0; 该程序段所描述的数学关系是 ( )。 ( A) ( B) ( C) ( D) 23 有如下程序: main() int x=23; do printf(“%d“,x-); while(!x); 程序运行后的输出结果是 ( )。 ( A) 321 ( B) 23 ( C)不输出任何内容 ( D)陷入死循环 24 要求以下程序的功能是计算 s=1+1/2+1/3+1/10 main() int n ; float s; s=1.0; for(n=1O;n 1;n-) s=s+1/n; printf(“%6.4fn“,s);

9、程序运行后输出结果错误,导致错误结果的程序行是 ( )。 ( A) s=1.0; ( B) for(n=1O; n l; n-) ( C) s=s+1/n; ( D) printf(“%6.4fn“,s); 25 有以下程序: main() int k=4,n=0; for(; n k;) n+; if(n%3!=O) continue; k-; printf(“%d,%dn“,k,n); 程序运行后的输出结果是 ( )。 ( A) 1, 1 ( B) 2, 2 ( C) 3, 3 ( D) 4, 4 26 有以下程序: float fun(int x, int y) return(x+y);

10、 main() int a=2,b=5,C=8; printf(“%3.0fn“,fun(int)fun(a+c,b),a-c); 程序运行后的输出结果是 ( )。 ( A)编译出错 ( B) 9 ( C) 21 ( D) 9 27 有以下程序: int f1(int x,int y) return x y?x:y; int f2(int x, int y) return x y?y:x; main() int a=4,b=3,c=5,d,e,f; d=fl(a,b);d=f1(d,c); e=f2(a,b);e=f2(e,c); f=a+b+c-d-e; printf(“%d,%d,%dn“

11、,d,f,e); 执行后输出结果是 ( )。 ( A) 3,4,5 ( B) 5,3,4 ( C) 5,4,3 ( D) 3,5,4 28 有如下程序: void f(int x, int y) int t; if (x y) t=x; x=y; y=t; main() int a=4,b=3,C=5, f (a,b); f (a,c); f (b,c); printf(“%d,%d,%dn“,a,b,C); 执行后输出结果是 ( )。 ( A) 3, 4, 5 ( B) 5, 3, 4 ( C) 5, 4, 3 ( D) 4, 3, 5 29 以下选项中,正确运用指针变量的程序段是 ( )。

12、 ( A) int*i=NULL; ( B) float*f=NULL; scanf(“%d“,i); *f=10.5; ( C) char t=m,*C= ( D) long*L; *C= L=0; 30 有以下程序: #include stdio.h main() printf(“%dn“,NULL); 程序运行后的输出结果是 ( )。 ( A) 0 ( B) 1 ( C) -1 ( D) NULL没定义,出错 31 已定义 c为字符型变量,则下列语句中正确的是 ( )。 ( A) c=97; ( B) c=“97“; ( C) c=97; ( D) c=“a“; 32 以下不能正确定义二

13、维数组的选项是 ( )。 ( A) int a212=1,2; ( B) int a2=1,2,3,4; ( C) int a22=1,2,3: ( D) int a2=1,2,3,4; 33 若有如下程序: main() char a35 = “name“,“age“,“sex“,n; for(n=0;n3;n+) printf(“%sn“,an); 则程序执行后的输出结果是 ( )。 ( A) nameagesex ( B) name ( C) name ( D) name agexex ge age sex x sex 34 有以下程序: main() int m3=1,4,7,2,5,

14、8,3,6,9 int i,j,k=2; for( i=0; i 3; i+ ) printf(“%d“,mki); 执行后输出结果是 ( )。 ( A) 456 ( B) 258 ( C) 369 ( D) 789 35 执行下列程序的结果是 ( )。 #define N 5 #define H(x) (N+2)*x) main() int a=2,b=3,C; c=H(a+b); printf(“%d“,c); ( A) 15 ( B) 17 ( C) 23 ( D) 35 36 有以下程序: main() char s=“n123“; printf(%d,%dn,strlen(s),si

15、zeof(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= 此函数的功能是 ( )。 ( A)将 s2所指字符串赋给 s1 ( B)比较 s1和 s2所指字符串的大小,若 s1比 s2的大,函数值为 1,否则函数值为 0 ( C)比较 s1和 s2所指字符串是否相等,若相等,函数值为 1,否则函数值为 0 ( D)比较 s1和 s2所指字符串的长度,若 s1比 s2的长,函数值为 1,否

16、则函数值为 0 38 以下叙述中正确的是 ( )。 ( A)全局变量的作用域一定比局部变量的作用域范围大 ( B)静态 (static)类 别变量的生存期贯穿于整个程序的运行期间 ( C)函数的形参都属于全局变量 ( D)未在定义语句中赋初值的 auto变量和 static变量的初值都是随机值 39 设有如下说明: typedef struct int n; char c; double x;) STD; 则以下选项中,能正确定义结构体数组并赋初值的语句是 ( )。 ( A) STD tt2=1,A,62,2,B,75; ( B) STD tt2=1,“A“,62,2,“B“,75; ( C)

17、 stmc tt2=1,A),2,B; ( D) struc tt2=1,“A“,62.5),2,“B“,75.0; 40 在下列定义中的共用体所占内存字节数是 ( )。 union char k6; struct int m; floar f; a; double d; b; ( A) 8 ( B) 14 ( C) 18 ( D) 10 41 若有以下结构体,则正确的定义或引用是 ( )。 struct Test int x; int y; v1; ( A) Test.x=10; ( B) Test v2; v2.x=10; ( C) struct Test v2; v2.x=10; ( D

18、) struct Test.v2=10; 42 有以下程序: main() char s=“Yesn/No“,*ps=s; puts(ps+4); *(ps+4)=0; puts(s); 程序运行后的输出结果是 (选 项 D中的第一行是空行 )( )。 ( A) n/No Yes /No ( B) /No Yes ( C) n/No Yes /No ( D) /No Yes 43 有以下程序: void fun( int *a, int i, int j) int t; if ( i j ) t=ai;ai=aj;aj=t; fun (a,+i,-j); main() int a=1,2,3,

19、4,5,6),i; fun(a,0,5) for( i=0; i 6; i+) printf(“%d“,ai); 执行后的输出结果是 ( )。 ( A) 654321 ( B) 432156 ( C) 456123 ( D) 123456 44 假定下列程序的可执行文件名为 filel.exe,在该程序的子目录下输入命令行: file1China Bejing回车 main(int argc, char*argv) while(argc- 1) printf(“%sn“,*+argv); 则程序运行后的输出结果是 ( )。 ( A) filel China Bejing ( B) China

20、Bejing ( C) China ( D) Bejing 45 有如下说明和定义语句: struct student int age; char num8; struct student stu3=20,“200401“,21,“200402“),19,“200403“; struct student *p=stu; 以下选项中引用结构体变量成员的表达式错误的是 ( )。 ( A) (p+)- num ( B) p- num ( C) (*p).num ( D) stu3.age 46 若要说明一个类型名 STP,使得定义语句 STP s等价于 char *s,以下选项中正确的是 ( )。

21、( A) typedef STP char *s; ( B) typedef *char STP; ( C) typedef STP *char; ( D) typedef char* STP; 47 下面程序的输出结果为 ( )。 struct st int x; int *y; *p; int dt4=10,20,30,40); struct st aa4=50, main() p=aa; printf(“%dn“,+p- x); printf(“%d|n“,(+p)- x); printf(“%dn“,+(*p- y); ( A) 10 20 20 ( B) 50 60 21 ( C)

22、51 60 21 ( D) 60 70 31 48 表达式 “ 9 int i, a4=l,2,3,4,b; fp=fopen(“data.dat“,“wb“); for(i=0;i 4;i+) fwrite( fclose(fp); fp=fopen(“data.dar“,“rb“); fseek(fp,-2L*sizeof(int),SEEK END); fread(/*从文件中读取 sizeof(int)字节的数据到变量 b中 * fclose(fp); printf(“%dn“,b); 执行后输出结果是 ( )。 ( A) 2 ( B) 1 ( C) 4 ( D) 3 51 在一个容量

23、为 25的循环队 列中,若头指针 front=16,尾指针 rear=9,则该循环队列中共有【 】个元素。 52 在面向对象方法中,属性与操作相似的一组对象称为【 】。 53 在软件开发中,结构化方法包括结构化分析方法、结构化设计方法和结构化程序设计方法。详细设计阶段所采用的是【 】方法。 54 在关系模型中,把数据看成一个二维表,每一个二维表称为一个【 】。 55 实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多教师,而一个教师只归属于一个学校,则实体集学校与实体集教师之间的联系属于【 】的联系。 56 已知字符 A的 ACSII码值为 65,以下语句的输

24、出结果是【 】。 char ch=B; printf(“%c %dn“,ch,ch); 57 以下程序段的输出结果是【 】。 main() int a=2,b=2,c=4; a*=16+(b+)-(+C); printf(“%d“,a); 58 有以下程序 main() int t=1,i=5; for( ; i =0; i-) t*=i; printf(“%dn“,t); 执行后输出结果是【 】。 59 若有以下程序: main() int a=4, b=3, c=5, t=0; if(a b) t=a; a=b; b=t; if(a c) t=a; a=c; c=t; printf(“%d

25、%d%dn“,a,b,C); 执行后输出结果是【 】。 60 有以下程序: #include stdio.h main() char ch1,ch2; int n1,n2; ch1=getchar(); ch2=getchar(); n1=ch1-0; n2=n1*10+(ch2-0); printf(“%dn“,n2); 程序运行时输入 12回车,执行后输出结果是【 】。 61 有以下程序: void f( int y,int *x) y=y+*x; *x=*x+y; main() int x=2,y=4; f(y, ptintf(“%d %dn“,x,y); 执行后输出结果是【 】。 62

26、 若 x、 y和 z均是 int型变量,则执行下面表达式后的 x值为【 】。 x=(y=4)+(z=3) 63 以下程序中, for循环体执行的次数是【 】。 #define N 2 #define M N+1 #define K M+1*M/2 main() int i; for(i=1;i K;i+) . 64 设有如下变量说明,则 a+(int)(int)b+c) (int)(b-c)的值为【 】。 int a=5;float b=7.2,c=3.6; 65 main() printf(“The sum=%dn“, SunFun(10); SunFun(int n) int x,s=0;

27、 for(x=0;x=n;x+)s+=F(【 】 ); return s; F(int x) return(【 】 );) 66 若有如下程序 : main() int x=5,y,*t;t= y=+(*t); printf(“%d,%d“,x,y); 则程序执行后的 x值为【 】, y的值为【 】。 67 下面函数用来求两个单精度数之和,并通过形参将结果传回,请填空。 void sub(float x, float y, 【 】 z) 【 】 =x+y; 国家二级( C语言)笔试模拟试卷 90答案与解析 1 【正确答案】 D 【试题解析】 线性链表是线性表的 链式存储结构,带链的栈与带链的队

28、列分别是栈与队列的链式存储结构。线性表属于线性结构,栈与队列是特殊的线性表,因此也属于线性结构。二叉链表是二叉树的链式存储结构,二叉树属于非线性结构。 2 【正确答案】 A 【试题解析】 深度为 m的二叉树最多有 2m-1个结点,满二叉树中叶子结点的个数为 2m-1个。本题中, 26-1=25=32。 3 【正确答案】 A 【试题解析】 先序遍历顺序应该为:访问根结点 先序遍历左子树 先序遍历右子树。按照定义,先序遍历序列是 ABDGCEHIF。 4 【正确答案 】 B 【试题解析】 模块化设计是指把一个大程序按人们能理解的大小规模进行分解。 5 【正确答案】 D 【试题解析】 结构化程序设计

29、中,要求把程序结构限制为顺序、选择和循环 3种基本结构,特点是:以控制结构为单位,只有一个入口和一个出口,接口简单,每个单位容易理解;缩小了程序静态结构与动态执行之间的差异,易于方便、正确地理解程序功能。 6 【正确答案】 D 【试题解析】 选项 A、 B、 C中的说法都正确。测试的目的是设法暴露程序中的错误和缺陷,它是程序执行的过程,目的在于发现错误;好的测 试在于能发现至今未发现的错误;成功的测试是发现了至今未发现的错误。 7 【正确答案】 A 【试题解析】 白箱 (盒 )测试是根据对程序内部逻辑结构的分析宋选取测试用例。白箱 (盒 )测试用例的设计准则有:语句覆盖、分支覆盖、条件覆盖和组

30、合条件覆盖。分支覆盖通过足够多的测试用例,使程序中的每个分支至少通过一次。分支覆盖准则比语句覆盖准则严密一些,选项 A正确;条件覆盖通过执行足够多的测试用例,使每个判定中的每个条件都能取到两种不同的结果 (“真 ”与 “假 ”)。虽然条件覆盖要比分支覆盖优越,但并不能完全满足分支覆盖 ,选项 B错误;组合条件覆盖要求通过足够多的测试用例,使每个判定中各条件的各种可能组合至少出现一次,它则既能满足分支覆盖准则,也能满足条件覆盖准则,但也不是完全测试,选项 C错误。 8 【正确答案】 C 【试题解析】 数据库设计是指,在已有数据库管理系统的基础上建立数据库的过程,选项 A与 B错误,选项 C正确。

31、 9 【正确答案】 B 【试题解析】 在关系模型的数据语言中,除了常规的集合运算外,还定义了一些专门的关系运算,如投影、选择、连接等运算。 10 【正确答案】 A 【试题解析】 在层次模型和网状模型的系统研究和数据库设计中,其性能和质量主要决定于设计者的经验和技术水平,缺乏一定的理论指导。关系模型有坚实的理论基础,它以数学理论为基础,从而避免了层次模型和网状模型系统中存在的问题。 11 【正确答案】 B 【试题解析】 算法是为解决某个特定问题而采取的确定的且有限的步骤,一个算法应当具有以下 5个基本特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。由此可知选项 B不正确,故 4

32、个选项中选项 B符合题意。 12 【正确答案】 A 【试题解 析】 结构化程序设计是由 3种基本结构组成的,它们是顺序结构、选择结构和循环结构。所以, A选项为所选。 13 【正确答案】 B 【试题解析】 一个完整的 C语言程序有且仅有一个主函数 (main()函数 )。程序总从 main()函数的第一条语句开始执行,到 main()函数的最后一条语句结束,其他函数都是在执行 main()函数时,通过函数调用或嵌套调用而得以执行的。 C语言规定, main()函数在程序中的位置是任意的,故选项 A、选项 C和选项 D均不正确。所以, B选项为所选。 14 【正确答案】 D 【 试题解析】 在

33、C语言中没有逻辑类型,逻辑类型用整型来表示,故选项 A和选项 C不正确: C语言中没有集合类型,故选项 B不正确。所以, D选项为所选。 15 【正确答案】 C 【试题解析】 赋值的一般形式为:变量名:表达式;,赋值的方向为由右向左,即将:右侧表达式的值赋给:左侧的变量,执行步骤是先计算再赋值。选项 A中运算符 %的运算对象必须为整数,而选项 A中 26.8不为整数,故选项 A不正确;选项 B将一个变量赋值给一个常量,这在 C语言中是不允许的,故选项 B不正确;选项 D中也是将一个常量 3赋值给一个常量,故选项 D不正确;所以, 4个选项中选项 C符合题意。 16 【正确答案】 D 【试题解析

34、】 自加运算对象可以是整型变量也可以是实型变量,但不能是表达式和常量。本题中, #defined2定义了 d为常数 2, d是符号常量不能进行自加运算。故选项 D是个不正确的语句。 17 【正确答案】 B 【试题解析】 优先级高于 =高于 ”在这条语句中 a加 1,但表达式 a+还是原来的值,故 s=s+5, s为 5,程序执行到外层,此时 内定义的变量 a不再有效,变量 a为 之前定义的且初值为 3,接着执行 后面的语句 “s+=a+;”,相当于执行语句 “s=s+(a+);”即 s=5+3,最后值为 8,所以输出的 s值为 8。故 4个选项中 A正确。 22 【正确答案】 C 【试题解析】

35、 y的初值为 -1,第一个 if语句的判断条件为 x!=0,即当 x!=0时 y的值变化, x=0时 y的值不变,仍为 -1。第二个 if语句的判断条件为 x O,如果 x 0则 y=1,否则 y=0,即 x O时, y=O。 4个选项中 C符合题意。 23 【正确答案】 B 【试题解析】 本题中使用 do-while循环,每执行一次循环体输出 x的值后将 x减1。当 x=23,执行循环体输出 x为 23, X=X-1=23-1=22,判断循环条件是否成立,因为 x=22, !x的值为 0,终止循环,因此只输出 23。 24 【正确答案】 C 【试题解析】 程序中由于 n为整型,所以 1/n的

36、结果始终为 0,故程序最后输出的结果为 0,其结果错误,原因为在表达式 1/n中 1和 n均为整型,所以应该将 1改为 1.0,这样表达式 1.0/n的值不为 0,为该数学表达式的值,因此可以知道导致程序运行后输出结果错误的行为 “s=s+1/n;”,所以, 4个选项中选项 C符合题意。 25 【正确答案】 C 【试题解析】 在本程序的 for循环中,用到了一个 continue语句, continue语句的作用是停止本次循环,不执行循环体内 continue语句后面的其他语句,继续下次循环的条件判断。首先在 for循环中 n自加 1(值变为 1),然后执行后面的 if语句,由于 if语句后面

37、括号的表达式 1%3!=0的值为真,程序执行 continue语句,回到 for循环的开始部分,并且判断 for循环中的条件表达式 (n k)为真,重复执行 “n+;”语句,如此循环直到 n=3时, if语句判定条件中表达式 3%3!=0的值为假,程序执行 if语句后面的 “k-;”语句,此时 k的值为 3,不满足 n k,退出 for循环。故最后的 k和 n的值为 3和 3,选项 C符合题意。 26 【正确答案】 B 【试题解析】 fun(int)fun(a+c,b),a-c)是用函数的返回值做实参。第一次调用fun(a+c,b),x+y=a+c+b=2+5+8=15,由于 函数 fun()

38、的返回值类型被定义为 float型,返回值为 15.000000,在主函数中被强制转换为 int型变为 15。第二次调用后fun(15,a-c), x+y=15+a-c =15+2-8=9,返回值为 9.000000,输出格式要求小数位为0且数据宽度为 3,则输出 9。 27 【正确答案】 C 【试题解析】 函数 f1()的作用是返回形参 x和 y的较大值,函数 f2()的作用是返回形参 x和 y的较小值,在 main()函数中通过调用两次 f1()函数,求得 a、 b、 c的最大值并存放在变量 d中,通过调用两次 f2()函数,求得 a、 b、 c的最小值并存放到变量 e中。由程序可知 d值

39、为 5, f的值为 4, e的值为 3,因此最后输出的 d、f、 e的值为 5、 4、 3。所以 C选项为所选。 28 【正确答案】 D 【试题解析】 C语言规定,在函数调用时变量作为参数传递是传值的,在函数体中对形参变量的修改不能影响到对应的实参变量。本题定义了一个函数 f(),用变量作为形参,在 main()函数中调用了 3次 f()函数,由于变量作为参数进行传递,所以对应的实参的值并没有被交换。故输出的 a、 b、 c依旧是原来的值 4、 3、 5。D选项为所选。 29 【正确答案】 D 【试题解析】 选项 A定义了一个整型变量 i,并且初始化让它指向 NULL,接着通过 scarnf(

40、)函数,改变 i指向的存储空间的值,选项 A中首先定义了整型指针变量 i并初始化为 NULL,即表示指针 i不指向任何存储单元,即此时还没有为 i在内存中开辟存储单元,而在 scanf()函数中第二个参数是地址参数,显然在这里 i不表示地址,所以下面的 scanf(“%d“,i)语句是不正确的,故选项 A不正确。选项B定义了一个实型指针变量 f并初始化使它指向 NULL,即还没有为 f在内存中开辟存储单元,不能向 *f代表的存储单元 (不存在 )中写数据,故选项 B错误;选项 C中首先定义了一个字符变量 t并给它赋初值 m,然后定义一个字符型指针 c并让它指向了变量 t,这一部分正确,然后接着

41、用了一个语句 “*c=”应该将该语句中c前的 *去掉,故选项 C运用指针变量不正确。选项 D中的 0是一个转移字符,称作 “空值 ”,可以给指针变量 L赋值。所以, 4个选项中选项 D符合题意。 30 【正确答案】 A 【试题解析】 在 C语言中 NULL的 ASCII码值为 0,而输出函数要求以整形格式输出,故最后的输出数为 0。所以, 4个选项中选项 A符合题意。 31 【正确答案】 C 【试题解析】 用单引号括起来的 介字符称为字符常量,而选项 B和选项 D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项 B和选项 D不正确。因为在 C语言中,字符常量在存储时,并不是把该字符本

42、身放到内存单元中去,而是将该字符的相应 ASCII代码放到存储单元中,所以 C语言使字符型数据和整形数据之间可以通用,选项 C正确。而选项 A中,给字符型变量赋值时只能赋一个字符, 9, 7作为字符时为两个字符且必须分别为单引号括起来,故选项 A不正确,所以, 4个选项中选项 C符合题意 。 32 【正确答案】 D 【试题解析】 在定义中如果对所有元素赋初值,其第 1维的长度可以省略,故选项 B正确;二维数组初始化也可以只对每行或前若干个行的前若干个元素赋初值,故选项 A和选项 C正确:在二维数组定义时不能省略第二维的长度,故选项D错误。所以, 4个选项中选项 D符合题意。 33 【正确答案】

43、 C 【试题解析】 a35是一个二维数组,它也可以看成是一个有 3个元素的一维数组 a0、 a1、 a2,同时这 3个元素也是一维数组,分别保存字符串 “name”、“age”、 “sex”。 for循环循环 3次,输出 3个字筘串 “name”、 “age”、 “sex”。所以, C选项为所选。 34 【正确答案】 C 【试题解析】 变量 k的初值为 2,循环执行了 3次,分别输出 m20、 m21和 m22,其值分别为 3、 6、 9。所以, C选项为所选。 35 【正确答案】 B 【试题解析】 用 a+b替代宏 H(x)中的参数 x,用 5替代 N,则(N+2)*x)=(5+2)*a=b

44、)=(5+2)*2+3)=17。 36 【正确答案】 C 【试题解析】 本题在定义字 符数组时没有定义数组长度,但用字符常量给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为 6(包括 0)。字符串的长度为有效字符的个数 5。 strlen(s)返回值为串中字符的个数 (不计最后的 0),则输出值为 5。 sizeof (s)计算数组所占的字节数,包含 0,则输出值为 6。因此, C选项正确。 37 【正确答案】 C 【试题解析】 在函数 fun()中有两个字符型指针变量 s1和 s2,在函数中程序执行while循环,该循环退出条件有两个:一个是 s1i!=s2i(两个字符串 不相等

45、);第二个是 s1i和 s2i相等均为 0(两个字符串相等 )。循环退出后,执行 return语句,即两个字符串相等则返回 1,不相等则返回 0。所以, C选项为所选。 38 【正确答案】 B 【试题解析】 若在函数中定义与全局变量名字相同的局部变量,则全局变量在该函数中将不起作用,因此全局变量的作用域并不一定比局部变量的作用域大,故选项 A不正确;静态变量一旦定义,将在整个程序的运行期间都存布,故选项 B正确;函数的形参只在函数调用的时候分配存储空间,在退出函数时收回存储空间,因此是局部的,故选项 C不正确;没有赋值的 auto型变量的初值是随机的,没有赋值的 static型变量的初值是 0

46、,故选项 D不正确。所以, B选项为所选。 39 【正确答案】 A 【试题解析】 本题定义了一个结构体类型并自定义类型名为 STD,用户自定义类型后,就可以利用它进行变量与数组的定义。定义的方法,与 C语言中其他类型的定义完全一样,定义结构型数组并赋初值时,每个元素用一对 和 括起来,字符型元素用,括起来,选项 A、 B、 C、 D中只有选项 A符合条件。所以, A选项为所选。 40 【正确答案】 A 【试题解析】 结构体 变量所占的存储空间是各个分量所占空间的总和。共用体变量中的所有成员占有同一个存储空间,其字节数与成员中占字节数最多的那个成员相等。 m占 2个字节, f占 4个字节,因此结

47、构体变量 a所占的存储空间为 6字节。 k6占 6个字节, d占 8个字节。共用体变量 b所占的存储空间与占存储空间最多的 d所占存储空间的字节数相同。所以, A选项为所选。 41 【正确答案】 C 【试题解析】 定义结构体类型的变量的方式有: 紧跟在结构体类型说明之后进行定义,如题目中给出的; 在说明对结构成员的引用形式为 结构体变量名成员名 选项 A对结构成员的引用的形式是错误的, Test是结构体名,不能用来引用结构成员。选项 B中定义结构体类型的变量的形式是错误的, Test是结构体名,不能用宋定义结构体类型的变量。选项 D中对结构成员的引用的形式是错误的,对结构成员的引用的形式为:结构体变量名成员名。 4个选项中只有选项 C是正确的定义或引用。 42 【正确答

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

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

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