二级C语言真题2017年09月-

上传人:suij****uang 文档编号:58406471 上传时间:2022-02-28 格式:DOC 页数:15 大小:170KB
收藏 版权申诉 举报 下载
二级C语言真题2017年09月-_第1页
第1页 / 共15页
二级C语言真题2017年09月-_第2页
第2页 / 共15页
二级C语言真题2017年09月-_第3页
第3页 / 共15页
资源描述:

《二级C语言真题2017年09月-》由会员分享,可在线阅读,更多相关《二级C语言真题2017年09月-(15页珍藏版)》请在装配图网上搜索。

1、二级C语言真题 2017 年09月-(3)一、选择题1、设某棵树的度为 3,其中度为 3,1,0的节点个数分别为 3 ,4 ,15 。则该树中总节点数为 A 22 B 30 C 35 D 不可能有这样的树2、线性表的长度为 n。在最坏情况下,比较次数为 n-1 的算法是 。A 寻找最大项 B 同时寻找最大项与最小项 C 顺序查找 D 有序表的插入3、下列叙述中正确的是 。A 循环队列是队列的链式存储结构B 能采用顺序存储的必定是线性结构C 所有的线性结构都可以采用顺序存储结构D 具有两个以上指针的链表必定是非线性结构4、设表的长度为 n 。在下列结构所对应的算法中,最坏情况下时间复杂度最低的是

2、 A 希尔排序 B 有序链表查找C 堆排序 D 循环链表中寻找最大项5、下面不属于结构化程序设计原则的是 A 模块化 B 自顶向下 C 可继承性 D 逐步求精6、对软件系统总体结构图,下面描述中错误的是 A 深度等于控制的层数B 扇入是一个模块直接调用的其他模块数C 扇出是一个模块直接调用的其他模块数D 原子模块一定是结构图中位于叶子节点的模块7、软件集成测试不采用 。A 一次性组装 B 自顶向下增量组装C 自底向上增量组装 D 迭代式组装8、将数据库的结构划分成多个层次,是为了提高数据库的物理独立性和 A 规范程度 B 操作独立性 C 逻辑独立性 D 降低数据冗余则实体开发人员和实体项目间的

