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

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

1、国家二级( C语言)笔试模拟试卷 84及答案与解析 1 下列关于算法的时间复杂度陈述正确的是 ( A)算法的时间复杂度是指执行算法程序所需要的时间 ( B)算法的时间复杂度是指算法程序的长度 ( C)算法的时间复杂度是指算法执行过程中所需要的基本运算次数 ( D)算法的时间复杂度是指算法程序中的指令条数 2 下列关于栈的叙述中,正确的是 ( A)在栈中只能插入数据 ( B)在栈中只能删除数据 ( C)栈是先进先出的线性表 ( D)栈是先进后出的线性表 3 设有下列二叉树: 对此二叉树中序遍历的结果是 ( A) ABCDEF ( B) DABECF ( C) BDAECF ( D) DBEFCA

2、 4 结构化程序设计的一种基本方法是 ( A)筛选法 ( B)递归法 ( C)归纳法 ( D)逐步求精法 5 函数重载是指 ( A)两个或两个以上的函数取相同的函数名,但形参的个数或类型不同 ( B)两个以上的函数取相同的名字和具有相同的参数个数,但形参的类型可以不同 ( C)两个以上的函数名字不同,但形参的个数或类型相同 ( D)两个以上的函数取相同的函数名,并且函数的返回类型相同 6 在数据库的两级映射中, 从概念模式到内模式的映射一般由 ()实现。 ( A)数据库系统 ( B)数据库管理系统 ( C)数据库管理员 ( D)数据库操作系统 7 下面不属于软件设计原则的是 ( A)抽象 (

3、B)模块化 ( C)自底向上 ( D)信息隐蔽 8 支持数据库各种操作的软件系统叫做 ( A)数据库管理系统 ( B)文件系统 ( C)数据库系统 ( D)操作系统 9 在关系数据模型中,通常可以把 ()称为属性,其值称为属性值。 ( A)记录 ( B)基本表 ( C)模式 ( D)字段 10 用树形结构来表示实体 之间联系的模型称为 ( A)关系模型 ( B)层次模型 ( C)网状模型 ( D)数据模型 11 算法具有五个特性,以下选项中不属于算法特性的是 ( A)有穷性 ( B)简洁性 ( C)可行性 ( D)确定性 12 以下选项中可作为 C语言合法常量的是 ( A) -80 ( B)

4、-80 ( C) -8e1.0 ( D) -80.0e 13 以下叙述中正确的是 ( A)用 C程序实现的算法必须要有输入和输出操作 ( B)用 C程序实现的算法可以没有输出但必须要输入 ( C)用 C程序实现的算法可以没有输入但必须 要有输出 ( D)用 C程序实现的算法可以既没有输入也没有输出 14 以下不能定义为用户标识符的是 ( A) Main ( B) _0 ( C) _int ( D) sizeof 15 以下选项中不能作为合法常量的是 ( A) 1.234e04 ( B) 1.234e0.4 ( C) 1.234e+4 ( D) 1.234e0 16 数字字符 0的 ASCII值

5、为 48,若有以下程序 main() char a=1,b=2; printf(“%c,“,b+); printf(“%dn“,b-A) ; 程序运行后的输出结果是 ( A) 3, 2 ( B) 50, 2 ( C) 2, 2 ( D) 2, 50 17 有以下程序 main() int m=12, n=34; printf(“%d%d“,m+,+n); printf(“%d%dn“,n+,+m); 程序运行后的输出结果是 ( A) 12353514 ( B) 12353513 ( C) 12343514 ( D) 12343513 18 有定义语 句: iht b;char c10;,则正确

