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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

1、国家二级( C语言)机试模拟试卷 27及答案与解析 一、选择题 1 下列叙述中正确的是 ( A)程序可以作为算法的一种表达方式 ( B)算法的有穷性是指算法的规模不能太大 ( C)算法的复杂度用于衡量算法的控制结构 ( D)算法的效率与数据的存储结构无关 2 某循环队列的存储空间为 Q(1:m),初始状态为 front=rear=m。现经过一系列的入队操作和退队操作后, front=m-1, rear=m,则该循环队列中的元素个数为 ( A) m-1 ( B) 1 ( C) m ( D) 0 3 能从任意一个结 点开始没有重复地扫描到所有结点的数据结构是 ( A)循环链表 ( B)双向链表 (

2、 C)二叉链表 ( D)有序链表 4 某棵树中共有 25个结点,且只有度为 3的结点和叶子结点,其中叶子结点有 7个,则该树中度为 3的结点数为 ( A)不存在这样的树 ( B) 7 ( C) 8 ( D) 6 5 在最坏情况下,二分查找法的时间复杂度为 ( A) ( B) ( C) log2n ( D) n 6 某二叉树共有 730个结点,其中度为 1的结点有 30个,则叶子结点个数为 ( A)不存在这样的二叉树 ( B) 351 ( C) 1 ( D) 350 7 软件开发中需求分析的主要任务是 ( A)定义和描述目标系统 “做什么 “ ( B)获取需求 ( C)给出软件解决方案 ( D)

