二级C语言模拟652.docx

上传人:b****6 文档编号:6310304 上传时间:2023-01-05 格式:DOCX 页数:15 大小:24.17KB
下载 相关 举报
二级C语言模拟652.docx_第1页
第1页 / 共15页
二级C语言模拟652.docx_第2页
第2页 / 共15页
二级C语言模拟652.docx_第3页
第3页 / 共15页
二级C语言模拟652.docx_第4页
第4页 / 共15页
二级C语言模拟652.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

二级C语言模拟652.docx

《二级C语言模拟652.docx》由会员分享,可在线阅读,更多相关《二级C语言模拟652.docx(15页珍藏版)》请在冰豆网上搜索。

二级C语言模拟652.docx

二级C语言模拟652

二级C语言模拟652

(总分:

136.00,做题时间:

90分钟)

一、选择题(总题数:

40,分数:

58.00)

1.设变量x为longint型并已正确赋值,以下表达式中能将x的百位上的数字提取出的是______。

(分数:

1.00)

 A.x/10%100

 B.x%10/100

 C.x%100/10

 D.x/100%10 √

解析:

[解析]x/100的个位数是x的百位数上的数字,所以再进行除10取余运算即可得到该数字。

2.有以下程序:

#include<stdio.h>

main()

{unsignedchara=2,b=4,c=5,d;

d=a|b;d&=c;printf("%d/n",d);}

程序运行后的输出结果是______。

(分数:

1.00)

 A.3

 B.4 √

 C.5

 D.6

解析:

[解析]&按位与,如果两个相应的二进制位都为1,则该位的结果值为1,否则为0。

1按位或,两个相应的二进制位中只要有一个为1,该位的结果值为1。

2的二进制为00000010,4的二进制为00000100,所以两个数做或运算结果为00000110,该数与5的二进制00000101做与操作结果为00000100,即4。

所以选择B选项。

3.有以下程序:

#include<stdio.h>

main()

{

structSTU

{

charname[9];

charsex;

doublescore[2];

};

structSTUa={"Zhao","m",85.0,90.0},b={"Qian","f",95.0,92.0};

b=a;

printf("%s,%c,%2.0f,%2.0f/n",b.name,b.sex,b.score[0],b.score[1]);

}

程序的运行结果是______。

(分数:

2.00)

 A.Qian,m,85,90

 B.Zhao,m,85,90 √

 C.Zhao,f,95,92

 D.Qian,f,95,92

解析:

[解析]本题考查结构体初始化操作。

本题中可以直接将结构体a赋值给b,所以输出的结果和a一样,B选项正确。

4.有以下程序:

#include<stdio.h>

main()

{inti=0,a=0;

while(i<20)

{for(;;)

{if((i%10)==0)break;

elsei--;}

i+=11;a+=i;}

pfintf("%d/n",a);}

程序的输出结果是______。

(分数:

2.50)

 A.62

 B.63

 C.33

 D.32 √

解析:

5.有以下程序:

#include<stdio.h>

main()

{intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;

for(i=0;i<3;i++)

for(j=1;j<=i;j++)t+=b[i][b[j][i]];

printf("%d/n",t);

}

程序运行后的输出结果是______。

(分数:

1.00)

 A.1

 B.3

 C.4 √

 D.0

解析:

[解析]本题考查了两层for循环。

外层循环增量i的值作为内层循环执行次数的值使用。

6.以下关于C语言的叙述中正确的是______。

(分数:

1.00)

 A.C语言的数值常量中夹带空格不影响常量值的正确表示

 B.C语言中的变量可以在使用之前的任何位置进行定义

 C.在C语言算术表达式的书写中、运算符两侧的运算数类型必须一致

 D.C语言中的注释不可以夹在变量名或关键字的中间 √

解析:

[解析]C语言的数值常量中不能夹带空格,所以A选项错误。

C语言中的变量都必须先定义再使用,对变量的定义通常放在函数体内的前部,但也可以放在函数外部或复合语句的开头,不能随便放置,所以B选项错误。

在C语言中运算符两侧的运算数据类型可以不一致,且结果与精度较高的保持一致,所以C选项错误。

7.在软件设计中不使用的工具是______。

(分数:

1.00)

 A.系统结构图

 B.PAD图

 C.数据流图(DFD图) √

 D.程序流程图

解析:

[解析]系统结构图是对软件系统结构的总体设计的图形显示。

在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。

PAD图是在详细设计阶段用到的。

程序流程图是对程序流程的图形表示,在详细设计过程中用到。

数据流图(DFD图)是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,因此它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以本题答案为C。

8.有以下程序:

#include<stdio.h>

main()

{intk=5;

while(--k)printf("%d",k-=3);

printf("/n");

}

程序执行后的输出结果是______。

