二级C语言模拟652Word格式.docx
- 文档编号:19319597
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:15
- 大小:24.17KB
二级C语言模拟652Word格式.docx
《二级C语言模拟652Word格式.docx》由会员分享,可在线阅读,更多相关《二级C语言模拟652Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
};
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.有以下程序:
{inti=0,a=0;
while(i<20)
{for(;
;
)
{if((i%10)==0)break;
elsei--;
i+=11;
a+=i;
pfintf("
a);
程序的输出结果是______。
2.50)
A.62
B.63
C.33
D.32
5.有以下程序:
#include<stdio.h>
{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]];
t);
A.1
B.3
C.4
D.0
[解析]本题考查了两层for循环。
外层循环增量i的值作为内层循环执行次数的值使用。
6.以下关于C语言的叙述中正确的是______。
A.C语言的数值常量中夹带空格不影响常量值的正确表示
B.C语言中的变量可以在使用之前的任何位置进行定义
C.在C语言算术表达式的书写中、运算符两侧的运算数类型必须一致
D.C语言中的注释不可以夹在变量名或关键字的中间
[解析]C语言的数值常量中不能夹带空格,所以A选项错误。
C语言中的变量都必须先定义再使用,对变量的定义通常放在函数体内的前部,但也可以放在函数外部或复合语句的开头,不能随便放置,所以B选项错误。
在C语言中运算符两侧的运算数据类型可以不一致,且结果与精度较高的保持一致,所以C选项错误。
7.在软件设计中不使用的工具是______。
A.系统结构图
B.PAD图
C.数据流图(DFD图)
D.程序流程图
[解析]系统结构图是对软件系统结构的总体设计的图形显示。
在需求分析阶段,已经从系统开发的角度出发,把系统按功能逐次分割成层次结构,是在概要设计阶段用到的。
PAD图是在详细设计阶段用到的。
程序流程图是对程序流程的图形表示,在详细设计过程中用到。
数据流图(DFD图)是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,因此它是一种功能模型,是在可行性研究阶段用到的而非软件设计时用到,所以本题答案为C。
8.有以下程序:
{intk=5;
while(--k)printf("
%d"
k-=3);
/n"
);
程序执行后的输出结果是______。
A.1
B.2
C.4
D.死循环
[解析]--k先自减再使用,所以第一次判断条件即为while(4),条件为真,执行打印k的值k=4-3,结果为1;
第二次判断条件即为while(0),条件为假,结束循环,打印回车换行符。
所以选择A选项。
9.下列叙述中正确的是______。
A.顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的
B.顺序存储结构只针对线性结构,链式存储结构只针对非线性结构
C.顺序存储结构能存储有序表,链式存储结构不能存储有序表
D.链式存储结构比顺序存储结构节省存储空间
[解析]链式存储结构既可以针对线性结构也可以针对非线性结构,所以B选项与C选项错误。
链式存储结构中每个节点都是由数据域与指针域两部分组成,增加了存储空间,所以D选项错误。
10.若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为____
A.a<>0
B.!
a
C.a=0
D..a
11.以下叙述中,正确的是______。
A.局部变量说明为static的存储类,其生存期将得到延长
B.全局变量说明为static的存储类,其作用域将被扩大
C.任何存储类的变量在未赋初值时,其值都是不确定的
D.形参可以使用的存储类说明符与局部变量完全相同
[解析]选项A,局部静态变量的存储空间在程序整个运行期间都不释放,所以比局部动态变量的生存期长。
选项B,全局变量说明为静态存储时,作用域不会扩大。
选项C,局部静态变量未赋初值时,系统编译时会自动赋初值0或空字符。
选项D,在未调用函数时,函数的形参不占内存的存储单元,只有调用时才动态分配存储空间,所以形参不能说明为静态存储,而局部变量可以说明为静态存储。
12.以下结构体说明和变量定义中,正确的是______。
A.typedefstructabc{intn;
doublem;
}ABC;
ABCx,y;
B.structabc{intn;
doublem};
structabcx,y;
C.structABC{intn;
}structABCx,y;
D.structabc{intn;
abcx,y;
[解析]本题考查typedef的使用方法,typedef对已存在的类型使用一个新的名字,选项A中ABC为新的类型别名,定义正确。
13.在软件开发过程中,软件结构设计是描述______。
A.数据存储结构
B.软件体系结构
C.软件结构测试
D.软件控制过程
[解析]从工程管理角度来看,软件设计分两步完成:
概要设计和详细设计。
概要设计(又称结构设计)将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式。
14.设有定义:
char*c;
以下选项中能够使c正确指向一个字符串的是______。
A.charstr[]="
string"
c=str;
B.scanf("
%s"
c);
C.c=getchar();
D.*c="
[解析]选项A定义字符数组str,然后将str赋值给c,c便指向字符串str,符合题意,所以选择A。
15.以下四个程序中不能对两个整型值进行交换的是______。
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);
%d%d/n"
a,b);
}
B.#include<stdio.h>voidswap(int*p,int*q){intt;
t=*p;
*q=t;
C.#include<stdio.h>voidswap(int*p,int*q){intt;
}main(){int*a,*b;
*a=10,*b=20;
swap(a,b);
*a,*b);
}
D.#include<stdio.h>voidswap(int*p,int*q){intt;
}main(){inta=10,b=20,*x=&
a,*y=&
h;
swap(x,y);
[解析]main()
{int*a=0,*b=0;
//有错误,a与b没有指向任何对象,但却给对象赋值。
swap(int*p,int*q)
{intt;
16.若有以下程序:
#include<stdio.h>
main()
{inta=0,b=0,c=0
c=(a+=++b,b+=4);
%d,%d,%d/n"
a,b,c);
则程序的输出结果是______。
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组用户标识符,其中合法的一组是______。
A.For-subCase
B.4dDOSize
C.f2_G3IFabc
D.WORDvoiddefine
[解析]选项A中有非法标识符-sub,选项B中有非法标识符4d,选项D中有C语言保留字void。
18.以下选项中,不能对主函数中变量i和j的值进行交换的程序是______。
A.#include<stdio.h>voidswap(int*p,int*q){int*t;
*t=*p;
}main(){inti=10,j=20,*a=&
i,*b=&
j;
swap(a,b);
i=%dj=%d/n"
i,j);
B.#include<stdio.h>voidswap(int*p,int*q){intt;
i,*b=&
C.#include<stdio.h>#include<stdlib.h>voidswap(int*p,int*q){int*t;
t=(int*)malloc(sizeof(int));
*p=*q;
*q=*t;
free(t);
}main(){inti=10,j=20;
i,&
j);
D.#include<stdio.h>voidswap(int*p,int*q){intt;
*p=*q;
*q=t;
}main(){inti=10,j=20,*x=&
i,*y=&
swap(x,y);
[解析]选项A,定义了一个临时指针,实现两个指针地址的交换,而传入了参数是二个指针的副本,即a、b地址的副本,故交换了副本地址,对a、b无影响,故选择A选项。
B选项调用函数传入的是i与j地址,函数体内交换是地址内元素,临时变量为整型变量,能实现i与j值交换。
C选项调用函数传入的是i与j地址,函数体内交换是地址内元素,临时变量为整型指针,且已正确开辟内存,能实现i与j值交换。
D选项与B选项相同,能实现i与i值交换。
19.有以下程序:
structS{inta;
intb;
{structSa,*p=&a;
a.a=99;
______);
程序要求输出结构体中成员a的数据,以下不能填入横线处的内容是______。
A.a
B.*p.a
C.p->a
D.(*p).a
[解析]本题考查结构体变量的引用,题目中要求输出结构体中成员a的数据,p为指针,*p为结构体变量,那么*p.a可以表示为结构体中成员a的数据。
20.以下叙述中正确的是______。
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.有以下程序:
{chars1[]="
programe"
s2[]="
Language"
char*p1=s1,*p2=s2;
intk;
for(k=0;
k<8;
k++)
if(*(p1+k)==*(p2+k))
%s/n"
*(p1+k));
A.grameamee
B.gae
C.programe
D.无输出字符
[解析]定义两个指针变量p1、p2,分别指向数组s1、s2首地址,在for循环中,比较两个指针所指地址的元素是否相等,如果相等,则输出当前指针指向地址的字符串。
22.循环队列的存储空间为Q(1:
50),初始状态为front=rear=50。
经过一系列正常的入队与退队操作后,front=rear=25,此后又正常地插入了一个元素,则循环队列中的元素个数为______。
A.51
B.50
C.49
D.1
[解析]循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。
入队运算时,队尾指针进1(即rear+1),然后在rear指针指向的位置插入新元素。
当front=rear=25时可知队列空或者队列满,此后又正常地插入了一个元素说明之前队列为空,所以插入操作之后队列里只有一个元素。
故D选项正确。
23.有以下程序
inta=1,b=2,c=3,x;
x=(a^b)&
c;
x);
A.2
B.1
C.3
[解析]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的表达式是
A.a&
&
b
B.a<=b
C.a‖b+c&
b-c
D.!
((a<b)&
!
c‖1)
26.以下叙述错误的是______。
A.C语言区分大小写
B.C程序中的一个变量,代表内存中一个相应的存储单元,变量的值可以根据需要随时修改
C.整数和实数都能用C语言准确无误地表示出来
D.在C程序中,正整数可以用十进制、八进制和十六进制的形式来表示
27.有下列程序:
{inty=10
do{y--;
}while(--y);
--y);
当执行程序时,输m的结果是______。
A.-1
D.0
[解析]本题考查do-while循环。
当--y是0(即y是0)时结束循环,输出--y,先将y的值减1再输出y的值。
28.若有以下定义和语句:
chars[10]="
abcd!
"
*s2="
/n123/"
%d%d/n"
strlen(s1),strlen(s2));
则输出结果是______。
A.55
B.105
C.107
D.58
[解析]/n和//分别为转义字符,各占据一个字符的位置。
29.在软件开发中,需求分析阶段产生的主要文档是______。
需求获取、需求分析、编写需求规格说明书、需求评审四个方面。
所以选择D。
30.有如下嵌套的if语句
if(a<b)
if(a<c)k=a;
elsek=c;
else
if(b<c)k=b;
以下选项中与上述if语句等价的语句是______。
A.k=(a<b)?
((a<c)?
a:
c):
((b<c)?
h:
c);
B.k=(a<b)?
b):
((h>c)?
b:
C.k=(a<b)?
b;
k=(b<c)?
D.k=(a<b)?
k=(a<c)?
[解析]ifelse语句和?
:
可以互换,?
前语句相当于if后括号内容,?
号后语句相当于if后的执行语句,冒号后语句相当于else后语句,综合以上可以看出A符合题意。
31.有以下程序
{inti;
for(i=1;
i<=40;
i++)
{if(i++%5==0)
if(++i%8==0)printf("
i);
执行后的输出结果是______。
A.32
B.24
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.下列程序的运行结果是______。
{intx=1,y=3,a=0;
while(x++!
=(y-=1))
{a+=1;
if(y<x)break;
%d,%d,%d/n"
x,y,a);
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.数据库系统的三级模式不包括______。
A.概念模式
B.内模式
C.外模式
D.数据模式
[解析]数据库系统的三级模式是概念模式、外模式和内模式,不包括数据模式,因此选择D。
34.下面不能作为结构化方法软件需求分析工具的是______。
A.系统结构图
B.数据字典(DD)
C.数据流程图(DFD图)
D.判定表
[解析]结构化方法软件需求分析工具主要有数据流图、数据字典、判定树和判定表。
35.有以下程序段:
intk=0;
while(k=)k++;
while循环执行的次数是______。
A.无限次
B.有语法错,不能执行
C.一次也不执行
D.执行一次
36.有以下程序
{int
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二级 语言 模拟 652