3、需求评审 8 软件按功能可以分为应用软件、系统软件和支撑软件 (或工具软件 )。下面属于系统软件的是 ( A)学生成绩管理系统 ( B) ERP系统 ( C)办公自动化系统 ( D) UNIX系统 9 医生可以为病人开不同的药,而同一种药也可由不同医生开给病人,则实体医生和实体药之间的联系是 ( A)多对多 ( B)一对一 ( C)多对一 ( D) 一对多 10 学生选课成绩表的关系模式是 SC(S#,C#,G),其中 S#为学号, C#为课号, G为成绩,检索课号为 2且成绩及格的学生学号的表达式为11 若想定义 int型变量 a,b,c,d并都赋值为 1,以下写法中错误的是 ( A) in

4、t a=b=c=d=1; ( B) int a=1, b=1, c=1, d=1; ( C) int a,b,c,d; a=b=c=d=1; ( D) int a,b,c,d=1; a=b=c=d; 12 若有定义: char c; double d; 程序运 行时输入: 1 2回车,能把字符 1输入给变量 c、数值 2输入给变量 d的输入语句是 ( A) scanf(“%d%lf“, ( B) scanf(“%c%lf“, ( C) scanf(“%c%f“, ( D) scanf(“%d%f“, 13 输出语句: printf(“%dn“,11+011);的输出结果是 ( A) 20 (

5、B) 22 ( C) 22 ( D) 21 14 以下叙述正确的是 ( A)有些算法不能用三种基本结构来表达 ( B) C语言程序不编译也能直接运行 ( C)结构化程序的三种基本结构是循环结构、选择结构、顺序结构 ( D)如果 C语言程序实现的算法很简单,则计算机不进行任何代码转换就能执行程序 15 若有定义 : double x;,则表达式 :x=0,x+10,x+ 的值是 ( A) 11.0 ( B) 10 ( C) 0 ( D) 1 16 有以下程序 #include stdio.h main() int x=1, y=0, a=0, b=0; switch ( x ) case 1:

6、switch(y) case 0: a+; break; case 1: b+; break; case 2: a+; b+; break; case 3: a+; b+; printf(“a=%d, b=%dn“, a, b); 程序的运行结果是 ( A) a=2, b=2 ( B) a=2, b=1 ( C) a=1, b=1 ( D) a=1, b=0 17 以下程序段中的变量已正确定义 for( i=0; i 4; i+,i+ ) for( k=1; k 3; k+ ); printf(“*“ ); 该程序段的输出结果是 ( A) * ( B) * ( C) * ( D) * 18 有

7、以下程序 #include stdio.h main( ) char c; for (; ( c=getchar() != #; ) if ( c =a putchar(+c); 执行时输入: aBcDefG#回车 , 则输出结果是 ( A) AbCdEFg ( B) ABCDEFG ( C) BCDEFGH ( D) bcdefgh 19 有以下程序 #include stdio.h int f(int x); main() int n=1,m; m=f(f(f(n); printf(“%dn“,m); int f(int x) return x*2; 程序运行后的输出结果是 ( A) 4

8、( B) 2 ( C) 8 ( D) 1 20 关于地址和指针,以下叙述正确的是 ( A)可以通过强制类型转换让 char型指针指向 double型变量 ( B)函数指针 p指向一个同类型的函数 f时,必须写成: p = ( C)指针 p指向一个数组 f时,必须写成: p = ( D)一个指针变量 p可以指向自身 21 有以下程序 #include stdio.h #define N 4 int fun( int aN ) int i,j,x=0; for( i=0; i N; i+ ) for( j=0; j N; j+ ) if ( i = j ) x += aN-1-ji; return

9、 x; main( ) int xNN= 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, y; y = fun(x); printf( “%dn“, y ); 程序运行后的输出结果是 ( A) 34 ( B) 35 ( C) 28 ( D) 59 22 有以下程序 #include stdio.h #define N 3 void fun( int xN, int *r1, int *r2 ) int i, j; *r1 = *r2 =0; for( i=0; i N; i+ ) j=N - (i+1); if (x*r1*r2 x

10、ij) *r1 = i; *r2 = j; main( ) int aNN = 1,5,7,9,2,6,4,3,8 , i,j; fun( a, printf(“%dn“, aij); 程序运行后的输出结果是 ( A) 8 ( B) 6 ( C) 7 ( D) 9 23 对于以下函数声明 void fun(int array4, int *ptr); 以下叙述中正确的是 ( A) array, ptr 都是指针变量 ( B)调用 fun函数时,实参的值将逐一复制给 array ( C)调用 fun函数时, array按值传送, ptr按地址传送 ( D) array 是数组, ptr 是指针,

11、它们的性质不同 24 设有定义: int x10,*p=x,i;,若要为数组 x读入数 据,以下选项正确的是 ( A) for(i=0;i 10;i+) scanf(“%d“,p+i); ( B) for(i=0;i 10;i+) scanf(“%d“,*p+i); ( C) for(i=0;i 10;i+) scanf(“%d“,*(p+i); ( D) for(i=0;i 10;i+) scanf(“%d“,xi); 25 有以下程序 #include stdio.h main() char s=“012xy08s34f4w2“; int i, n=0; for ( i=0; si!=0;

12、 i+ ) if(si = 0 printf(“%dn“,n); 程序运行后的输出结果是 ( A) 7 ( B) 0 ( C) 3 ( D) 8 26 有以下程序段 char str 4 12 =“aaa“,“bbb“,“ccc“,“ddd“ , *p4; int i; for( i=0; i 4; i+ ) pi=stri; 以下选项中不能正确引用字符串的是 ( A) *p3 ( B) p3 ( C) str2 ( D) *p 27 有以下程序 #include stdio.h int mul(int val) static int init = 1; return init *= val;

13、 main( ) int i; for (i=1; i =5; i+) printf(“%d,“, mul(i); 程序运行后的输出结果是 ( A) 1,2,6,24,120, ( B) 1,2,3,4,5, ( C) 1,1,1,1,1, ( D) 1,2,4,6,8, 28 有以下程序 #include stdio.h void fun( int n ) static int k=0; if(n 0) printf(“-“); n=-n; k+=n%10; printf(“%d,“,k); if(n/10) fun(n/10); main( ) int x=-12; fun(x); pri

14、ntf(“n“); 程序运行后的输出结果是 ( A) -2,3 ( B) -1,-2, ( C) -2,-3, ( D) -2,1 29 有以下程序 #include stdio.h struct Sint n; int a20; ; void f(struct S *p) int i,j, t; for (i=0; i p- n-1; i+) for (j=i+1; j p- n; j+) if (p- ai p- aj) t= p- ai; p- ai = p- aj; p- aj = t; main() int i; struct S s=10, 2,3,1,6,8,7,5,4,10,9

15、; f( for (i=0; i s.n; i+) printf(“%d,“, s.ai); 程序运行后的输出结果是 ( A) 1,2,3,4,5,6,7,8,9,10, ( B) 10,9,8,7,6,5,4,3,2,1, ( C) 2,3,1,6,8,7,5,4,10,9, ( D) 10,9,8,7,6,1,2,3,4,5, 30 有以下程序 #include stdio.h typedef struct stu char name10; char gender; int score; STU; void f( STU a, STU *b, STU c ) *b = c =a; prin

16、tf( “%s,%c,%d,“, b- name, b- gender, b- score ); printf( “%s,%c,%d,“, c.name, c.gender, c.score ); main( ) STU a=“Zhao“, m, 290, b=“Qian“, f, 350, c=“Sun“, m, 370; f( a, printf( “%s,%c,%d,“, b.name, b.gender, b.score ); printf( “%s,%c,%dn“, c.name, c.gender, c.score ); 程序运行后的输出结果是 ( A) Zhao,m,290,Zh

17、ao,m,290,Zhao,m,290,Sun,m,370 ( B) Zhao,m,290,Zhao,m,290,Zhao,m,290,Zhao,m,290 ( C) Zhao,m,290,Zhao,m,290,Qian,f,350,Sun,m,370 ( D) Zhao,m,290,Zhao,m,290,Qian,f,350,Zhao,m,290 31 有以下程序 #include stdio.h #define SUB( x,y ) (x)*(y) main() int a=3, b=4; printf(“%d n“, SUB( a+, b+ ) ); 程序运行后的输出结果是 ( A) 1

18、5 ( B) 12 ( C) 16 ( D) 20 32 有以下程序 #include stdio.h main() struct cm int x; int y; a2=4,3,2,1 ; printf(“%d n“, a0.y/a0.x*a1.x ); 程序运行后的输出结果是 ( A) 1 ( B) 4 ( C) 0 ( D) 3 33 以下选项中的编译预处理命令行,正确的 是 ( A) #define E 2.38 ( B) #define PI_2 1.56 ( C) #define int INT ( D) #DEFINE TRUE 34 设有以下程序段 struct book fl

19、oat price; char language; char title20; rec, *ptr; ptr = 要求输入字符串给结构体变量 rec的 title成员,错误的输入语句是 ( A) scanf(“%s“, ptr.title); ( B) scanf(“%s“, rec.title); ( C) scanf(“%s“, (*ptr).title); ( D) scanf(“%s“, ptr- title); 35 有以下程序 #include stdio.h #include string.h struct computer char CPU10; ; main( ) struc

20、t computer pc1, pc2; strcpy(pc1.CPU, “3.2G“); strcpy(pc2.CPU, “?“); pc1 = pc2; printf(“%sn“, pc1.CPU); 程序运行后的输出结果是 ( A) ? ( B) 3.2G ( C) ? ( D) ?.2G 36 有以下程序 #include stdio.h main( ) int a = 2, b; b = (a = 1) + 4; printf(“%d,%d“, a, b); 程序运行后的 输出结果是 ( A) 1,5 ( B) 2,4 ( C) 2,6 ( D) 2,5 37 若要建立下图所示的存储

21、结构,以下正确的程序段是( )。( A) char *q,*p,c; p= q= ( B) char *q,*p,c; p= q=*p; ( C) char *q,*p,c; p= *q=p; ( D) char *q,*p,c; q=p; p=*c; 38 有以下程序 #include stdio.h struct tt int x; struct tt *y; s3= 1,0,2,0,3,0; main( ) struct tt *p=s+1; p- y=s; printf(“%d,“,p- x); p=p- y; printf(“%dn“,p- x); 程序运行后的输出结果是 ( A)

22、2,3 ( B) 2,1 ( C) 1,2 ( D) 3,1 39 有以下程序 #include stdio.h main( ) int x=3,y=5; x=xy; y=xy; x=xy; printf( “%d,%dn“, x, y ); 程序运行后的输出结果是 ( A) 3,5 ( B) 5,3 ( C) 35,35 ( D) 8,8 40 有以下程序 #include stdio.h struct tt int x; struct tt *y; s2= 1,0,2,0; main( ) struct tt *p=s; p- y=s; printf(“%d“,+p- x); 程序运行后的

23、输出结果是 ( A) 2 ( B) 0 ( C) 1 ( D) 3 二、程序填空题 41 给定程序中,函数 fun的功能是:计算下式前 n项的和,并作为函数值返回。例如,当形参 n的值为 10时,函数返回一 0 204491。 请在程序的下画线处填入正确的内容并把下画线删除,使程序得出正确的结果。 注意:源程序给出如下。 不得增行或删行,也不得更改程序的结构 ! 试题程序: #include stdio h double fun(int n) int i, k; double s, t; s=0 ;/*found*/ k=【 1】; for(i=1, i =n;i+)/*found*/ t=【

24、 2】; s=s+k* (2*i1)*(2*i+1) (t*t);/*found*/ k=k*【 3】; return s; main() int n=一 1, while(n 0) printf(“Please input(n 0): ”); scanf(“ d”, n); prLntf(“ nThe result is: f n”, fun(n); 三、程序修改题 42 下列给定程序中函数 fun的功能是:从 N个字符串中找出最长的串,并将其地址作为函数值返回。各字符串在主函数中输入,并放入一个字符串数组中。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动 main函数,不得增

25、行或删行,也不得更改程序的结构 ! 试题程序: #include string h #include stdio h #define N 5 #define M 81 /*found*/ fun(char(*sq)M) int i, char*sp; sp=sq0; for(i=0; i N, i+) if(strlen(sp) strlen(sq i) sp=sqi; /*found*/ return sq, void main() char strNM, *longest; int i; printf(“Enter d lines: n”, N); for(i=0 ; i N; i+) g

26、ets(stri); printf(“ nThe d string: n”, N), for(i=0, i N, i+) puts(stri), longest=fun(str); printf(“ nThe longest string: n”); puts(10ngest); 四、程序设计题 43 N名学生的成绩已在主函数中放入一个带有头结点的链表结构中, h指向链表的头结点。请编写函数 fun,其功能是:找出学生的最高分,并由函数值返回。 注意:部分源程序给出如下。 请勿改动主函数 main和其他函数中的任何内容,仅在函数 fun的花括号中填入你编写的若干语句。 试题程序: #inclu

27、de stdio h #include stdlib h #define N 8 struct slist double s; struct slist*next; ; typedef struct slist STREC; double fun(STREC * h) STREC*creat(double*s) STREC*h, *p, *q; int i=0, h=P=(STREC*)malloc(sizeof (STREC); P一 s=0 ; while(i N) *产生 8个结点的链表,各分数存入链表中 * q*(STREC*)malloc(sizeof(STREC); q一 s=si

28、; i+; P一 next=q; p=q; p一 next=NULL; return h; *返回链表的首地址 * outlist(STREC*h) STREC*P; P=h一 next: printf(“head”); do printf(“一 2 0f”, P一 S), p=p一 next; *输出各分数。 while(P一 next!=NULL); printf(“ n n”); VOid main() double sN=85, 76, 69, 85, 91, 72, 64, 87), max; STREC*h; h=creat(s); outliSt(h); max=fun(h);

29、printf(“max= 6 1f n”, max); 国家二级( C语言)机试模拟试卷 27答案与解析 一、选择题 1 【正确答案】 A 【试题解析】 算法的有穷性是指操作步骤有限且能在有限时间内完成,如果一个算法执行 耗费的时间太长,即使最终得出了正确结果,也是没有意义的。 B选项错误。 一个算法复杂度的高低体现在运行该算法所需要的计算机资源的多少。 C选项错误。 算法的效率是指算法执行的时间,算法执行时间需通过依据该算法编制的程序在计算机上运行时所消耗的时间来度量,这就与算法本身设计的优劣以及具体的编程实现有关,数据的存储结构会极大的影响程序的执行时间。 D选项错误。 算法在实现时需要用

30、具体的程序设计语言来实现,所以程序可以作为实现算法的一种表达方式。故选 A选项 . 2 【正确答案】 B 【试题解析】 循环队列长度为 m,由初始状态为 front=rear=m可知此时循环队列为空。入队运算时,首先队尾指针 (rear)进 1(即 rear+1),然后在 rear指针指向的位置插入新元素。特别的,当队尾指针 rear=m+1时,置 rear=1。退队运算时,排头指针 (front)进 1(即 front+1),然后删除 front指针指向的位置上的元素,当排头指针 front=m+1时,置 front=1。 从排头指针 front指向的后一个位置直到队尾指针 rear指向的位

31、置之间所有的元素均为队列中的元素,则该循环队列中的元素个数为 m-(m-1)=1。故选择 A选项 . 3 【正确答案】 A 【试题解析】 在单链表的第一个结点前增加一个表头结点,队头指针指向表头结点,最后一个结点的指针域的值由 NULL改为指向表头结点,这样的链表称为循环链表。在循环链表中,只要指出表中任何一个结点的位置,就可以从它出发没有重复地扫描到表中其他所有的结点。 双向链表与二叉链表都可以扫描到所有结点,但是会有重复。 有序链表如果是单链表的情况下,不能扫描到所有结点。故 A选项正确 . 4 【正确答案】 A 【试题解析】 树是一种简单的非线性结构,直观地来看,树是以 分支关系定义的层

32、次结构。在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。首先假设这样的树是存在的,由于只有度为 3的结点和叶子结点,可知最后一层都为叶子结点,倒数第二层一部分结点的度为 3,一部分结点为叶子结点。结点总数为 25,叶子结点有 7个,则度为 3的结点有 18个,由于 (34-1-1)/2 18 (35-1-1)/2可知,树共有 5层,前三层有度为 3的结点 (34-1-1)/2=13个,第四层有 34-1=27个结点,其中 5个是度为 3的结点, 22个是叶子结点,此时与题目给出的叶子结 点有 7个相矛盾,故不存在这样的树。故选择 A选项 . 5 【正确答案】

33、C 【试题解析】 二分法查找也称拆半查找,能使用二分法查找的线性表必须满足两个条件,用顺序存储结构以及线性表有序。利用二分法查找元素 X的过程如下:将 X与线性表的中间项比较,如果的值与中间项的值相等,则查找成功,结束查找;如果小于中间项的值,则在线性表的前半部分以二分法继续查找;如果大于中间项的值,则在线性表的后半部分以二分法继续查找。可以证明,对于长度为的有序线性表,在最坏情况下,二分法查找需比较次,故时间复杂度为。故选择 A选项。 6 【正确答案】 A 【试题解析】 在树结构中,一个结点所拥有的后件个数称为该结点的度,所有结点中最大的度称为树的度。对任何一棵二叉树,度为 0的结点总是比度

34、为 2的结点多一个。 如果有一棵二叉树,结点总数为 730,假设度为 0的结点个数为 n,则有 n+30+n-1=730, n=350.5,由于结点个数必须是整数,所以不可能存在题目中这样的二叉树。故选 A选项 . 7 【正确答案】 A 【试题解析】 需求分析阶段的工作可以分为个方面:需求获取、需求分析、编写需求规格说明书和需求评审。需求 分析的任务是发现需求、求精、建模和定义需求的过程,是描述 “做什么 “的软件开发阶段。故选 A选项 8 【正确答案】 D 【试题解析】 系统软件是管理计算机的资源,提高计算机的使用效率,为用户提供各种服务的软件。应用软件是为了应用于特定的领域而开发的软件。

35、选项 A属于系统软件,选项 B、 C、 D属于应用软件。故选 D选项 . 9 【正确答案】 A 【试题解析】 实体集之间通过联系来建立联接关系分为三类:一对一联系( 1:1)、一对多联系( 1:m)、多对多联系( m:n)。 由于医生可以为病人开不同的药,而 同一种药也可由不同医生开给病人,所以两者的联系属于多对多。故选 A选项 . 10 【正确答案】 A 【试题解析】 表示针对属性进行的投影运算,表示针对元组进行的选择运算, 表示交运算, 表示并运算。 要求检索结果为关系模式中的学生学号 S#,首先在几种属性中选择学生学号,其次要在其中选择满足条件的元组,条件是课号为 2且成绩及格,即为 “

36、,故完整表达式为。本题选 A选项。 11 【正确答案】 A 【试题解析】 C语言赋值运算符的结合方向是从右向左,使用的变量必须都是已经定义了的, int a=b=c=d=1; 本条语句首先执行赋值运算 d=1,由于 b并未定义,故编译不通过,提示没有定义标识符 b、 c、 d,故 A项错误。答案为 A选项。 12 【正确答案】 B 【试题解析】 %lf是针对 double的,如果仅用 %f,输入的数据可能没有被完全接收 ,数据的精度可能不足 ,选项 C,D错误。 %f主要针对 float类型的变量的输入。 %d主要针对整型数据的输入 , %c主要针对字符类型的数据的输入 ,选项 A错误。故答案

37、为 B选项 13 【正确答案】 A 【试题解析】 printf(“%dn“,11+011) 中, 11为十进制, 011为八进制形式,打印格式 %d表示十进制格式输出,因此,先将八进制数转化为十进制,011(8)=81*1+1*80=9,相当于 printf(“%dn“,11+9),故答案为 20, A选项正确 14 【正确答案】 C 【试题解析】 算法的三种基本结构可以表达任何算法,只是不同的实现复杂度不相同。因此选项 A错误。 C语言是编译型语言,程序必须先编译、链接才能运行,因此选项 B错误。 C语言是高级程序语言,计算机不能识别除了机器语言以外的任何语言,因此 C程序代码转换为机器 语

38、言才能在计算机上运行。因此选项 D错误。答案为 C选项。 15 【正确答案】 C 【试题解析】 C 语言中,逗号运算符可以把两个以上(包含两个)的表达式连接成一个表达式。逗号运算符的优先级是所有运算符中级别最低的,逗号运算符保证左边的子表达式运算结束后才进行右边的子表达式的运算。也就是说,逗号运算符是一个序列点,其左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。 1、后置自增运算: k+表示先运算,后自加。 2、前置自增运算: +k表示先自加,后运算。因 此,表达式x=0,x+10,x+的计算过程为首先赋值 x=0,然后将 x加 10,但是并不对

39、 x进行赋值,最后计算 x+,并 ,根据后置自增运算的计算结果,即为 x=0.0。,故答案为 C选项。 16 【正确答案】 B 【试题解析】 C语言还提供了一种用于多分支选择的 switch语句,计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有 case后的语句。如表达式的值与所有 case后的常量表达式均不相同时,则执行 default后的语句。 x=1;进入第一层 switch, y=0;进入第二层 switch,执行 a+;break;后 a=1;在进入case 2,(这里 case 1:没

40、有 break,)执行了 a+,b+,由于存在 break,则跳出switch,得到 a=2,b=1,因此答案为 B选项。 左边所有副作用都结束后,才对其右边的子表达式进行运算,并以最右边表达式值作为整个逗号表达式的值。 1、后置自增运算: k+表示先运算,后自加。 2、前置自增运算: +k表示先自加,后运算。因此,表达式 x=0,x+10,x+的计算过程为 首先赋值 x=0,然后将 x加 10,但是并不对 x进行赋值,最后计算 x+,并 ,根据后置自增运算的计算结果,即为 x=0.0。,故答案为 C选项。 17 【正确答案】 A 【试题解析】 C语言约定分号为一条语句的结束。因此 for(

41、i=0; i 4; i+,i+) for( k=1; k 3; k+ );是完整的语句,对 printf();没有任何影响,最后 printf(“*“),执行一次。因此答案为 A选项 . 18 【正确答案】 C 【试题解析】 循环的作用是将输入的字符串转化为大写, getchar()每次读入一个字符, putchar()每次输出一个字符,当遇到 #字符结束。 putchar(+c),表示将字符变量 c加 1后输出。因此,输入 aBcDefG#,得到的结果是 BCDEFGH。故答案为C选项 . 19 【正确答案】 C 【试题解析】 在 C语言中,需要在 main函数后面定义函数,需要提前声明,否

42、则调用报错,无法找到该函数。 m=f(f(f(n),一共调用 3次 f()函数, f()函数是对n*2,因此,结果是 n*2*2*2,得到结果为 8。故答案为 C选项 20 【正确答案】 A 【试题解析】 函数指针 p指向一个同类型的函数 f时,可以写成: p = f,而不能写成 i N; i+ ) j=N - (i+1);/反对角线列位置 if (x*r1*r2 xij) *r1 = i; *r2 = j; /比较正反对角线的元素,使得*r1,*r2始终只在最大元素的位置。 由数组元素可得,正反对角线的最大元素为 7。答案为 C选项 . 23 【正确答案】 A 【试题解析】 void fun

43、(int array4, int *ptr); fun()函数,第一个参数虽然是数组类型,但是会退化为指针,并且形参数组的个数没有用。第二个参数是指针,因此实际上二个形参都是指针。两个形参都是指针,传递的都是地址,而不是值。可知选项 B、 C、 D错误。答案为 A选项 24 【正确答案】 A 【试题解析】 C语言声明 scanf(“格式化字符串 “,地址表 );可知 scanf()的第二个参数是地址,因此,从四个答案中可以判断,只有 选项 A是 pi的地址,其他的均是变量本身。故答案为 A选项。 25 【正确答案】 C 【试题解析】 题意统计字符 s中阿拉伯数字的个数。 char s=012x

44、y08s34f4w2 ;元素是字符型。 0 =48;而 0 =0;因此可以计算出 0之前阿拉伯数字的个数,由字符串 s可知,有 3个阿拉伯数字。答案为 C选项。 26 【正确答案】 A 【试题解析】 *p3p30是一个字符,不是字符串,选项 A错误。 p3 和 str2和 *p分别代表了 ddd,ccc,aaa。答 案为 A选项。 27 【正确答案】 A 【试题解析】 static静态变量只在声明时初始化一次。 mul()累乘,第一次init=1,init*=val, 第二次 init=1,val=2,第三次 init=2,val=3,第四次 init=6,val=4,第五层 init=24,

45、val=5,因此结果为 1,2,6,24,120。故答案为 A选项。 28 【正确答案】 A 【试题解析】 fun()函数使用了静态变量,静态变量只在声明时初始化一次。首先实参的数值是 -12, if判断后输出负号,并将 n=12, 计算 k+=n%10, k+=2, 2,因此输出 2,后将数值除以 10,结果为 1,递归调用 fun()函数,第二次调用 fun(),此时 n=1, k=2,计算 k+=n%10: k+=1: 3,因此打印 3,。故最后打印结果为 -2,3,故答案为 A选项。 29 【正确答案】 A 【试题解析】 结构体 s中 n代表数组的实际长度, a是个定长数组。函数 f(

46、),对结构体 S内的 a数组元素使用冒泡法进行递增排序。因此最终数组的元素是一个递增序列。故答案为 A选项。 30 【正确答案】 A 【试题解析】 C语言函数参数传递分为 : 1、值传递过程中,被调函数的形参作为被调函数的局部变量处理,即在内存的堆栈中开辟空间以存放由主调函数放进来的实参的值,从而成为了实参的一个拷贝。值传递的特点是被调函数对形参的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。 2、地址传递过程中,被调函数的形参虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放

47、的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数 中的实参变量。 题设中,参数 b是地址传递,因此会直接影响实参变量。 a,c是值传递,传递是 a,c的拷贝,不会 a,c实参产生影响,因此,调用函数返回, c没有被修改, b被修改了。故答案为 A选项。 31 【正确答案】 B 【试题解析】 #define命令是 C语言中的一个宏定义命令,标识符一般使用大写,为了区分其他标识符 ,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。 后置自增运算: k+表示先运算,后自加。 意思是遇到 k+了 ,先把当前的 k的值拿来参加运算,后面再去管它的自加。 SUB(a+,b+): (a+)*(b+):3*4。故答案为 B选项。 32 【正

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