ImageVerifierCode 换一换
格式:DOC , 页数:35 ,大小:100KB ,
资源ID:503506      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-503506.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文([计算机类试卷]国家二级(C语言)笔试模拟试卷84及答案与解析.doc)为本站会员(tireattitude366)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

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

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