6、的输入语句是 ( A) scanf(“%d%s“, printf(“%d,%dn“,a,b); 程序运行后的输出结果是 ( A) 6, 1 ( B) 2, 1 ( C) 6, 0 ( D) 2, 0 21 以下程序中与语句 k=a b?(b c?1:0):0;功能等价的是 ( A) if(a b) int i; for(i=1;i 3;i+) scanf(“%c“,i 10;i+=2)s+=i+1, printf(“%dn“,s); 程序执行后的输出结果是 ( A)自然数 1 9的累加和 ( B)自然数 1 10的累加和 ( C)自然数 1 9中奇数之和 ( D)自然数 1 10中偶数之和 2

7、5 有以下程序 main() int i,n=0; for(i=2;i 5;i+) do if(i%3)continue; n+; while(!i); n+; printf(“n=%dn“,n); 程序执行后输出结果是 ( A) n=5 ( B) n=2 ( C) n=3 ( D) n=4 26 若程序中定义了以下函数 double myadd(double a,double b) return(a+b) ; 并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是 ( A) double myadd(double a,b) ; ( B) double myadd(do

8、uble,double); ( C) double myadd(double b,double a) ; ( D) double myadd(double x, double y); 27 有以下程序 char fun(char x,char y) if(x y)return x; return y; main() int a=9,b=8,c=; printf(“%cn“,fun(fun(a,b) ,fun(b,c) ); 程序的执行结果是 ( A)函数调用出错 ( B) 8 ( C) 9 ( D) 7 28 设有定义: int n=0,*p=,则以下选项中,正确的赋值语句是 ( A) p=1

9、; ( B) *q=2; ( C) q=p; ( D) *p=5; 29 有以下程序 void f(int v,int w) int t; t=v;v=w;w=t main() int x=1,y=3,z=2; if(x y) f(x,y); else if(y z) f(y,z); else f(x,z); pfintf(“%d,%d,%dn“,x,y,2); 执行后输出结果是 ( A) 1, 2, 3 ( B) 3, 1, 2 ( C) 1, 3, 2 ( D) 2, 3, 1 30 有以下程序段 int a 10=1, 2, 3, 4, 5, 6, 7, 8, 9, 10,*P= b=p

10、5; b中的值是 ( A) 5 ( B) 6 ( C) 8 ( D) 9 31 有以下程序 main() char a=“abcdefg“,b10=“abedefg“; pfintf(“%d%dn“,sizeof(a) ,sizeof(b) ); 执行后输出结果是 ( A) 77 ( B) 88 ( C) 810 ( D) 1010 32 有以下程序 void swapl(int c) int t; t=c0;c0=c1;c1=t; void swap2(int c0,int c1) int t; t=c0;c0=c1;c1=t; main() int a2=3,5,b2=3,5; swapl

11、(a) ;swap2(b0,b1); printf(“%d%d%d%dn“,a0,a1,b0,b1); 其输出结果是: ( A) 5 3 5 3 ( B) 5 3 3 5 ( C) 3 5 3 5 ( D) 3 5 5 3 33 有以下程序 void sum(int *a) a0=a1; main() int aa10=1, 2, 3,4, 5, 6, 7, 8, 9, 10, i; for(i=2; i =0; i-)sum(j 4;j+) i=j; if(i 2)i=3-j; s+=bij; return s; main() int a44=1, 2, 3,4, 0, 2, 4, 6, 3

12、, 6, 9, 12, 3, 2, 1, 0; printf(“%dn,f(a) ); 执行后的输出结果是: ( A) 12 ( B) 11 ( C) 18 ( D) 16 35 有以下定义 #include stdio h char a10, *b=a; 不能给 a数组输入字符串的语句是 ( A) gets(A) ( B) gets(a0); ( C) gets(T 则下面叙述中正确的是 ( A)可用 S定义结构体变量 ( B)可以用 T定义结构体变量 ( C) S是 struct类型的变量 ( D) T是 structS类 型的变量 40 有以下程序 struct STU char nam

13、e10; int num; ; void f1(struct STU C) struct STU b=“LiSiGuo“,2042; c=b; void f2(struct STU*C) struct STU b=“SunDan“,2044; *c=b; main() struct STU a=“YangSan“,2041,b=“Wang Yin“,2043; f1(a) ;f2( printf(“%d%dn“,a.num,b.num); 执行后输出结果是 ( A) 2041 2044 ( B) 2041 2043 ( C) 2042 2044 ( D) 2042 2043 41 有以下程序

14、main() unsigned char a,b; a=4|3; b=4i=4;i+) ror(j=1;j 4-i;j+)printf(“); for(j=1;j _; j+)printf(“*“); printf(“n“); 在下划线处应填入的是 ( A) i ( B) 2*i-1 ( C) 2*i+1 ( D) i+2 43 有以下程序 void sort(int a,int n) int i,j,t; for(i=0;i n-1;i+ 2) for(j=i+2;j n;j+=2) if(ai aj)t=ai;ai=aj;aj=t; main() int aa10=1,2,3,4,5,6,

15、7,8,9,10,i; sort(aa,10); for(i=0;i10;i+)printf(“%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) 9, 2, 7, 4, 5, 6, 3, 8, 1, 10, ( D) 1, 10, 3, 8, 5, 6, 7, 4, 9, 2, 44 以下程序段中,不能正确赋字符串 (编译时系统会提示错误 )的是: ( A) char s10=“abcdefg“; ( B) char t=“ab

16、cdefg“, *s=t; ( C) char s10; s=“abcdefg“; ( D) char s10; strcpy(s,“abcdefg“); 45 有以下程序 #include stringh main(int argc, char *argv) int i,len=0; fot(i=1;i argc;i+=2)len+=strlen(argvi); printf(“%dn“,len); 经编译连接后生成的可执行文件是 ex exe,若运行时输入以下带参数的命令行 ex abcd efg h3 k44 执行后输出结果是 ( A) 14 ( B) 12 ( C) 8 ( D) 6

17、46 有以下程序 void f(int a,int i,int j) int t; if(i j) t=ai;ai=aj;aj=t; f(a,i+1,j-1); main() int i,aa5=1,2,3,4,5; f(aa,0,4); for(i=0;i5;i+)printf(“%d,“,aai;printf(“n“); 执行后输出结果是 ( A) 5, 4, 3, 2, 1 ( B) 5, 2, 3, 4, 1, ( C) 1, 2, 3, 4, 5 ( D) 1, 5, 4, 3, 2, 47 有以下程序 struct STU char name10; int num; int Sco

18、re; 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=i 4;i+) for(j=i+1;j 5;j+) if(pi- Score pj- Score) t=pi;pi=pj;pi=t; printf(“%d%dn“,s1.Score,p1- Score); 执行后输出结果是 ( A) 550550 ( B) 680680 (

19、C) 580550 ( D) 580680 48 有以下程序 #inGlude stdlib h struct NODE int num; struct NODE *next; main() struct NODE *p,*q,*r; int sum=0; p=(struct NODE*)malloc(sizeof(struct NODE); q=(struct NODE*)malloc(sizeof(struct NODE); r=(stnlct NODE*)malloc(sizeof(struct NODE); p- num=1;q- num=2;r- num=3; p- next=q;q

20、- 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 stdio h main() FILE *fp;int i,k=0,n=0; fp=fopen(“d1.dat“,“w“); for(i=1;i 4;i+)fprintf(fp,“%d“,i); fclose(fp); fp=fopen(“d1.dat“,“r“); fscanf(fp,“%d%d“,int i,a4=1,2,3,4,b; f

21、p=fopen(“data.dat“,“wb“); for(i=0;i 4;i+)fwrite(/*从文件中读取 sizeof(int)字节的数据到变量 b中 */ felose(fp); printf(“%dn“,b) ; 执行后输出结果是 ( A) 2 ( B) 1 ( C) 4 ( D) 3 51 解题方案的准确而完整的描述称为【 】。 52 在数据结构中,顺序存储结构的数据元素所占的存储空间是【 】的。 53 软件开发环境是全面支持软件开发全过程的【 】的集合。 54 数据库理论中,数据的独立性一般可分为物理独立性和【 】。 55 数据库系统中,实现各种数据管理功能的核心软件称为【 】

22、。 56 若有语句 int i=-19,j=i%4; printf(“%dn“,j); 则输出结果是【 】。 57 若有程序 main() int i,j; scanf(“i=%d,j=%d“,a=b;b=t; if(a c)t=a;a=c;c=t; pfintf(“%d%d%dn“,a,b,c) ; 执行后输出结果是【 】。 60 若有以下程序 main() int a44=1,2,-3,-4,0,-12,-13,14,-21,23,0,-24,-21,32,-33,0; int i,j,s=0; for(i=0;i 4;i+) for(j=0;j 4;j+) if(aij 0)contin

23、ue; if(aij=0)break; s+=aij; printf(“%dn“,s); 执行后输出结果是【 】。 61 若有以下程序 main() char a; a=H-A+0; printf(“%cn“,A) ; 执行后输出结果是【 】。 62 若有以下程序 int f(int x, int y) return(y-x)*x; main() int a=3,b=4,c=5,d; d=f(f(3,4),f(3,5); printf(“%dn“,d) ; 执行后输出结果是【 】。 63 设函数 findbig已定义为求 3个数中的最大值。以下程序将利用函数指针调用findbig函数。请填空。

24、 main() int findbig(int, int, int); int(*f)(), x, y, z, big; f= 【 】; seanf(“%d%d%d“,struet ss *link;x,y,z; 且已建立如下图所示链表结构: 请写出删除结点 y的赋值语句【 】。 66 已有文本文件 test txt,其中的内容为: Hello, everyone!。以下程序中,文件test txt已正确为 “读 ”而打开,由此文件指针 fr指向该文件,则程序的输出结果是【 】。 #include stdio.h main() FILE*fr; char str40; fgets(str, 5

25、, fr); printf(“%sn“,str); felose(fr); 67 函数 YangHui的功能是把杨辉三角形的数据赋给二维数组的下半三角 ,形式如下 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 其构成规律是: (1)第 0列元素和主对角线元 素均为 1 (2)其余元素为其左上方和正上方元素之和 (3)数据的个数每行递增 1 请将程序补充完整。 #define N 6 void YangHui(int xNN) int i, j; x00=1; for(i=1;i N;i+) xi0= 【 】 =1; for(j=1;j i;j+) xij= 【 】; 68 以下函

26、数的功能是删除字符串 s中的所有数字 字符。请填空。 void dele(char *s) int n=0,i; for(i=0;si;i+) if( 【 】 ) sn+=si; sn= 【 】; 国家二级( C语言)笔试模拟试卷 84答案与解析 1 【正确答案】 C 【试题解析】 算法的时间复杂度是指执行算法所需要的计算工作量,也就是算法在执行过程中所执行的基本运算的次数,而不是指程序运行需要的时间或是程序的长度。 2 【正确答案】 D 【试题解析】 对栈可进行插入和删除数据的操作,但必须牢记插入和删除数据都只能在栈顶,是一种特殊的线性表。所以栈是先进后出的线性表。 3 【正确答案】 C 【

27、试题解析】 二叉树的遍历分为先序、中序、后序三种不同方式。本题要求中序遍历,遍历顺序应该为:中序遍历左子树 -访问根结点 -中序遍历右子树。按照定义,中序遍历序列是 BDAECF。 4 【正确答案】 D 【试题解析】 在结构化程序设计中通常采取自上而下、逐步求精的方法,其总的思想是先全局后局部、先整体后细节、先抽象后具体。而筛选法、递归法和归纳法指的都是程序的某种具体算法。 5 【正确答案】 A 【试题解析】 函数重载指的是两个或两个以上的函数具有相同的函数名,但形参的个数或类型不同。程序十通过判断主调函数传过来的参数的个数和类型,来决定选择调用哪个具体的函数。 6 【正确答案】 B 【试题解

28、析】 从概念模式到内模式的映射一般由数据库管理系统 (DBMS)实现。 7 【正确答案】 C 【试题解析】 软件设计的原则包括:抽象、模块化、信息隐蔽和模块独立性。自底向上不是软件设计原则。 8 【正确答案】 A 【试题解析】 数据库管理系统是一种系统软件,负责数据库中的数据组织、数据操纵、数据维护、控制及保护和数据服务等操作。 9 【正确答案】 D 【试题解析】 数据库表中字段转化为属性,把记录的类型转化为关系模式。 10 【正确答案】 B 【试题解析】 关系模型以二维表表示实体之间的联系,网状模型以一个不加任何条件限制的无向图表示实体之间的联系。层次模型的 基本结构为树形结构。数据模型包括

29、关系模型、网状模型和层次模型。 11 【正确答案】 B 【试题解析】 算法具有的 5个特性是:有穷性;确定性;可行性;有 0个或多个输入;有一个或多个输出。 12 【正确答案】 A 【试题解析】 选项 B中,以 0开头表示是一个八进制数,而八进制数的取值范围是 0 7,所以 -080是不合法的;选项 C和 D中, e后面的指数必须是整数,所以也不合法。 13 【正确答案】 C 【试题解析】 算法具有 5个特性:有穷性;确定性;可行性;有 0个或多个输入;有一个或多个 输出。所以说,用 C程序实现的算法可以没有输入但必须要有输出。 14 【正确答案】 D 【试题解析】 合法的标识符由字母、数字和

30、下划线组成,并且第一个字符必须是字母或下划线。而且在用户标识符中,如果与关键字相同,程序在编译时将出错,所以,用户标识符不能为关键字。 15 【正确答案】 B 【试题解析】 C语言的语法规定,字母 e(E)之前必须有数字,且 e(E)后面的指数必须是整数,而选项 B中, e(E)后面的指数是小数,所以不合法。 16 【正确答案】 C 【试题解析】 自增运算符 “+”,放在变量之前表示在使用变量之前,先使变量的值加 1;放在变量之后表示在使用变量之后,再使变量的值加 1。第一条输出语句先输出字符 b,此时 b=2,再使 b自加 1, b=3,第二条输出语句输出的是 b-a=3-1=2。 17 【

31、正确答案】 A 【试题解析】 自增运算符 “+”,放在变量之前表示在使用变量之前,先使变量的值加 1;放在变量之后表示在使用变量之后,再使变量的值加 1。第一条输出语句,先输出 m=12, m再自加 1,变成 13, n先自加 1再输出,输出 n=35;第二条输出语句,先输出 n=35, n再自加 1,变成 36, m先自加 1再输出,输出 m=14。 18 【正确答案】 B 【试题解析】 定义 b为整型数, c为字符数组,所以在输入语句的地址表列中,要在 b前加上取址符 “&”,而 c就是字符数组的首地址,所以不用加上取址符 &。 19 【正确答案】 A 【试题解析】 正确输入各变量的值,输

32、入的格式应该和输入语句中的 “格式控制 ”字符串的格式对应一致。 20 【正确答案】 B 【试题解析】 本题考查算术运算符 “/”、 “%”,逻辑运算符 “&”。 a=25/10%9= 2; b=2&(-1)=1。 21 【正确答案】 A 【试题解析】 三目运算表达式的规则为如果 “?”前面的表达式的值为真,则取“: ”前的表达式的值,否则,取 “: ”后面表达式的值。分析题目中给出的表达式可知,如果 a b和 b c同时成立, k=1,否则 k=0。 22 【正确答案】 C 【试题解析】 switch语句的执行过程是:在 switch后面的表达式的值和 case后面常量表达式的值吻合时,就执

33、行后面的语句。如果在该语句的后面没有 break语句,则继续执行下一个 case,直到遇到 break语句或 switch多分支则结束,在switch语句中, break语句的作用是使流程跳出 switch结构,中止 switch语句的执行。本题中在 for循环中嵌套了 switch语句,每循环一次通过 scanf()函数从键盘上输入一个 k值,然后执行 switch语句。 for循环共循环了 2次,当 i=1时,从键盘上输入 0,使得 k的值为 0,执行 switch语句中 cast: 0后面的语句,输出another,接着执行 case: 0下面的语句输出 number,退出 switch

34、语句,当 i=2时,从键盘上输入 1,使得 k的值为 1,执行 switch语句中 case: 1后面的语句,输出 number,退出 switch语句。当 i=3时退出循环。故最后的输出为 another、number和 number。 23 【正确答案】 B 【试题解析】 本题中首先定义了三个整型变量 x、 y和 z并分别赋值为 0、 5和3, while循环的判定条件为 z- 0&+x 5,由于 z的初值为 3,所以当 z-执行 3次后, z- 0将不再成立,又由于 x的初值为 0,所以 +x执行 5次, +X5将不再成立,而他们两个表达式的值为逻辑与的关系,故当 z- 0不成立时整个表

35、达式 的值为假,因此该循环共执行了 3次,即语句 y=y-1共执行了三次,但while循环的判定表达式却执行了四次,故最后输出的 x、 y、 z的值分别为 3, 2,-1。 24 【正确答案】 D 【试题解析】 本题中 i赋初值为 1,并对其每次进行加 2操作,即 i每次均为 110之间的奇数, s+=i+1,即 s=s+i+1,相当于 s等于原来的 s每次加上 1 10之间的偶数,直到 i 10不成立。当 i=1时, s=0+1+1=2;当 i=3时, s=2+3+1=2+4;当i=5时, s=2+4+5+1=2+4+6;当 i=7时, s=2+4+6+7+1=2+4+6+8;当 i=9时,

36、 s=2 +4+6+8+9+1=2+4+6+8+10;当 i=11时, i 10不成立,结束循环。 25 【正确答案】 D 【试题解析】 dowhile 的结构形式为: do循环体, while(条件表达式 ),当程序执行到 do后,先执行循环体一次,然后才对条件表达式进行计算、判断。若条件表达式的值为真,则重复执行一次循环体;否则退出,与 while结构相比,dowhile 结构至少要执行一次循环体;运算符 %是求模运算,即求两个数相除的余数。 continue语句的作用 时结束本次循环,即跳过本次循环中余下尚未执行的语句,接着再一次进行循环的条件判定。本题中,当 i=2时,执行 do循环。

37、由于if表达式的条件为真,执行 continue语句,结束本次循环,判断 while循环条件为假,故退出 while循环,执行 n+,此时 n的值为 1,当 i=3时,执行 do循环。由于 if(3%3)为假,执行下面的 n+语句,此时 n的值为 2,结束本次循环,继续判断 while循环条件为假,故退出 while循环,执行 n+语句,此时 n的值为 3;当i=4时,执行 do循环。由于 if(4%3)为真,执行 continue语句,结束本次循环,继续判断 while循环条件为假,故退出 while循环,执行 n+,此时 n的值为 4;当i=5时,退出 for循环,因此最后输出的 n的值为

38、 4。 26 【正确答案】 A 【试题解析】 函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为: 类型标识符 函数名 (类型标识符 形参, ) ; 这些信息就是函数定义中的第一行的内容。这里形参的名字是不重要的, 重要的是类型标识符,函数声明中也可以不写形参名只写该形参的声明类型,但不能只写形参名而不写该形参的类型。本题中,选项 A中 double myadd(double a, b) ,没写出形参 b的类型。 27 【正确答案】 D 【试题解析】 经过分析得出函数 fun(

39、)的功能是比较形参 x和形参 y的大小,返回较小的一个。函数 fun()有两个参数。本题中,首先定义了三个整型变量 a、 b和 c,分别赋初值为 9、 8和 7。然后执行函数 fun(fun(a, b) , fun(b, c) )。在该函数中分别将 fun(a, b) 和 fun(b, c) 函数的返回值作为该函数的两个实参。在函数 fun(a, b) 中,由于 a b,故返回较小值 b即 8,在函数 fun(b, c) 中,由于 b c,故返回较小值 c即为 7,因此调用函数 fun(fun(a, b) , fun(b, c) )相当于执行函数 fun(8, 7),返回较小值即 7。 28

40、【正确答案】 D 【试题解析】 指针变量定义和赋值语句的基本应用,在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在 C语言中 有两个有关指针的运算符: &运算符为取地址运算符, *运算符是指针运算符, *p代表 p所指向的变量。本题中首先定义了整型变量 n,其初值为 0,接着定义一个指针变量 P并让它指向n,然后定义了一个指向指针的指针变量 q并让它指向 p,选项 A中将常量 1赋给指针 p不正确;选项 B也是将常量 2赋给 *p;选项 C中 p不是指向指针的指针变量,而将他赋值给一个指向指针的指针变量 q

41、。 29 【正确答案】 C 【试题解析】 C语言规定 else总是和离它最近的 if语句配对。分析可以知道,函数 f()作用是让形参 v和形参 w的值交换。在主 函数中首先定义了三个变量 x、 y和z。 然后再执行下面的 if-else语句。由程序可以看出第一个 else和第一个 if搭配,第二个 else和第二个 if搭配。由于调用函数时是进行值传递的。即将实参 x, y, z传给形参 v和 w,以后形参和实参再无联系,故通过 if语句调用 f()函数后, x、 y和 x的值并没有改变。故最后输出的 x、 y和 z的值为 1、 3和 2。 30 【正确答案】 D 【试题解析】 C语言中规定:

42、一个数组名代表它的起始地址。本题中,定义了一个长度为 10的数组 a并赋初值,数组名 a就是数组的起始地址,由于数组 下标是从 0开始,因此 a0的地址也是 a的值, a1的地址可以用 a+1表示,也就是说a+1指向数组 a中下标为 1的元素,同样 a+i是 ai的地址, *p=&a3表明指针变量 p指向元素 a3,即 p指向数组 a的第 4个元素 4, p5的值应为数组 a中的第9个元素的值即 a8)的值,即, p5=9,所以 b=9。 31 【正确答案】 C 【试题解析】 本题小定义两个字符型数组,其中 a省略了长度,定义了 b的长度为 10,并赋初值分别为 “abcdefg”和 “abc

43、defg”。所以 a的长度为赋值给它的字符串的字符个数 7加上一个结束转义字符,即 a的长度为 7+1为 8。定义时 b的长度定义为 10,故 b的长度为 10,因此最后通过函数 sizeof()求得的数组 a和数组 b的长度分别为 8和 10。 32 【正确答案】 B 【试题解析】 函数间的参数的传递有两种情况,第一种情况变量作为形参时的参数传递,变量作为形参时,要求对应的实参应为变量或表达式,变量作为函数的参数其传递方式是 “值传递 ”,该种情况下,形参被赋值为实参的值,然后实参与形参再无联系。也就是说对形参的改变将不再影响实参;第二种情况是地址或数组名作为形参时的 参数传递,该种情况下对

44、形参的改变将对实参产生影响。本题中函数 swapl()是传递的地址。所以对该形参 c的改变将影响实参,分析可知该函数的作用,是使数组 c的第一个元素和第二个元素的值互换。主函数中调用该函数将 a作为实参传递给形参 c,故执行该函数后 a的第一个元素和第二个元素的值将交换。分别为 5和 2。函数 swap2()是值传递的,所以该函数执行后对数组 b将没有任何改变,此时该数组的第一个和第二个元素依然为 3和 5,因此最后的输出为 5、 3、 3和 5。 33 【正确答案】 A 【试题解析】 本题中函数 sum(int *A) 的作用是:将形参 a所指的数组中的第二个元素的值 a1赋给第一个元素 a

45、0。主函数中定义一个长度为 10的整型数组并赋初值,接着执行一个 for循环,该循环共执行了 3次。当 i=2时,调用函数sum(&aa2),主函数中将 &aa2作为实参传给形参 a,所以此时形参 a所指的数组的第一个元素和第二个元素分别为 aa2和 aa3,故执行完该函数后将 aa3的值赋给 aa2,即 aa2=aa 3=4,当 i=1时,调用函数 sum(&aa(1),主函数中将&aa1作为实参传给形参 a,所以此时形参。所指的数组的第一个元素和第二个元素分别为 aa1和 aa2,故执行完该函数后将 aa2的值赋给 aa1,即aa1=aa2=4;当 i=0时:调用函数 sum(&aa 0)

46、,主函数中将 &aa0作为实参传给形参 a,所以此时形参 a所指的数组的第一个元素和第二个元素分别为 aa0和aa1,故执行完该函数后将 aa1的值赋给 aa0,即 aa 0=aa1=4;故最后输出的 aa0的值为 4。 34 【正确答案】 D 【试题解析】 分析程序可知,函数 f()中 的 for循环作用,是将数组前三行中的对角线上的元素,即 b00、 b11、 b22和第一行的第四列元素即 b03累加到变量 s中,然后将 s的值返回。在主函数中首先定义了一个 4行 4列的二维数组,接着通过输出语句输出函数 f(a) 的返回值。调用 f(a) 的返回值为a00+a11+ a22+a13=1+2+9+4=16。 35 【正确答案】 B 【试题解析】 函数 gets()的调用形式为 gets(str_a

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

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

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