3、联系是D 多对多9、公司的开发人员可以同时参加多个项目的开发, A 一对一 B 一对多 C 多对一10、定义学生选修课程的关系模式如下:SC(S#,Sn,C#,Cn,G.( 其属性分别为学号、姓名、课程号、课程名、成绩 ) 则该关系的主键为 。A S# B C# C S# ,C# D S#, C#, G11 、以下叙述中正确的是 。A C语言源程序即使不编译,也是可以直接运行的B 一个程序要被称为结构化程序,则只能包含循环结构、选择结构、顺序结构 C 使用 N-S流程图只能描述简单的算法D 复杂算法是指不能分解成子任务的算法12 、下面说法正确的是 。A 使用只包含 3种基本结构的算法可以求解

4、复杂的问题B C语言源程序需要把所有过长的函数保存在单独的源文件中才能通过编译C 有一些特殊的程序语法错误,只有在运行时才能被发现D 一些完成简单任务的 C语言程序,可以不包含 main() 函数13 、以下选项中,算术表达式的值与其他3个不同的是 。A3/5. B3./5 C 3/5D3.0/5.014、以下完全正确的一组常量是 。A-12U 12.E0 B 01a.12e3C0.3L 1.2e-1 D0x0 12315 、以下字符常量中,输出后仍是原英文字母的是 。A s B t C n Dr16 、有以下程序:#include #include main()int s;float n,t

5、,pai;t=1,pai=0,n=1.0,s=1;while(fabs(t)1.0e-6)pai+=t;n+=2;s=-s;t=s/n;printf(total=%fn,pai); 程序所计算的是 。A 1-1/2! +1/3! -1/5! +1/7! - B 1+1/3+1/5+1/7+1/9-C 1+1/2+1/3+1/4+1/5- D 1-1/3+1/5-1/7+1/9-17 、有如下程序:#include main()int a=0,b=1;if(a+ & b+)printf(T);elseprintf(F);a=b+;printf(a=%d,b=%dn,a,b); 程序运行后的输出结

6、果是 。A Fa=1 ,b=2 B Fa=1 ,b=1 C Ta=0 ,b=2 D Ta=0 ,b=1 18 、以下各选项中的代码段执行后,变量 y的值不为 1的是 。A int x=5,y=0;if(5)y=1; B int x=5,y=0;if(x)y=1;C int x=10,y=0;if(x=y)y=1; Dint x=5,y=10;if(x=y)y=1;19 、设有定义: int m=1,n=2;则以下 if 语句中,编译时会产生错误信息的是 A if(m n)m- else n-;B if(m=n)m+;n+;C if(m 0 & n 0); else m+;20 、有以下程序:#

7、include void main()int i,m=0,n=0,k=0;for(i=9;i =11;i+)switch(i/10)case 0:m+;n+;break;case 10:n+;break; default:k+;n+; printf(%d%d%dn,m,n,k); 程序运行后的输出结果是 。A 4 5 1 B 3 5 4 C 1 5 4 D1 3 221 、有下列程序: #includemain() int a=-1,b=2; for(;a+ & b-;) printf(%d,%d,a,b); printf(%d,%d,a,b); 程序执行后的输出结果是 。0,1,1,1 D0

8、,1,1,1,1,1A 0,1,1,0,1,0 B 0,1,1,0 C22 、有以下程序:#include #define N 4int fun(int aN)int i,y=0;for(i=0;i N;i+)y+=a1i+aN-1i;for(i=0;i N-1;i+)aii=aii * aii;return y;main()int y,xNN=11,21,13,4,15,6,17,8,9,1,11,12,3,4,15,6;y=fun(x);printf(%d,%d,%d,y,xN-3N-3,xN-3N-2);程序执行后的输出结果是 。A74,36,17B 74,6,17C82,36,17D8

9、2,6,1723 、以下程序拟调用 getmax 函数,找出 4个变量中最大的一个,但程序不完整。具体程序如下: #include int getmax(int x,int y)return xy x:y;void main()int a,b,c,d,mx;scanf(%d%d%d%d,&a,&b,&c,&d);printf(max=%dn,);以下选项若填入下划线处,不能实现上述功能的是 。Agetmax(getmax(getmax(a,b),c),d)B getmax(getmax(a,b),getmax(c,d)Cgetmax(a,getmax(b,getmax(c,d)D mx=(ge

10、tmax(a,b),getmax(c,d)24 、以下叙述中错误的是 。A在同一源程序文件中,函数名必须唯一 B凡是带有返回值的库函数,都不能通过加分号而作为独立的语句出现 C不同函数中的形式参数可以同名D返回基本数据类型的库函数的调用,均可以出现在赋值号右边的表达式中25 、关于函数返回值,以下说法错误的是 。A函数返回值可以是整个数组B函数返回值可以是一个数C函数返回值可以是一个指针D函数返回值可以是一个函数的入口地址26 、有下列程序:#include #define N 4int fun(int aN)int i,y=0;for(i=0;i N;i+)y+=a0i+aN-1i;for(

11、i=1;i N-1;i+)y+=ai0+aiN-1;return y;main()int y,xNN=1,2,3,4,2,1,4,3,3,4,1,2,4,3,2,1;y=fun(x);printf(%d,y);程序执行后的输出结果是 。A40 B35 C 30 D32 27、设有如下程序段:(a) int a2=0;(b) int b=0;(c) char C2=ABC;(d) char d=ABC;则以下叙述正确的是 。A只有数组 a、b的定义是合法的B数组 a、b、c、d的定义都是合法的C只有数组 c 、 d 的定义是合法的D只有数组 c 的定义是合法的28 、有以下程序:#include

12、void swap(int *pa,int *pb)int t;t=*pa;*pa=*pb;*pb=t;void fun(int *ds,int n)int i,midx;midx=0;for(i=1;i n;i+)if(dsidsmidx)midx=i;swap(ds,ds+midx);void main()int data=37,31,26,17,61,12,i;for(i=0;i 5;i+) fun(data+i,6-i);for(i=0;i 6;i+) printf(%3d,datai); printf(n);程序的运行结果是 B37 31 26 17 61 12D12 17 26 3