(分数:

1.00)

 A.1 √

 B.2

 C.4

 D.死循环

解析:

[解析]--k先自减再使用,所以第一次判断条件即为while(4),条件为真,执行打印k的值k=4-3,结果为1;第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。

所以选择A选项。

9.下列叙述中正确的是______。

(分数:

1.00)

 A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 √

 B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构

 C.顺序存储结构能存储有序表,链式存储结构不能存储有序表

 D.链式存储结构比顺序存储结构节省存储空间

解析:

[解析]链式存储结构既可以针对线性结构也可以针对非线性结构,所以B选项与C选项错误。

链式存储结构中每个节点都是由数据域与指针域两部分组成,增加了存储空间,所以D选项错误。

10.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为____

(分数:

1.00)

 A.a<>0

 B.!

a

 C.a=0

 D..a √

解析:

11.以下叙述中,正确的是______。

(分数:

1.00)

 A.局部变量说明为static的存储类,其生存期将得到延长 √

 B.全局变量说明为static的存储类,其作用域将被扩大

 C.任何存储类的变量在未赋初值时,其值都是不确定的

 D.形参可以使用的存储类说明符与局部变量完全相同

解析:

[解析]选项A,局部静态变量的存储空间在程序整个运行期间都不释放,所以比局部动态变量的生存期长。

选项B,全局变量说明为静态存储时,作用域不会扩大。

选项C,局部静态变量未赋初值时,系统编译时会自动赋初值0或空字符。

选项D,在未调用函数时,函数的形参不占内存的存储单元,只有调用时才动态分配存储空间,所以形参不能说明为静态存储,而局部变量可以说明为静态存储。

12.以下结构体说明和变量定义中,正确的是______。

(分数:

1.00)

 A.typedefstructabc{intn;doublem;}ABC;ABCx,y; √

 B.structabc{intn;doublem};structabcx,y;

 C.structABC{intn;doublem;}structABCx,y;

 D.structabc{intn;doublem;};abcx,y;

解析:

[解析]本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,选项A中ABC为新的类型别名,定义正确。

13.在软件开发过程中,软件结构设计是描述______。

 A.数据存储结构

 B.软件体系结构 √

 C.软件结构测试

 D.软件控制过程

解析:

[解析]从工程管理角度来看,软件设计分两步完成:

概要设计和详细设计。

概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。

14.设有定义:

char*c;

以下选项中能够使c正确指向一个字符串的是______。

(分数:

1.00)

 A.charstr[]="string";c=str; √

 B.scanf("%s",c);

 C.c=getchar();

 D.*c="string";

解析:

[解析]选项A定义字符数组str,然后将str赋值给c,c便指向字符串str,符合题意,所以选择A。

15.以下四个程序中不能对两个整型值进行交换的是______。

(分数:

2.50)

 A.#include<stdio.h>voidswap(int*p,int*q){int*t,a;t=&a;*t=*p;*p=*q;*q=*t;}main(){inta=10,b=20;swap(&a,&b);printf("%d%d/n",a,b);}

 B.#include<stdio.h>voidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){inta=10,b=20;swap(&a,&b);printf("%d%d/n",a,b);}

 C.#include<stdio.h>voidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){int*a,*b;*a=10,*b=20;swap(a,b);printf("%d%d/n",*a,*b);} √

 D.#include<stdio.h>voidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){inta=10,b=20,*x=&a,*y=&h;swap(x,y);printf("%d%d/n",a,b);}

解析:

[解析]main()

{int*a=0,*b=0;

*a=10,*b=20;//有错误,a与b没有指向任何对象,但却给对象赋值。

swap(a,b);printf("%d%d/n",*a,*b);

}

swap(int*p,int*q)

{intt;

t=*p;*p=*q;*q=t;

}

16.若有以下程序:

#include<stdio.h>

main()

{inta=0,b=0,c=0

c=(a+=++b,b+=4);

printf("%d,%d,%d/n",a,b,c);

}

则程序的输出结果是______。

(分数:

2.00)

 A.1,5,1

 B.1,5,5 √

 C.-1,4,4

 D.-1,4,-1

解析:

[解析]逗号运算符的结合性从左到右,因此逗号表达式将从左到右进行计算。

且逗号运算符的优先级最低。

先计算a+=++b,结果a为1,b为1,然后计算b+=4,b的值为5。

逗号表达式的值为其中最后一个表达式的值,所以将5赋给变量c,即a为1,b为5,c为5。

所以选择B。

17.以下有4组用户标识符,其中合法的一组是______。

(分数:

2.00)

 A.For-subCase

 B.4dDOSize

 C.f2_G3IFabc √

 D.WORDvoiddefine

解析:

[解析]选项A中有非法标识符-sub,选项B中有非法标识符4d,选项D中有C语言保留字void。

