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

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

1、国家二级( C语言)笔试模拟试卷 22及答案与解析 1 算法中的每一个步骤都必须是有明确意义的,不允许有模棱两可的解释,也不允许有多义性。算法的这个性质称为 _。 ( A)可行性 ( B)有穷性 ( C)正确性 ( 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)改正错误 ( C)改善软件的性能 ( D)挖掘软件的潜能 7 数据库是 _的集合,它具有统一的结构形 式并存放于统一的存储介质内,可被各个应用程序所共享。 ( A)视图 ( B)消息 ( C)数据 ( D)关系 8 下列叙述中不正确的是 ( A)数据库技术的根本目标是要解决数据共享的问题 ( B)数据库系统中,数据的物理结构必须与逻辑结构一致

3、( C)数据库设计是指设计一个能满足用户要求,性能良好的数据库 ( D)数据库系统是一个独立的系统,但是需要操作系统的支持 9 规范化理论中,分解 _主要是消除其中多余的数据相关性。 ( A)关系运算 ( B)内模式 ( C)外模式 ( D)视图 10 在软件设计中,不属于过程设计工具的是 ( A) PDL(过程设计语言 ) ( B) PAD图 ( C) N-S图 ( D) DFD图 11 以下选项中可作为 C语言合法整数的是 ( A) 10110B ( B) 386 ( C) 0Xffa ( D) x2a2 12 以下不能定义为用户标识符的是 ( A) scanf ( B) Void ( C

4、) _3com_ ( D) int 13 请选出可以作为 C语言用户标识符的一组标识符号 ( A) void define WORD ( B) a3_b3 _123 1F ( C) for abc case ( D) 2a D0 sizeof 14 下列描述中正确的是 ( A)程序就是软件 ( B)软件开发不受计算机系统的限制 ( C)软件既是逻辑实体,又是物理实体 ( D)软件是程序、数据与相关文档的集合 15 有定义语句: “int x, y; ”,若要通过 “scanf(“%d,%d,,则表达式 !(x+y)+z-1 printf(“%d%d“,m+,+n); printf(“%d%dn

5、“,n+,+m); ) 程序运行后的输出结果是 ( A) 12353514 ( B) 12353513 ( C) 12343514 ( D) 12343513 24 有以下程序 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 25 若有一些定义和语句 #include st