13、1 37 61A61 37 31 26 17 12C17 61 12 37 31 2629 、设有定义: int x23;A*(*x+1)B*(*(x+1),则以下选项中不能表示数组元素 x01C(*x)1D*(&x00+1)的是30 、有以下程序:#include void fun(double x,double *y,double *z)*y=*y-1.0;*z=*z+x;main() double a=2.5,b=9.0,*pa,*pb;pa=&a;pb=&b;fun(b-a,pa,pb); printf(%fn,a); 程序运行后的输出结果是 。A8.000000B 9.000000C

14、1.500000D10.50000031 、使用数组名作为函数的实参时,传递给形参的是 A数组第一个元素的值B数组的首地址C数组中全部元素的值D数组元素的个数32 、有下列程序:#include void fun(int a,int n,int flag) int i=0,j,t;for(i=0;i n-1;i+)for(j=i+1;jaj):(ait=ai;ai=aj;aj=t;main()int c10=7,9,10,8,3,5,1,6,2,4,i; fun(c,10,1);fun(c,8,0);for(i=0;i 10;i+)printf(%d,ci);程序执行后的输出结果是 A8,7,

15、6,5,4,3,2,1,9,10,C9,10,1,2,3,4,5,6,7,8,aj)B3,4,5,6,7,8,9,10,2,1,D10,9,8,7,6,5,4,3,1,2,33 、有以下程序:#include int a=5;int func(int a) int b=1;static int c=5;a+; b+; +c;return(a*b*c);main()int k,a=4;for(k=0;k 3;k+) printf(%d,func(a);程序执行后的输出结果是 A72,147 ,256 ,B60,60,60, C72,98,128 ,D60,70,80,34 、有以下程序:#inc

16、lude stdio.hmain()char b=abcdefg,*chp=b;while(*chp) if(ehp-b)%3=0) putchar(*chp);+chp; 程序的运行结果是 。AcfBdefgCadg Daceg35 、有下列程序:#include #include main()char v410,*p4,*t;int i,j;for(i=0;i 4;i+)pi=vi;scanf(%s,pi);for(i=0;i 3;i+)for(j=i+1;j 0)t=pi;pi=pj;pj=t; for(i=0;i 4;i+)printf(%s,pi);程序执行时若输入: Welcome

17、 you to Beijing ,则输出结果是 ABeijing Welcome to youB Beijing to Welcome youCWelcome you to BeijingD to you Beijing Welcome36 、以下涉及字符串数组、字符指针的程序片段,没有编译错误的是 。Achar line;line=:Bchar *name10,*str;name=Hello World;Cchar str110,str210=prog.c;str1=str2;Dchar name10,*str=Hello World;37 、若要使int 型变量a、b、c、d的值都为0,以

18、下写法中错误的是 。Aauto int a,b,c,d;a=b=c=d=0;B auto int a=b=c=d=0;Cauto int a=0,b=a,c=b,d=c;Dstatic int a,b,c,d;38 、有如下程序:#include main()int a=1,b;b=(a 2)%3;printf(%d,%d,a,b);程序运行后的输出结果是 。A1,1 B 2,0 C1,0 D2,139 、有下列程序:#include main() int x=3,y=5,z1,z2;z1=yxy:z2=xyx;printf(%d,%dn,z1,z2);程序执行后的输出结果是 。A7,7 B

19、5,3 C8,8 D3,540 、有下列程序:#include #include typedef struct stuchar name9;char gender;int score;STU;STU f(STU a)STU c=Sun,f,90;strcpy(a.name,c.name);a.gender=c.gender;a.score=c.score;return a;main() STU a=Zhao,m,85,b=Qian,f,95;b=f(a);printf(%s,%c,%d,%s,%c,%d,a.name,a.gender,a.score,b.name,b.gender,b.s c

20、ore);程序执行后的输出结果是 。AZhao,m,85,Sun,f,90BZhao,m,85,Qian,f,95CSun,f,90,Sun,f,90D Sun,f,90,Qian,f,95 二、程序填空题41、下列给定程序中, 函数fun 的功能是:求ss所指字符串数组中长度最短的字符串所在的行下标, 作为函数值返回,并把其串长放在形参 n所指的变量中。 ss 所指字符串数组中共有 M个字符串,且串 长小于 N。请在程序的下划线处填入正确的内容,使程序得出正确的结果。 注意:部分源程序给出如下。不得增行或删行,也不得更改程序的结构 !试题程序:#include #include #defin

21、e M 5#define N 20int fun(char(*ss)N,int*n) int i,k=0,len=N;*foundfor(i=0;i ;i+)len=strlen(ssi);if(i=0) *n=len;*foundif(len*n)*n=len;k=i;*foundreturn();main()charssMN=shanghai,guangzhou,beijing,tianjing,chongqing; int n,k,i;printf(nThe original strings are:n);for(i=0;i =a)|(tti=z)*found注意:不要改动 main 函