18.以下选项中,不能对主函数中变量i和j的值进行交换的程序是______。

(分数:

1.00)

 A.#include<stdio.h>voidswap(int*p,int*q){int*t;*t=*p;*p=*q;*q=*t;}main(){inti=10,j=20,*a=&i,*b=&j;swap(a,b);printf("i=%dj=%d/n",i,j);} √

 B.#include<stdio.h>voidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){inti=10,j=20,*a=&i,*b=&j;swap(a,b);printf("i=%dj=%d/n",i,j);}

 C.#include<stdio.h>#include<stdlib.h>voidswap(int*p,int*q){int*t;t=(int*)malloc(sizeof(int));*t=*p;*p=*q;*q=*t;free(t);}main(){inti=10,j=20;swap(&i,&j);printf("i=%dj=%d/n",i,j);}

 D.#include<stdio.h>voidswap(int*p,int*q){intt;t=*p;*p=*q;*q=t;}main(){inti=10,j=20,*x=&i,*y=&j;swap(x,y);printf("i=%dj=%d/n",i,j);}

解析:

[解析]选项A,定义了一个临时指针,实现两个指针地址的交换,而传入了参数是二个指针的副本,即a、b地址的副本,故交换了副本地址,对a、b无影响,故选择A选项。

B选项调用函数传入的是i与j地址,函数体内交换是地址内元素,临时变量为整型变量,能实现i与j值交换。

C选项调用函数传入的是i与j地址,函数体内交换是地址内元素,临时变量为整型指针,且已正确开辟内存,能实现i与j值交换。

D选项与B选项相同,能实现i与i值交换。

19.有以下程序:

#include<stdio.h>

structS{inta;intb;};

main()

{structSa,*p=&a;

a.a=99;

printf("%d/n",______);

}

程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是______。

(分数:

1.00)

 A.a

 B.*p.a √

 C.p->a

 D.(*p).a

解析:

[解析]本题考查结构体变量的引用,题目中要求输出结构体中成员a的数据,p为指针,*p为结构体变量,那么*p.a可以表示为结构体中成员a的数据。

20.以下叙述中正确的是______。

(分数:

2.50)

 A.a是实型变量,C允许进行赋值a=10,但不可以这样说:

实型变量中允许存放整型值 √

 B.在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式

 C.执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0

 D.已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3

解析:

[解析]C语言中语法上规定实型变量是不能存放整型类型的数据的,整型数据也不能存放实型数据。

是为了避免类型转换之间可能会发生的错误。

21.有以下程序:

#include<stdio.h>

main()

{chars1[]="programe",s2[]="Language";

char*p1=s1,*p2=s2;

intk;

for(k=0;k<8;k++)

if(*(p1+k)==*(p2+k))

printf("%s/n",*(p1+k));

}

程序的运行结果是______。

(分数:

1.00)

 A.grameamee √

 B.gae

 C.programe

 D.无输出字符

解析:

[解析]定义两个指针变量p1、p2,分别指向数组s1、s2首地址,在for循环中,比较两个指针所指地址的元素是否相等,如果相等,则输出当前指针指向地址的字符串。

22.循环队列的存储空间为Q(1:

50),初始状态为front=rear=50。

经过一系列正常的入队与退队操作后,front=rear=25,此后又正常地插入了一个元素,则循环队列中的元素个数为______。

(分数:

1.00)

 A.51

 B.50

 C.49

 D.1 √

解析:

[解析]循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。

入队运算时,队尾指针进1(即rear+1),然后在rear指针指向的位置插入新元素。

当front=rear=25时可知队列空或者队列满,此后又正常地插入了一个元素说明之前队列为空,所以插入操作之后队列里只有一个元素。

故D选项正确。

23.有以下程序

#include<stdio.h>

main()

{

inta=1,b=2,c=3,x;

x=(a^b)&c;

printf("%d/n",x);

}

程序的运行结果是______。

(分数:

1.00)

 A.2

 B.1

 C.3 √

 D.0

解析:

[解析]a^b后值为3,3&c值为3,所以选择C。

24.在软件开发中,需求分析阶段产生的主要文档是______。

(分数:

1.50)

 A.软件集成测试计划

 B.软件详细设计说明书

 C.用户手册

 D.软件需求规格说明书 √

解析:

[解析]需求分析阶段的工作可以概括为:

需求获取、需求分析、编写需求规格说明书、需求评审四个方面,因此本题答案为D。

25.设a、b和c都是int型变量,且a=3,b=4,c=5,则以下的表达式中值为0的表达式是

(分数:

2.00)

 A.a&&b

 B.a<=b

 C.a‖b+c&&b-c

 D.!

((a<b)&&!

c‖1) √

解析:

26.以下叙述错误的是______。

(分数:

2.00)

 A.C语言区分大小写

 B.C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改

 C.整数和实数都能用C语言准确无误地表示出来 √

 D.在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示

解析:

27.有下列程序:

main()

{inty=10

do{y--;}while(--y);

printf("%d/n",--y);

}

当执行程序时,输m的结果是______。

(分数:

2.50)

 A.-1

 B.1

 C.4

 D.0 √

解析:

[解析]本题考查do-while循环。

当--y是0(即y是0)时结束循环,输出--y,先将y的值减1再输出y的值。

28.若有以下定义和语句:

chars[10]="abcd!

",*s2="/n123/";

printf("%d%d/n",strlen(s1),strlen(s2));

则输出结果是______。

(分数:

1.00)

 A.55 √

 B.105

 C.107

 D.58

解析:

[解析]/n和//分别为转义字符,各占据一个字符的位置。

29.在软件开发中,需求分析阶段产生的主要文档是______。

(分数:

1.00)

 A.软件集成测试计划

 B.软件详细设计说明书

 C.用户手册

 D.软件需求规格说明书 √

解析:

[解析]需求分析阶段的工作可以概括为:

需求获取、需求分析、编写需求规格说明书、需求评审四个方面。

所以选择D。

30.有如下嵌套的if语句

if(a<b)

if(a<c)k=a;

elsek=c;

else

if(b<c)k=b;

elsek=c;

以下选项中与上述if语句等价的语句是______。

(分数:

2.50)

 A.k=(a<b)?

((a<c)?

a:

c):

((b<c)?

h:

c); √

 B.k=(a<b)?

((b<c)?

a:

b):

((h>c)?

b:

c);

 C.k=(a<b)?

a:

b;k=(b<c)?

b:

c;

 D.k=(a<b)?

a:

h:

k=(a<c)?

a:

c;

解析:

[解析]ifelse语句和?

可以互换,?

前语句相当于if后括号内容,?

号后语句相当于if后的执行语句,冒号后语句相当于else后语句,综合以上可以看出A符合题意。

31.有以下程序

#include<stdio.h>

main()

{inti;

for(i=1;i<=40;i++)

{if(i++%5==0)

if(++i%8==0)printf("%d",i);

}

printf("/n");

}

执行后的输出结果是______。

(分数:

2.00)

 A.32 √

 B.24

 C.5

 D.40

解析:

[解析]本题考查了白增运算符。

自增运算符“++”分为前缀和后缀两种形式。

两种形式的作用效果是一样的,都是使运算分量的值加1,但是它们的表达式的值不一样,前缀形式表达式的值为运算分量加1之后的值,而后缀形式表达式的值为运算分量加1之前的值。

题目中使用了一个for循环,循环变量i从1递增到40。

在循环体中有两条嵌套的if吾句,首先判断i++%5==0,即判断i++的值(i加1之前的值)是否能被5整除(判断后i被加1),然后再判断++i的值(i加1之后的值)是否能被8整除(判断后i被加1),若两个条件都满足了,就输出i的值,只有i=30时,满足i++%5==0,此时i=31,++i%8==0成立,此时i=32。

32.下列程序的运行结果是______。

main()

{intx=1,y=3,a=0;

while(x++!

=(y-=1))

{a+=1;

if(y<x)break;

}

printf("%d,%d,%d/n",x,y,a);

}

(分数:

2.50)

 A.2,3,2

 B.2,3,1

 C.1,3,3

 D.3,1,2 √

解析:

[解析]本题考查while循环。

第一次循环,y=y-1,y=2。

循环条件成立,x=1,x++后值为1,x自加变成2,进入循环,a=a+1=1,判断if语句条件是否成立,y<x不成立,接着执行下一次循环。

第二次循环,x=2,y-1=1,循环条件成立,进入循环,a=a+1=2,判断if语句的控制条件是否成立,y<x成立,执行break语句,退出循环。

结果为D。

33.数据库系统的三级模式不包括______。

(分数:

1.00)

 A.概念模式

 B.内模式

 C.外模式

 D.数据模式 √

解析:

[解析]数据库系统的三级模式是概念模式、外模式和内模式,不包括数据模式,因此选择D。

34.下面不能作为结构化方法软件需求分析工具的是______。

(分数:

1.00)

 A.系统结构图 √

 B.数据字典(DD)

 C.数据流程图(DFD图)

 D.判定表

解析:

[解析]结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。

35.有以下程序段:

intk=0;

while(k=)k++;

while循环执行的次数是______。

(分数:

2.50)

 A.无限次 √

 B.有语法错,不能执行

 C.一次也不执行

 D.执行一次

解析:

36.有以下程序

#include<stdio.h>

main()

{int

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

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1