6、dio.h int a=4, b=3, *p,*q,*w; p= q= w=q; q=NULL; 则以下选项中错误的语句是 ( A) *q=0; ( B) w=p; ( C) *p=a; ( D) *p=*w; 26 以下能正确定义且赋初值的语句是 ( A) int n1=n2=10: ( B) char c=32; ( C) float f=f+1.1 ( D) double x=12.3E2.5: 27 以下程序中函数 sort的功能足对 a所指数组中的数据进行 由大到小的排序 void sort(int a,int n) int i,j,t; for(i=0;i n-1;i+) for(

7、j=i+l,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, 28 若有以下程序 #include stdio.h void f(int n); main(

8、) ( void f(int n); f(5); void f(int n) printf(“%dn“,n); 则以下叙述中不正确的是 ( A)若只在主函数中对函数 f进行说明,则只能在土函数中正确调用函数 f ( B)若在主函数前对函数 f进行说明,则在主函数和其后的其他函数中都可以正碗调用函数 f ( C)对于以上程序,编译时系统会提示出错信息:提示对 f函数重复况明 ( D)函数 f无返回值,所以可用 void将其类型定义为无 值型 29 有以下程序 main() int p8=11,12,13,14,15,16,17,18, i=0, j=0; while(i+ 7) if(pi%2)

9、 j+=pi; prizltf(“%dn“, j); 程序运行后的输出结果是 ( A) 42 ( B) 45 ( C) 56 ( D) 60 30 有以下程序段 int k=0, a=1, b=2, c=3; k=a b ? b:a; k=k c ? c:k; 执行该程序段后, k的值是 ( A) 3 ( B) 2 ( C) 1 ( D) 0 31 设变量 a, b, c, d和 y都已正确定义并赋值。若有以下 if语句 if (a b) if(c=d) y=0; else y=1; ( A) ( B) ( C) ( D) 32 若指针 p已正确定义,要使 p指向两个连续的整型动态存储单元,不

10、正确的语句是 ( A) p=2*(int*)malloc(sizeof(int); ( B) p=(int*)mall0c(2*sizeof(int); ( C) p=(int*)malloc(2*2); ( D) p=(int*)calloc(2,sizeof(int); 33 程序中头文件 typel.h的内容是 #define N 5 #define M1 N*3 #define “typel .h“ #define M2 N*2 main ( ) int i; i=M1+M2; printf (“%dn“, i ); 程序编 译后运行的输出结果是 ( A) 10 ( B) 20 ( C

11、) 25 ( D) 30 34 已有定义 : int i,a10,*p;, 则合法的赋值语句是 ( A) p=100; ( B) p=a5 ( C) p=a2+2 ( D) p=a+2; 35 以下不能正确进行字符串赋初值的语句是 ( A) char str5=“good!“; ( B) char str=“good!“; ( C) char*srt=“good!“; ( D) char str5= g, o, o, d; 36 有以下程序 struc t STU char name 10 int num; void f1(struct STU c) struct STU b=“LiSiGuo

12、“,2042; c=b; void f2(struct STU *c) struct STU b=“SunDan“,2044); *c=b; main ( ) struct STU a=“YangSan“,2041,b=“WangYin“,2043; f1 (a); f2 ( printf ( “%d %dn“ ,a.num,b.num); 执行后输出结果是 ( A) 2041 2044 ( B) 2041 2043 ( C) 2042 2044 ( D) 2042 2043 37 有以下程序 main ( ) char str =“xyz“, *ps=str; while (*ps) ps+

13、: for (ps- ;ps-str =0 ;ps-) puts(ps); 执行后输出结果是 ( A) yz xyz ( B) z yz ( C) z yz xyz ( D) x xy xyz 38 以下程序的输出结果是 f(int b ,int m, int n) int i,s=0; for (i=m; i n; i=i+2) s=s+b i; return s; main ( ) int x,a=1,2,3,4,5,6,7,8,9; x=f(a,3,7); printf ( “%dn“, x); ( A) 10 ( B) 18 ( C) 8 ( D) 15 39 有以下程序 void f

14、unint *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,4,5,6,i; fun(a,0,5); for (i=0; i 6; i+ ) printf (“%d“ , a i ); 执行后输出结果是 ( A) 6 5 4 3 2 1 ( B) 4 3 2 1 5 6 ( C) 4 5 6 1 2 3 ( D) 1 2 3 4 5 6 40 有以 下程序 void fun(int *a,int i,int j) int t; if (i j) t=ai; ai=aj

15、; aj=t; i+; j-; fun(a,i, j); ) main ( ) int x=2,6,1,8,i; fun(x,0,3); for(i=0;i 4;i+) printf(“%2d“,xi); printf(“n); 程序运行后的输出结果是 ( A) 1 2 6 8 ( B) 8 6 2 1 ( C) 8 1 6 2 ( D) 8 6 1 2 41 以下语句或语句组中,能正确进行字符串赋值的是 ( A) char *sp; *sp=“right!“; ( B) char s10; s=“right!“; ( C) char s10; *s=“right!“; ( D) char *

16、sp=“right!“; 42 有以下程序 void swapl(int c0,int c1 int t; t=c00; c00=c10; c10=t; void swap2 (int *c0,int *c1) int t; t-*c0; *c0=*c1; *c1=t; main() int a2=3,5, b2=3,5 swapl(a,a+1); swap2( printf(“%d %d %d %dn“,a0,a1,b0,b1); 程序运行后的输出结果是 ( A) 3 5 5 3 ( B) 5 3 3 5 ( C) 3 5 3 5 ( D) 5 3 5 3 43 有以下程序 #include

17、 stdlib.h gtruet NODE int num; struct NODE *next; ; main() struct NODE *p,*q,*r; p=(struct NODE*)malloc(sizeof (struct NODE); q=(struct NODE*)malloc(sizeof (struct NODE); r=(struct NODE*)malloc(sizeef (struct NODE); p- num=10; q- num=20; r- num=30; p- next=q; q- next-r; printf(“%dn“,p- num+q- next-

18、num); 程序运行后的输出结果是 ( A) 10 ( B) 20 ( C) 30 ( D) 50 44 有以下程序 struet STU char name10; int num; int Score; ; main() struct STU s5-“YangSan“,20041,703,(“LiSiGuo“,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+) i

19、f(pi Score pj Score) t=pi;pi=pj;pj-t; printf(“%d %dkn“,s1.Score,p1- Score); 执行后输出结果是 ( A) 550 550 ( B) 680 680 ( C) 580 550 ( D) 580 680 45 设 char型变量 x中的值为 10100111, 则表达 (2+x) ( 3)的值是 ( A) 10101001 ( B) 10101000 ( C) 11111101 ( D) 1010101 46 有以下程序 #include stdlib.h main() char *p,*q; p=(char*)malloc

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

21、=#) fputc(ch,fout); ch =fgetc(stdin); fclose(fout); 出错的原因是 ( A)函数 fopen调用形式有误 ( B)输入文件没有关闭 ( C)函数 fgetc调用形式有误 ( D)文件指针 stdin没有定义 48 以下与函数 fseek(fp,0L,SEEK_SET)有相同作用的是 ( A) feof(fp) ( B) ftell(fp) ( C) fgetc(fp) ( D) rewind(fp) 49 有以下程序 #include stdio.h void WriteStr(char *fn, char *str) FILE *fp; fp

22、=fopen(fn,“w“); fputs(str,fp);fclose(fp); main() WriteStr(“t1.dat“,“start“); WriteStr(“t1.dat“,“end“); 程序运行后,文件 t1.dat中的内容是 ( A) start ( B) end ( C) startend ( D) endrt 50 以下程序的功能是进行位运算 main ( ) unsigned char a, b; a=73; b= 4 printf (,%d %dn“ ,a,b); 程序运行后的输出结果是 ( A) 4 3 ( B) 7 3 ( C) 7 0 ( D) 4 0 51

23、 算法的复杂度主要包括空间复杂度和 _复杂度。 52 在面向对象方法中,类的实例称为 _。 53 对于软件测试,从是否需要执行被测软件的角度,可以分为静态测试和动态测试。代码检查属于 _测试。 54 实体联系模型是一种常用的高级概念数据模型,而 _是实体联系模型中的核心。 55 一个项目具有一个项目主管,一个项目主管叫 管理多个项目,则实体 “主管 ”与实体 “”的联系属于 _。 56 以下程序运行时若从键盘输入: 10 20 30回车。输出结果是【 】。 #include stdio.h main() int i=0,j=0,k=0; scanf(“%d%*d%d“, 57 以下程序运行后的

24、输出结果是【 】。 #define S(x)4*x*x+1 mah() int i=6,j=8; printf(“%dn“,S(i+j); 58 以下程序的输出结果是【 】。 main() int a=0; a+=(a=8); printf(“%dn“,A) ; 59 以下程序的输出 结果是【 】。 #include stdio.h main() int n=12345,d; while(n!=0) d=n%10; printf(“%d“,D) ; n/=10; 60 以下程序的功能是计算: s=1+12+123+1234+12345。请填空。 main() int t=0,s=0,i; fo

25、r(i=1;i =5;i+) t=i+【 】 ;s=s+t; printf(“s=%dn“,s); 61 已知字母 A的 ASCII码为 65。以下程序运行后的输出结果是【 】。 main() char a,b; a=A+5-3; b=a+6-2; printf(“%d %cn“,a,B) ; 62 以下函数 fun的功能是返回 str所指字符串中以形参 c中字符开头的后续字符串的首地址,例如; str所指字符串为: Hello!, c中的字符为 e,则函数返回字符串: ello!的首地址。若 str所指字 符串为空串或不包含 c中的字符,则函数返回NULL。请填空。 char*fun(cha

26、r *str,char c) int n=0; char *p=str; if(p!=NULL) while(pn!=c i K;i+) 64 以下程序的输出结果是【 】。 main() int x=0; sub( i1=1000/s(N);i2=1000/f(N); printf(“%d %dn“,il,i2); 66 下列程序中的函数 stropy2()实现字符串两次复制,即将 t所指字符串复制两次到 s所 指内存空间中,合并形成一个新字符串。例如,若 t所指字符串为: efgh,调用 strcpy2后, s所指字符串为: efghefgh。请填空。 #include stdio.h #i

27、nclude string.h void strcpy2(char *s,char *t) char *p=t; while(*s+=*t+); s=【 】 ; while(【 】 =*p+); main() char str1100=“abed“,str2=“efgh“; strcpy2(str1,str2); printf(“%sn“,str1); 67 以下程序中函数 huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串: yes!,否则函数返回字符串: no!,并在主函数中输出。所谓回文即正向与反向的拼写都一样,例如: adgda。请填空。 #include

28、string.h char*huiwen(char *str) char *p1,*p2; int i,t=0; p1=str; p2=【 】 ; for(i=0;i =strlen(str)/2;i+) if(*p1+!=*p2-)t=1;bteak; if(【 】 )return(“yes!“); else return(“no!“); main() char sb50; printf(“Input:“); scanf(“%s“,str); ptintf(“%sn“, 【 】 ); 国家二级( C语言)笔试模拟试卷 22答案与解析 1 【正确答案】 D 【试题解析】 算法中的每一个步骤都必

29、须是有明确意义的,不允许有模棱两可的解释,也不允许有多义性。算法的这个性质即为算法的确定性。 2 【正确答案】 B 【试题解析】 线性表的链式存储结构中的每一个存储结点不仅含有一个数据元素,还包括指针,每一个指针指向一个与本结点有逻辑关系的结点。此类存储方式属于顺序存储。 3 【正确答案】 B 【试题解析 】 栈是限定在一端进行插入与删除的线性表,栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照 “先进后出 ”或 “后进先出 ”的原则组织数据的,这便是栈的记忆作用,所以选项 A和选项 c正确对栈进行插入和删除操作时

30、,栈顶位置是动态变化的,栈底指针不度,选项 D正确。由此可见,选项B的描述错误。 4 【正确答案】 A 【试题解析】 B选项错误,符号名应该能反映出它所代表的实际东西,应有一定的意义,不是简单的符合语法就可以 C选项不对, 应该在保证程序正确的情况下再考虑程序的执行效率。 D选项错误,程序的注释有益于对程序的理解和维护,好的程序必不可少。 A选项正确。 5 【正确答案】 D 【试题解析】 软件工程三要素是方法、工具和过程。 6 【正确答案】 B 【试题解析】 在对程序进行了测试以后进入程序调试调试的任务是诊断和改正程序中的错误。它与软件测试不同,软件测试是尽可能多地发现软件中的错误。 7 【正

31、确答案】 C 【试题解析】 数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系 -故答案为 C。 8 【正确答案】 B 【试题解析】 B选项错误,原因是,数据库应该具有物理独立性和逻辑独立性,改变其一而不影响另一个。 9 【正确答案】 A 【试题解析】 数据库规范化的基本思想是逐步消除数据依赖中不合适的部分,根本思想是通过分解关系运算来消除多余的数据相关性。 10 【正确答案】 D 【试题解析】 数据流图 DFD,是结构化 分析方法最主要的一种图形工具,不属于过程设计工具。 11 【正确答案】 C 【试题解析】 本题考核的

32、知识点是整数及常数的表示方法。在 C语言中,整数常量可以用十进制、八进制和十六进制来表示,选项 A为二进制表示,故选项 A不正确;选项 B是八进制表示法,但在八进制数中,各个位数只能为数字。到 7中的一个,而在选项 B中,有一个数字 8,故选项 B不正确;选项 C为十六进制表示法正确:选项 D中也为十六进制表示法,但十六进制数以 Ox开头,故选项D不正确,所以, 4个选项中选项 c符合题意。 12 【正确答案】 D 【试题解析】 本题考核的知识点是用户标识符的定义。在 C语言中,合法的标识符由字母、数字和下划线组成,并且第 1个字符必须为字母或下划线。选项 D中 int为 C语言中的保留字,不

33、能作为用户的标识符;选项 A、 B、 C都为合法的标识符所以, 4个选项中选项 D符合题意。 13 【正确答案】 B 【试题解析】 本题考核的知识点是用户标识符的定义。在 C语言中,合法的标识符可以由字母、数字和下划线组成,其中关键字不能作为用户的标识符,且开头的第一个字符必须为字母或下划线。选项 A中 void为关键字,故选项 A不正确:选 项 C中 for和 case为关键字,故选项 C不正确:选项 D中 sizeof为关键字,故选项 D不正确。所以, 4个选项中选项 B符合题意。 14 【正确答案】 D 【试题解析】 计算机软件是计算机系统中与硬件相互依存的另一部分,包括程序、数据及相关

34、文档的完整集合。选项 D的描述正确。 15 【正确答案】 A 【试题解析】 本题考核的知识点是 scanf()函数的运用。 seanf()函数有两个参数,第一个参数为输入格式字符串,第二个参数为输入变量地址列表,在 scallf()语句中非格式字符可以作为输入时数 据的间隔,输入时必须原样输入,在本题中输入格式串为 %d, %d其中 “, ”为非格式字符,所以输入时必须原样输入。所以 4个选项中选项 A符合题意。 16 【正确答案】 C 【试题解析】 本题考查的知识点是表达式的表示。在该题中, x的 n次方应该调用函数 pow(x,n)计算,故选项 A、 B排除。而在选项 D中, pow(x,

35、n)的参数写反了。选项 C正确。 17 【正确答案】 D 【试题解析】 本题考核的知识点是 c语言中的数据类型。在选项中很明显选项 A为无符号短整型,选项 B为无符号长整型,选项 C为无符号 整型,而选项 D的类型在 C语言中不存在。所以, 4个选项中 D为所选。 18 【正确答案】 A 【试题解析】 本题考核的知识点是 scanf()函数的使用。 seanf()函数有两个参数,第一个参数是输入格式字符串,第二个参数是输入变量地址列表输入格式字符串主要由 “%”符号和格式字符组成。地址列表是由多个地址组成的。选项 B中 d已经为地址,不应在加上求地址符号 “&”,故选项 B不正确;选项 C中,

36、 a和 b都为变量不是地址,应该在 a和 b之前加上求地址符号 “&”,故选项 C不正确;选项 D中指针 d所指向的存储空间的位置 为变量 c的值,不为地址,故选项 D不正确,所以, 4个选项中 A为所选。 19 【正确答案】 D 【试题解析】 本题考查的知识点是 !和 &的运算规则本题中, &左边的表达式 !(x+y)为 ! (3+7),结果为假,即为 0。再加上 2,然后减一,相当于 0+5-1=4。左边等于 4, &右边的表达式 y+z/2相当于 4+5/2为 6,所以整个表达式相当于4&6为真, 即为 1,所以选项 D正确。 20 【正确答案】 B 【试题解析】 本题考核的知识点是 c

37、语言中的保留字,而 define不是保留宇。用户标 识符不允许使用保留字,故选项 A和选项 C以及选项 D均不正确。所以, 4个选项中 B为所选。 21 【正确答案】 B 【试题解析】 本题考查的是 C语言中实型常量的指数表示法。实型常量的指数表示法是用字母 e(或 E)将一个实数的小数部分和指数部分分隔开。字母 e(或 E)之前是小数部分,之后是指数部分,这两部分都不能省略,且指数部分必须为整数。故选项 B不正确。所以, 4个选项中选项 B符合题意。 22 【正确答案】 D 【试题解析】 本题考核的知识点是函数调用的基本概念。在 C语言中规定:有返回值的函数调用, 可以作为表达式或表达式的一

38、部分,也可以作为二条语句,故选项 A和选项 C正确:而有返回值的函数调用只能作为一个函数的实参 (即将其返回值传给相应的形参 ),而不能作为形参 (因为行参是在函数定义时说明的 ),故选项 B正确选项 D不正确。所以, 4个选项中选项 D符合题意。 23 【正确答案】 A 【试题解析】 本题考查的是自加运算符的运用。自加运算符有前缀和后缀两种不同的形式,对于变量本身来说,无论是前缀还是后缀其作用的效果都是相同的,使变量值增 1。但作为表达式来说却有着不同的值,前缀时自增表达式的值是变量增 1,后 的值,而后缀时自增表达式的值是变量增 1前的值。本题程序开始定义了两个整型变量 m和 n,并分别初

39、始化为 12和 34第一条输出语句是按整型格式输出表达式 m+和 +n的值,根据前面所述,表达式 m+的值为 12, +n的值为35,所以第一次输出的字符串是 “1235“,执行完后 m和 n的值都自增 1,分别是13和 35接下来第二条输出语句也是按整型格式输出表达式 n+和 +m的值,分别是 35和 14,故最终的输出应该为 “12353514”,所以, 4个选项中选项 A符合题意。 24 【正确答案】 D 【试题解析】 本 题考核的知识点是函数的定义、调用方式以及参数的传递。 C语言规定,在函数调用时变量作为参数传递是传值的,在函数体中对形参变量的修改不能影响到对应的实参变量。本题定义了

40、一个函数 f(),用变量作为形参,在main()函数中调用了 3次 f()函数,由于变量作为参数进行传递,所以对应的实参的值并没有被交换。所以输出的 a、 b、 c依旧是原来的值 4, 3、 5。所以, D选项为所选。 25 【正确答案】 A 【试题解析】 本题考核的知识点是指针变量的使用与空指针 (NULL)基本概念本题中定义了 3个指向整型的指针变量 p、 q、 w,并让 p指向 a,让 q指向b,通过将 q的值赋给 w,使 w也指向 b,最后将 NULL赋值给 q。由整形变量指针的定义可知,可以给整型指针指向的变量赋一个常数值 (表达式 ),故选项 C和选项 D是正确的;可以给指针变量赋

41、一个同种类型的指针变量 (或地址值 ),故选项 B也是正确的;选项 A错误,因为 q不指向任何变量,给一个空指针指向的单元赋值是错误的。所以, A选项为所选。 26 【正确答案】 B 【试题解析】 本题考查的知识点是变量赋初值选项 A中的语句只能起定义 n1的作用,而 n2=10是 n1的初始值表达式,但因前 面没有定义过 n2,所以编译会报错 “n2未定义 ”,故不正确。选项 B使用一个整数初始化一个字符变量是正确的,因为字符变量中保存的本来就是整数 (某字符的 ASCII码值 )。选项 C定义的初始值表达式中出现了它自身,某些编译器能通过编译,但 f在初始化之前是一个未知的值,用未知值来初

42、始化也还是未知值,这是不可取的。选项 D的初始值是一个非法常量,因为实型常量指数形式的指数部分必须为整数,这里的 2.5非法。 27 【正确答案】 C 【试题解析】 本题考查的知识点是数组名作为函数的参数以及函数与排序算法结合在一起的 综合应用本题中首先定义一个长度为 10的一个整型数组,并初始化为 “1, 2, 3, 4, 5, 6, 7, 8, 9, 10”,然后调用排序函数 sort(),通过分析不难看出, sort() 数是对具有 n个元素的 a数组进行从大到小排序由于函数的第一个参数是数组名,其对应的实参可以是函数名或地址。本题在调用该函数时,实参是 &aa3)的地址,即把 aa3的

43、地址传给 ?行参数蛆名 a,函数也就是对 aa3开始的 5个元素进行从大到小的排序, aa0。 aa1, aa2、 aa8、 aa9并没有变化 Sort()执行 完毕后,接着执行后面的 for语句输出数组 aa中各个元素的值,由于函数 sort()只是对 aa3开始的 5个元素进行从大到小的排序, aa0、 aa1、aa2、 aa8、 aa9并没有变化,所以输出为 “1, 2, 3, 8, 7, 6, 5, 4, 9,10”。所以 4个选项中 C正确。 28 【正确答案】 C 【试题解析】 本题考核的知识点是函数说明的方法。若一个函数定义在主调函数之后,其返回值不是 int或 char型,则必

44、须对之进行函数说明。可在函数外说明也可以在函数内说明,在函数外说明,在其后的所有函 数均可调用该函数,若在函数内说明,则只能在本函数内调用该函数。函数只能定义一次,但函数说明可以出现多次,因此选项 C是错误的。所以, 4个选项中 C为所选。 29 【正确答案】 B 【试题解析】 本题考查的是 while语句和 if语句的综合应用。程序中 while的循环条件是 1+ 7,由于程序开始时将 i初始化为 0,而且循环体中没有改变变量 i的语句,只有循环条件中 i的自增,所以当 i从 0自增到 6时循环的循环体一共被执行了 7次,但是在循环体中, i的值为从 1到 7。在循环体中只有一条 if语句,

45、其条件表达式为 pi%2,当 pi为奇数时, pi除以 2余 1,条件表达式的值为“真 ”,所以整个循环语句所做的事就是:累计 p1到 p7之间的奇数到变量 j中。所以最后 j的值应该为 13+15+17=45选项 B符合题意。 30 【正确答案】 B 【试题解析】 本题考查的知识点是条件表达式条件运算符 ?:是 C语言中唯一的三目运算符,它的规则是先计算左边运算分量,如果为 “真 ”(非 0),则返回中间运算分量的值,否则返回右边运算分量的值。本题中因为 a b为 “真 ”,所以第 1个条件表达式的值为 b的值 2,所以 k=2。然后又因 为 k c为 “假 ,所以第 2个表达式的值为 k的

46、值 2。所以本题应该选择 B。 31 【正确答案】 C 【试题解析】 本题考查的是 if语句的嵌套。解此类题目只需记住 else子句总是与前面最近的不带 else的 if相结合,切不可轻信试卷上的缩进格式。另外,花括号括起来部分相当于一条语句,外部 else不可与内部的 if结合,应把整个花括号部分看成一条普通语句所以题目中的嵌套讧语句的意思是 “在 a b的前提下,如果 c=d就让 y=0,如果 c!=d就让 y=1。 ”所以应该选择 C。 32 【正确答案】 A 【试 题解析】 本题考核的知识点是 manoc()函数的应用。该函数的调用格式是“malloc (n)”,作用是申请 n个字符的存储单元并把该存储区的首地址作为返回值,实际调用的时候可在前面加上 “(类型说明符 *)”,以转换成需要的类型的地址。选项 D多

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

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

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