22、数,不得增行或删行,也不得更改程序的结构试题程序:#include#include#ineludechar *fun(char tt) int i; for(i=0;tti;i+)tti+=32; return(tt);main()char tt81;printf(nPlease enter a string:); gets(tt);printf(nThe result string is:n%s,fun(tt); 四、程序设计题(共24分)43 、编写函数 fun ,其功能是:将所有大于 1小于整数m的非素数存入 xx 所指数组中,非素数的个数 通过k返回。例如,若输入 17 ,则应输出:

23、4 6 8 9 10 12 14 15 16。注意:部分源程序给出如下。请勿改动主函数 main 和其他函数中的任何内容,仅在函数 fun 的花括号中填入你编写的若干语句 试题程序:#include #include #include void fun(int m, int *k ,int xx)void main()int m,n,zz100; system(CLS);printf(nPlease enter an integer number between 10 and 100:); scanf(%d,&n);fun(n,&m,zz);printf(nnThere are %d non-

24、prime numbers less than %d:,m,n); for(n=0;n m;n+) printf(n%4d,zzn);答案:一、选择题1、B 解析 在树结构中, 一个节点所拥有的后件个数称为该节点的度, 所有节点中最大的度称为树的度, 树中的节点数即为树中所有节点的度数之和再加 1。假设本题中度为 2 的节点数为 n,总节点数为 m, m=33+14+n2+1,叶子节点数 15=m-(3+4+n) ,得n=8,则m=9+4+82+1=30 。故答案为 B选项。2、A 解析 线性表的长度为 n,在最坏情况下,寻找最大项的比较次数为 n-1 。故答案为 A选项。3、C 解析 循环队

25、列就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间,它 是队列的顺序存储结构形式。 对于满二叉树与完全二叉树也可以按层次进行顺序存储。 有两个以上指 针的链表,是线性还是非线性,取决于指针域的指向。所有的线性结构都可以采用顺序存储结构。故答案为 C选项。4、D 解析 最坏情况下,希尔排序所需要比较次数为 n1.5 ,循环链表中寻找最大项需要 n-1 次,有序链 表查找需要 n次,堆排序次数为 nlog 2n 。因此循环链表中寻找最大项复杂度最低。故答案为 D选项。5、C 解析 结构化程序设计方法的原则包括:自顶向下、逐步求精、模块化、限制使用 goto 语句。故答 案为C选

26、项。6、B 解析 软件系统总体结构图中,扇入是指调用一个给定模块的模块个数,扇出是指由一个模块直接 调用的其他模块数,深度指控制的层数,原子模块指树中位于叶子节点的模块。故答案为B选项。7、D 解析 集成测试时将模块组装成程序通常采用两种方式:非增量方式组装和增量方式组装。非增量 方式也称为一次性组装方式, 是将测试好的每一个软件单元一次组装在一起再进行整体测试; 增量方 式是将已测试好的模块逐步组装成较大系统, 在组装过程中边连接边测试, 以发现连接过程中产生的 问题。增量方式包括自顶向下、自底向上、自顶向下与自底向上相结合的混合增量方法。故答案为 D 选项。8、C 解析 数据库系统通常采用

27、三级模式结构并且提供两级映射功能,其中的外模式 / 模式映射保证了 数据库系统具有较高的逻辑独立性,而模式 / 内模式映射保证了数据库系统具有较高的物理独立性。 故答案为 C选项。9、D 解析 开发人员可以参加多个项目,而项目开发人员不止一个,那么开发人员和项目之间是多对多 关系。故答案为 D选项。10、C 解析 本题关系模式 SC(S# ,Sn,C#,Cn,G)( 其属性分别为学号、 姓名、课程号、课程名、成绩) , 单依靠学号不能标识唯一元组, 需要学号、课程号共同来标识唯一元组, 因此学号、课程号(S# 、C#) 为该关系的主键。故答案为 C选项。11、B 解析 C 语言源程序必须经过编

28、译、链接,生成二进制可执行文件,才可以运行,选项A错误;由 3种基本结构:即循环结构、选择结构、顺序结构构成的程序称为结构化程序,选项B正确;使用 N-S流程图可以描述任何算法,选项 C错误;可以将复杂算法分解成多个子任务来解决,这种程序的设计 方法称为模块化设计,选项 D错误。故本题答案为 B选项。12、A 解析 由 3种基本结构,即循环结构、选择结构、顺序结构构成的算法称为结构化算法,由3种基本结构组成的算法可以解决任何复杂的问题,选项 A正确; C语言源程序不需要把过长的函数单独保存 也可以编译,选项 B错误; C语言程序需要经过编译、链接生成二进制文件才可以运行,其中编译阶 段可以检查

29、出语法错误,选项 C错误;每个 C语言程序无论简单还是复杂,都必须包含 main() 函数, 选项 D错误。故本题答案为 A选项。13、C 解析 C语言中除法运算有两个运算数,两个整数的除法运算会舍去小数部分,结果为整数。由于C语言中浮点数的小数形式必须要有小数点,所以选项 A(5.) 、B(3.) 和D(3.0 和5.0) 都是浮点数, 选项 A、B运算时自动将另一个整数转换成浮点数,然后再运算。选项 D中两个都是浮点数,浮点数的 除法运算结果还是浮点数,所以本题中选项 A、B、D运算结果是浮点数,选项 C运算结果是整数。故 本题答案为 C选项。14、D 解析 实数的指数形式如下:尾数 E(

30、e) 整型指数,其中字母 E或e之前必须要有数字, E或e后面的 指数必须是整数;整型常量中 U表示无符号类型, L表示长整型, 0x 开头表示十六进制形式的整数。 选项A中,由于 U表示无符号类型,只能表示正整数,所以 -12U 错误;选项 B中a不合法;选项 C中L 只能修饰整数,所以 0.3L 是错误的;选项 D中, 0x0 表示十六进制形式的整数 0,123. 表示实数,省 略了小数点后面的 0,正确。故本题答案为 D选项。15、A 解析 在本题中,选项B、C、D都是转义字符常量, 其中t 表示代表 Tab键,n 表示回车换行, r 表示回车符。选项 A中的s ,其中 是转义字符,不显

31、示; s 可以原样输出。故本题答案 为A选项。16、D 解析 main() 函数首先定义整型变量 s ,初值为1 ,定义float 类型的n、t 、pai ,其中n初值1.0 , t 初值为1,pai 初值为0。while 循环判断t 的绝对值(fabs() 为求float 类型值的绝对值 )是否大于 1.0*10-6 ,若 t 的绝对值大于 1.0*10-6 ,那么执行下列语句: pai+=t ;n+=2 ;s=-s ;t=s/n ; 所以每轮循环 pai 累加s/n( 其中s是上一轮s的相反数,n是上一轮n累加2的值) 。第一轮循环时, pai 被赋值为1,s是正数,所以最终pai 的计算

32、结果是:1-1/3+1/5-1/7+1/9-故本题答案为 D选项。17、A解析 main() 函数首先定义整型变量 a、b,分别赋初值为 0、1;a+&b+ 首先执行a+ ,其中 a+ 是后缀自增运算符,整个 a+ 表达式的值为 0,由 a+&b+ 的短路原则, b+ 不再执行,所以 if 语句不成立,执行 else 语句,输出F ,此时a完成自增运算,值为 1;接着执行 a=b+ ,同理后缀 自增运算符使得先将 b的值赋给a(a 的值为1) ,再执行b+ ,b的值为2 ,最终程序输出:“Fa=1,b=2”。 故本题答案为 A选项。18、C解析 选项A的if 条件表达式5的值为真,执行 y=1

33、,y的值为1;选项B的if 条件表达式x的值为5, 也是真,执行 y=1,y的值为1;选项C的if 条件表达式x=y是赋值语句,将 y的值0赋给x,表达式的 值为0,if 语句不执行, y值为0;选项D的if 条件表达式x=y是赋值语句,将 y的值10赋给x ,表达式 的值为10 ,执行y=1 ,y的值为1。故本题答案为 C选项。19、A 解析 选项 A中,if 语句的语句块 m- 后面少了分号,不合法,编译会出错,其他选项的语句都是 正确的。故本题答案为 A选项。20、D 解析 由程序可知:for 语句的循环体语句是 switch 语句;循环体变量 i 初值为 9 ,取值分别是 i=9 、

34、10 、11 。当i=9 时,表达式 i/10 为0 ,执行case 0 语句: m+;n+ ; break ;此时m的值为1,n 的值为1;当i=10 时,表达式 i/10 为1,执行default 语句: k+ ;n+ ;此时k的值为1,n的值为 2;当i=11 时,表达式 i/10 为1 ,执行default 语句: k+ ;n+ ;此时k的值为2 ,n的值为3,循 环结束,程序输出结果为: 1 3 2 。故本题答案为 D。21、C 解析 for 循环中,表达式 a+&b- 的值决定循环是否执行。第一轮循环时, a初值为-1 ,b初值为2,由于a+ 是后缀自增运算符, b- 是后缀自减运

35、算符, a+&b- 的值等价于 -1&2 ,结果为 1 ;执行for 循环的循环体,此时 a的值为0,b的值为1,输出 a、b的值为0、1。第二轮循环时, a的初值为0,b的初值为 1,表达式 a+&b- 首先执行a+ ,结果为0,a自增为 1;由于短路原则, b- 不再执行,整个表达式的值为 0 ,for 循环终止;执行循环体外的 printf() 语句,输出 1、1 。故本题答案为 C选项。22、A 解析 main() 函数首先定义一个二维数组 x,它是 N行N列的整型二维数组,然后将数组 x传给函数 fun() 。在函数 fun() 中,第一个 for 循环将数组 a 中,行下标为 1的

36、所有元素与行下标为 N-1(3) 的 所有元素累加赋给 y,所以y的值为15+6+17+8+3+4+15+6=74 ;第二个 for 循环将对角线上的三个 元素: a00 、a11 、a22 分别平方后赋给自身,由于 a是数组x的地址,对 a数组元素 的修改会同步修改实参 x的元素值,a00 为121 ,a11 为36 ,a22 为121 ,调用完fun() 函数后,程序输出 y、x11 、x12 的值分别是: 74、36 、17。故本题答案为 A选项。23、D 解析 getmax() 函数接收两个整型变量 x、y ,使用条件运算符返回 x 和y 中的较大值; main() 函 数首先输入 a

37、、b、c 、d四个整数值,然后通过调用 getmax() 函数,输出它们的最大值。假设 x、y 是整数,选项 A中,首先执行 getmax(a ,b) ,返回a和b中的较大值 x ,再执行getmax(x ,c) ,返 回x、c中的较大值 y ,最后执行getmax(y ,d) ,返回y 、d中的较大值,满足题意,正确; 选项B中, 首先执行 getmax(a ,b) ,返回a、b的较大值x ,再执行getmax(c ,d) ,返回c 、d中的较大值 y, 最后执行 getmax(x ,y) ,返回 x 、y 中的较大值,正确;选项 C中,首先执行 getmax(c ,d) ,返回 c、d的较

38、大值x,再执行getmax(b ,x) ,返回b、x中的较大值y,最后执行getmax(a ,y) ,返回 a、y中的较大值,正确;选项D中,首先执行 getmax(a ,b) ,返回a、b的较大值 x ,再执行getmax(c , d) ,返回 c 、d中的较大值 y ,最后执行逗号表达式 (x ,y) ,返回值为 y ,不满足题意。故本题答案为 D选项。24、B 解析 在同一源文件中, 函数名必须唯一, 选项 A叙述正确。函数的调用有两种形式: (1) 出现在表 达式中,有可以出现在赋值号右边的表达式中; (2) 作为独立的语句完成某种操作。因此选项 B叙述 错误,选项 D叙述正确。不同函

39、数的形参可以同名,它们的作用域都限制在各自的函数体内,选项C叙述正确。故本题答案为 B选项。25、A 解析 函数的返回值可以是整数、实数、字符、指针、结构体或一个函数的地址等,但不能是整个 数组, C语言中对数组的操作都是通过下标引用或指针,不能整体操作。故本题答案为A选项。26、C 解析 main() 函数首先定义一个二维数组 x,它是 N行N列整型数组,然后调用 fun 函数,传入数组 x;fun 函数中第一个 for 循环将二维数组 a的行下标为 0( 第一行 ) 的所有元素与行下标为 N-1( 最后一 行)的所有元素累加赋给 y ;第二个for 循环将二维数组 a的列下标为0( 第一列

40、)且行下标为1、2的元 素与列下标为 N-1( 最后一列)且行下标为 1、2的所有元素累加再次赋给 y,最后将y返回。所以main() 函数调用完 fun() 函数后, y的值等价于: 1+2+3+4+4+3+2+l+2+3+3+2 ,结果为 30 。故本题答案 为C选项。27、A 解析 (a) 中定义一个整型数组 a,它包含两个整型元素,两个元素都初始化为 0,正确; (b) 中定 义一个整型数组 b,数组大小为 1,包含一个元素 0 ,正确; (c) 中定义字符数组 c,它包含 2个字符元 素,初始化的字符串中包含 3 个字符,不合法; (d) 中定义一个字符 d,使用一个字符串初始化,不

41、合 法。故本题答案为 A选项。28、D 解析 main() 函数定义一个整型数组 data ,它包含 6 个整型元素,第一个 for 循环调用 fun() 函 数,每次将数组首地址 (data+i) 和元素个数 (6-i) 传给函数 fun() ,函数 fun() 通过 for 循环遍历 data+i 开始的 6-i 个元素,找出其中的最小值 ( 下标为 midx) ,然后再调用 swap() 函数将 data+i 指向的元素与下标为 midx 的元素值进行交换;所以 main() 函数中第一个 for 循环执行完毕后,数组 data 中的元素按照从小到大排序; 第二个 for 循环输出排序后

42、的 data 数组元素, 输出结果为: 12 17 26 31 37 61 。故本题答案为 D选项。29、B 解析 选项A中*x 等价于 x0 ,*x+1 等价于 x0+1 ,*(x0+1)等价于 x01 ,正确;选项B中,*(x+1) 等价于x1 ,*(*(x+1)等价于x10 ,错误;选项C中*x 等价于x0 ,*x1 等价于x01 ,正确;选项D中,&x00 等价于 x0 ,&00+1 等价于x0+1 ,*(x0+1) 等价于 x01 ,正确。故本题答案为 B选项。30、C 解析 main() 函数定义两个 double 类型的变量 a、b,分别赋初值为: 2.5 、9.0 ,另外定义两

43、个 double 类型的指针变量 pa 、pb ,其中pa指向a ,pb指向b;然后将b-a 、pa 、 pb传给函数 fun ,此 时x的值为7.5 ,y指向a,z指向b;所以*y=*y-1.0 ,是将变量 a的值减去 1.0 赋给a,a的值为1.5 ; *z=*z+x ,是将变量 b的值加上 7.5 赋给b ,b的值为16.5 ;fun() 函数执行完毕后,输出a的值为1.5 。 故本题答案为 C选项。31、B 解析 用数组名作为函数参数时,数组名退化为指针,传递给形参的是数组的首地址。故本题答案 为B选项。32、A 解析 在本题中, fun() 函数接收数组 a 、数组元素个数 n 以及

44、整型变量 flag ,然后通过 for 循环遍 历数组a的n个元素,若 flag 为1,则将数组元素升序排列;若 flag 为0,则将数组元素逆序排列。 main() 函数定义整型数组 c,它包含 10个元素,首先将数组 c 、元素个数 10和1传给fun() 函数,将 c中10 个元素升序排列,结果为: 1,2,3,4,5,6,7,8,9,10,;然后再次调用 fun() 函数, 将数组c、元素个数 8和0传给fun() 函数,将c中前8个元素逆序排列,结果为: 8,7,6,5,4,3, 2,1,9,10 。故本题答案为 A选项。33、D 解析 首先程序中有一个全局变量 a,初值为 5,在m

45、ain() 函数中,局部变量 a屏蔽全局变量 a ,同 样,在func() 函数中,形参 a也屏蔽全局变量 a;另外func() 函数中, c是静态局部变量,只会初始 化一次,后续使用时, c的值是上一次调用函数后 c 的值。综上所述, main() 函数中:当 k=0 时,实 参a=4 ,func() 函数的形参 a=4 、b=1 、c=5 ,自增后形参 a=5 、b=2 、c=6 ,返回值为60 ,输出60 ; 当k=1时,实参a=4 ,func() 函数的形参 a=4 、b=1 、c=6 ,自增后形参 a=5 、b=2 、c=7 ,返回值为 70 ,输出70 ;当k=2时,实参 a=4

46、,func() 函数的形参 a=4 、b=1 、c=7 ,自增后形参 a=5 、b=2 、 c=8 ,返回值为 80,输出 80。故本题答案为 D选项。34、C 解析 main() 函数定义字符数组 b,初始化的值为字符串 “abcdefg ”,定义字符指针变量 chp , 将数组 b的地址赋给 chp ;接着 while 循环通过 chp 指针遍历字符数组,在遍历过程中,若当前字符 与字符串首字符之间的字符数是 3的倍数(chp-b 是字符指针的差,即字符个数 ) ,那么输出该字符。 所以程序输出结果为: adg 。故本题答案为 C选项。35、A 解析 main() 函数定义一个二维字符数组

47、 v ,另外定义一个数组,包含 4 个字符指针元素,第一个 for 循环将数组 v对应下标为 i 的字符串首地址赋给数组 p的下标为 i 的元素,使得 p中的4个指针元素 分别指向 v中的 4个字符串,然后使用 scanf() 函数,输入 4个字符串赋给 v中的 4个元素,由此可知 数组p的4个指针元素指向该 4个字符串;接着再使用两个嵌套的 for 循环,对 v中的4个字符串按照 ASCII 码的大小排序,strcmp() 函数是将 pi 、pj 两个字符串自左向右逐个字符比较 ASCII 码, 直到出现不同的字符或遇到 0 为止,当 pi pj 时,返回正数,所以本题排序后,输出结果 为:

48、 Beijing Welcome to you。故本题答案为 A选项。36、D 解析 C 语言中,字符指针变量可以直接使用字符串赋值,而字符数组不能直接使用字符串或字符 数组赋值,选项 A、 B、 C错误,选项 D正确。故本题答案为 D选项。37、B 解析 选项 B中,使用 auto int 定义了整型 a,但b、c 、d都是未定义的变量,所以不能做右值使 用,错误;选项 A、C都是正确的定义和初始化;选项 D中,static 变量定义了 a、b、c 、d,由于未 初始化,在程序运行时首先将这四个变量赋值为 0,正确。故本题答案为 B选项。38、C 解析 “”是右移运算符,功能是将一个数的各个

49、二进制位右移若干位,本题中将变量 a( 二进 制: 00000001) 右移2位, a 2的结果为 0,再对3求余,结果为 0,赋给b的值为 0、a的值不变, 输出结果为: 1,0 。故本题答案为 C选项。39、D 解析 “”异或运算,其功能是参与运算的两个数,按位异或,如果两个相应位相同,结果为0,否则为1;异或运算满足如下规则: (1) 满足交换律; (2) 一个数与 0异或的结果仍是原数; (3) 一个 数与1异或的结果是原数按位取反。 所以本题中,yxy 等价于yyx ,等价于0x ,等价于x ,即z1=x ; xyx 等价于 xxy ,等价于 0y ,等价于 y ,即z2=y ;输出

50、结果为: 3,5。故本题答案为 D选项。40、A 解析 程序首先使用 typedef 定义一种新的类型名 STU,它包含 3个数据成员:字符数组 name 、字 符变量 gender 和整数 score 。main() 函数使用 STU定义结构体变量 a 和b并赋初值;再调用函数 f , 将a传入;函数 f() 使用 STU定义结构体变量 c并赋初值,然后通过逐个引用成员变量将 c 的各个成员 值赋给 a,其中使用 strcpy 进行字符串拷贝。由于形参 a 是结构体类型,实参 a未因形参的改变而改 变;将改变后的形参 a的值作为f() 函数的返回值赋给 b,所以b的值就是形参 a改变后的值;

51、而实参 a 的值没有改变, f() 函数执行完后, main() 函数中 a的值不变, b的值被修改为 f() 函数中 c的值, printf() 函数输出的值是 a和c 。故本题答案为 A选项。二、程序填空题41 、M k 考点 本题考查: for 循环语句的循环条件; if 语句条件表达式; return 语句完成函数值的返回。 解析 填空1:题目指出ss所指字符串数组中共有 M个字符串,所以for 循环语句的循环条件是 i M。填空2 :要求求长度最短的字符串, *n 中存放的是已知字符串中长度最短的字符串的长度,将当 前字符串长度与 *n比较,若小于 *n ,则将该长度值赋给 *n ,

52、因此if 语句的条件表达式为 len =a)&(tti=z)tti-=32; 考点 本题考查: if 语句条件表达式;小写字母转换为大写字母的方法。 解析 (1) 分析本题可知,要判断字符是否为小写字母,即判断其是否在 a z 之间,所以这 里需要进行连续的比较,用 &。(2) 从ASCII 码表中可以看出,小写字母的 ASCII 码值比对应大写字母的 ASCII 值大 32 。将字符 串中的小写字母改为大写字母的方法是: 从字符串第一个字符开始, 根据 ASCII 码值判断该字母是不 是小写字母,若是,则 ASCII 码值减 32。四、程序设计题43 、void fun(int m,int *k,int xx)int i,j,n=0;for(i=4;im;i+)/* 找出大于 1 小于整数 m的非素数 */for(j=2;ji;j+)if(i%j=0)break;if(j i)xxn+=i;*k=n; /* 返回非素数的个数 */ 考点 本题考查:如何判断非素数;循环判断结构;数组的引用。 解析 题目要求将 1m之间的非素数存入数组中,应使用循环判断结构。循环语句用来遍历1m之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存入数组中。本题是考查一 个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!