admin 管理员组文章数量: 1086019
2024年3月22日发(作者:grep匹配结尾和开头)
计算机二级c语言题库及答案
一、选取题(每小题1分,共40小题,共40分)
1.设循环队列存储空间为Q(1:35),初始状态为front=rear=35。现通过一系列入队
与退队运算后,front=15,rear=15,则循环队列中元素个数为( )。
A.20
B.0或35
C.15
D.16
2.下列关于栈论述中,对的是( )。
A.栈底元素一定是最后入栈元素
B.栈操作遵循先进后出原则
C.栈顶元素一定是最先入栈元素
D.以上三种说法都不对
3.下列链表中,其逻辑构造属于非线性构造是( )0、
A.双向链表
B.带链栈
C.二叉链表
D.循环链表
4.在关系数据库中,用来表达实体间联系是( )。
A.网状构造
B.树状构造
C.属性
D.二维表
5.公司中有各种部门和多名职工,每个职工只能属于一种部门,一种部门可以有多名
职工。则实体部门和职工间联系是( )。
A.1:m联系
B.m:n联系
C.1:1联系
D.m:l联系
6.右两个关系R和S如下:
则由关系R得到关系S操作是( )。
A.自然连接
B.并
C.选取
D.投影
7.数据字典(DD)所定义对象都包括于( )。
A.软件构造图
B.方框图
C.数据流图(DFD图)
D.程序流程图
8.软件需求规格阐明书作用不涉及( )。
A.软件设计根据
B.软件可行性研究根据
C.软件验收根据
D.顾客与开发人员对软件要做什么共同理解
9.下面属于黑盒测试办法是( )。
A.边界值分析
B.途径覆盖
C.语句覆盖
D.逻辑覆盖
10.下面不属于软件设计阶段任务是( )。
A.制定软件确认测试筹划
B.数据库设计
C.软件总体设计
D.算法设计
11.如下论述中对的是( )。
A.在C语言程序中,main函数必要放在其她函数最前面
B.每个后缀为CC语言源程序都可以单独进行编译
C.在C语言程序中,只有main函数才可单独进行编译
D.每个后缀为.CC语言源程序都应当包括一种main函数
12.C语言中标记符分为核心字、预定义标记符和顾客标记符,如下论述对的是( )。
A.预定义标记符(如库函数中函数名)可用做顾客标记符,但失去原有含义
B.顾客标记符可以由字母和数字任意顺序构成
C.在标记符中大写字母和小写字母被以为是相似字符
D.核心字可用做顾客标记符,但失去原有含义
13.如下选项中表达一种合法常量是(阐明:符号口表达空格)( )。
A.9口9口9
B.0Xab
C.123E0.2
D.2.7e
14.C语言重要是借助如下哪个功能来实现程序模块化?( )
A.定义函数
B.定义常量和外部变量
C.三种基本构造语句
D.丰富数据类型
15.如下论述中错误是( )。
A.非零数值型常量有正值和负值区别
B.常量是在程序运营过程中值不能被变化量
C.定义符号常量必要用类型名来设定常量类型
D.用符号名表达常量叫符号常量
16.若有定义和语句:int a,b;scanf("%d,%d",&a,&b);如下选项中输人数据,不
能把值3赋给变量a、5赋给变量b是( )。
A.3,5,
B.3,5,4
C.3,5
D.3,5
17.C语言中char类型数据占字节数为( )。
A.3
B.4
C.1
D.2
18.下列关系表达式中,成果为“假”是( )。
A.(3+4)>6
B.(3!=4)>2
C.3<=4‖3
D.(3<4)=1
19.若如下选项中变量所有为整型变量,且已正拟定义并赋值,则语法对的switch语
句是( )。
(a+9)
{case cl:y=a-b;
case c2:y=a+b;
}
a*b
{case l0:x=a+b;
default:y=a-b;
}
(a+b)
{casel:case3:y=a+b;break;
case0:case4:y=a-b;
}
(a*a+b*b)
{default:break;
case 3:y=a+b;break;
case 2:y=a-b;break;
}
20.有如下程序:
#include
main()
{ int a=-2,b=0;
while(a++&&++b);
printf("%d,%dn",a,b);
}
程序运营后输出成果是( )。
A.1,3
B.0,2
C.0,3
D.1,2
21.设有定义:int x=o,* P;,立即执行如下语句,对的语句是( )。
A.p=x;
B.* p=x;
C.D=NULL;
D.* p=NULL;
22.下列论述中对的是( )。
A.可以用关系运算符比较字符串大小
B.空字符串不占用内存,其内存空间大小是0
C.两个持续单引号是合法字符常量
D.两个持续双引号是合法字符串常量
23.有如下程序:
#include
main()
{ rhar a=’H’;
a=(a>=’A’&&a<=’2’)?(a
printf("%cn",a);
}
程序运营后输出成果是( )。
A.A
B.a
-’A’+’a’):a;
C.H
D.h
24.有如下程序:
#include
int f(int x);
main()
{ int a,b=0;
for(a=0;a<3;a++)
{b=b+f(a);putchar(’A’+b);}
}
int f(int x)
{ return x * xl;}
程序运营后输出成果是( )。
25.设有定义:int x[2][3];,则如下关于二维数组X论述错误是( )。
A.x[0]可看做是由3个整型元素构成一维数组
B.x[0]和x[l]是数组名,分别代表不同地址常量
C.数组X包括6个元素
D.可以用语句x[o]=0;为数组所有元素赋初值0
26.设变量P是指针变量,语句P=NULL;是给指针变量赋NULL值,它等价于( )。
A.p="";
B.p="0";
C.p=0;
D.p=";
27.有如下程序:
#include
main()
{int a[]={10,20,30,40},*p=a,j;
for(i=0;i<=3;i++){a[i]=*P;p++;}
printf("oAdn",a[2]);
}
程序运营后输出成果是( )。
A.30
B.40
C.10
D.20
28.有如下程序:
#include
#define N 3
void fun(int a[][N],int b[])
{ int i,j;
for(i=0;i
for(j=i;j
}
main()
{int x[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;
fun(x,y);
for(i=0;i
}
程序运营后输出成果是(,)。
A.2,4,8,
B.3,6,9,
C.3,5,7,
D.1,3,5,
29.有如下程序(strcpy为字符串复制函数,strcat为字符串连接函数):
#include
#include
main()
{char a[10]="abc",b[10]="012",c[10]="xyz";
strcpy(a+1,b+2);
puts(strcat(a,c+1));
}
程序运营后输出成果是( )。
2xyz
B.12yz
C.a2yz
2yz
30.如下选项中,合法是( )。
str3[]={’d’,’e’,’b’,’u’,’g’,’
str4;str4="hello world";
name[10];name="china";
strl[5]="pass",str2[6];str2=strl;
31.有如下程序:
#include
main()
{ char*s="[2]34";int k=0,a=0;
whil(s[k+1]!=’o’)
{ k++;
0’};
if(k%2=o){a=a+(s[k]-’0’+1);continue;}
a=a+(s[k]-’0’);
printf("k=%d a=%dn",k,a);
}
程序运营后输出成果是( )。
A.k=6 a=11
B.k=3 a=14
C.k=4 a=12
D.k=5 a=15
32.有如下程序:
#include
main()
{char a[5][10]={"one","tw0","three","four","five"};
int i,j;
char t: 、
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(a[i][O]>a[j][0])
{t=a[i][O];a[i][O]=a[j][O];a[j][O]=t;)
puts(a[1]);
}
程序运营后输出成果是( )。
33.有如下程序:
#include
int a=1,b=2:
void funl(int a,int b)
{printf( "%d%d",a,b);}
void fun2()
{ a=3;b=4;}
main()
{ funl(5,6);fun2();
printf("%d%dn",a,b);
}
程序运营后输出成果是( )。
A.1 2 5 6
B.5 6 3 4
C.5 6 1 2
D.3 4 5 6
34.有如下程序:
#include
void func(int n)
{ static int num=1);
num=num+n;printf("%d",num);
}
main()
{funo(3);func(4);printf("n");}
程序运营后输出成果是( )。
A.4 8
B.3 4
C.3 5
D.4 5
35.有如下程序:
#include
#include
void fun(int*pl,int*p2,int*s)
{ s=(int*)malloc(sizeof(int));
*s=*pl+*p2;
free(s);
}
main()
{int a=1,b=40,*q=&a;
fun(&a,&b,q);
printf("%dn",*q);
}
程序运营后输出成果是( )。
A.42
B.0
C.1
D.41
36.有如下程序:
#include
struct STU{char name[9];char sex;int score[2];};
void f(struct STU a[])
{ struct STU b={"Zhao",’m’,85,90);
a[1]=b;
}
main()
{struct STU c[2]={{"Qian",’f’,95,92},{"Sun",’m’ 98,99}};
f(c);
printf(”%s,%c,%d,%d,¨,c[o].name,c[o].sex,c[o].score[o],c[o].score[1]);
printf("%s,%c,%d,%dn",c[1].name,c[1].sex,c[1].score[o],c[1].score
[1]);
}
程序运营后输出成果是( )。
,m,85,90,Sun,m,98,99
,m,85,90,Qian,f,95,92
,f,95,92,Sun,m,98,99
,f,95,92,Zhao,m,85,90
37.如下论述中错误是( )。
A.可以用typedef阐明新类型名来定义变量
f阐明新类型名必要使用大写字母,否则会出编译错误
C.用typedef可觉得基本数据类型阐明一种新名称
D.用typedef阐明新类型作用是用一种新标记符来代表已存在类型名
38.如下论述中错误是( )。
A.函数返回值类型不能是构造体类型,只能是简朴类型
B.函数可以返回指向构造体变量指针
C.可以通过指向构造体变量指针访问所指构造体变量任何成员
D.只要类型相似,构造体变量之间可以整体赋值
39.若有定义语句int b=2;,则表达式(b<<2)/(3‖b)值是( )。
A.4
B.8
C.0
D.2
40.有如下程序:
#include
main()
{ FILE*fp;int i,a[6]={1,2,3,4,5,6};
fp=fopen("","w+");
for=(i=o;i<6;,i++)fpintf(fp,"%dn",a[i]);
rewind(fp);
for(i=0;i%6;i++)fscanf(fp,"%d",&a[5-i]);
fclose(fp);
for(i=0;i%6;i++)printf("%d,",a[i]);
}
程序运营后输出成果是( )。
A.4,5,6,1,2,3,
B.1,2,3,3,2,1,
C.1,2,3,4,5,6,
D.6,5,4,3,2,1,
二、基本操作题(共18分)
str是一种由数字和字母字符构成字符串,由变量num传人字符串长度。请补充函数
proc(),该函数功能是:把字符串str中数字字符转换成数字并存储到整型数组bb中,函
数返回数组bb长度。
例如,str="abcl23de45f967",成果为:l234567。
注意:某些源程序给出如下。
请勿改动main()函数和其她函数中任何内容,仅在函数proc()横线上填入所编写若干
表达式或语句。
试题程序:
#include
#define M 80
int bb[M];
int proc(char str[],int bb[],int num)
{
int i,n=0;
for(i=0;i
if( 【1】 )
{
bb[n]=【2】 ;
n++;
}
}
return 【3】 ;
}
void main()
{
char str[M];
int num=0,n,i;
printf("Enter a string:n");
gets(str);
while(str[num])
num++:
n=proc(str,bb,num);
printf("nbb=");
for(i=0;i
}
三、程序改错题(共24分)
下列给定程序中,函数proc()功能是:读入一种字符串(长度<20),将该字符串中所有
字符按ASCIl码升序排序后输出。
例如,输入opdye,则应输出deopy。
请修改程序中错误,使它能得到对的成果。
注意:不要改动main()函数,不得增行或删行,也不得更改程序构造。
试题程序:
#include%string.h>
#include%stdlib.h>
#include
#include
//****found****
int proc(char str[])
{
char C;
unsigned i,j;
for(i=0;i
{
c=str[j]:
//****found****
str[j]=str[i++];
str[i]=C;
}
}
void main()
{
char st/[81];
system("CLS");
printf("nPlease enter a character
string:");
gets(str);
printf("nknBefore sorting:n %s",str);
proc(str);
printf("nAfter sorting decendingly:n
%S",str);
}
四、程序设计题(共18分)
请编写函数proc(),它功能是计算:s=(In(1)4+ln(2)4+ln(3)+…+In(m))0.5
在C语言中可调用log(n)函数求ln(n)。
例如,若m值为30,则proc()函数值为8.640500。
注意:某些源程序给出如下。
请勿改动main()函数和其她函数中任何内容,仅在函数proc()花括号中填人所编写若
干语句。
试题程序:
#include
#include
#inclllde
#include
double proc(int m)
{
}
void main()
{
system("CLS");
printf("%fn",proc(30));
}
【参照答案及专家详解】
一、选取题
1.B。【解析】Q(1:35)则队列存储空间为35;对空条件:front=rear(初始化时:
front=rear),队满时:(rear+1)%n= =front,n为队列长度(所用数组大小),因而当执行
一系列出队与入队操作,front=rear.则队列要么为空,要么为满。
2.B。【解析】栈是先进后出,因而,栈底元素是先入栈元素,栈顶元素是后入栈元素。
3.C。【解析】数据逻辑构造是描述数据之间关系,分两大类:线性构造和非线性构造。
线性构造是n个数据元素有序(顺序)集合,指是数据元素之间存在着“一对一”线性关系
数据构造。惯用线性构造有:线性表,栈,队列,双队列,数组,串。非线性构造逻辑特
性是一种结点元素也许相应各种直接前驱和各种后驱。常用非线性构造有:树(二叉树等),
图(网等),广义表。
4.D。【解析】单一数据构造——关系,现实世界实体以及实体间各种联系均用关系
来表达。数据逻辑构造——二维表,从顾客角度,关系模型中数据逻辑构造是一张二维表。
但是关系模型这种简朴数据构造可以表达丰富语义,描述浮现实世界实体以及实体间各种
关系。
5.A。【解析】部门到职工是一对多,职工到部门是多对一,因而,实体部门和职工间
联系是l:m联系。
6.C。【解析】选取:是在数据表中予以一定条件进行筛选数据。投影:是把表中某几
种属性数据选取出来。连接:有自然连接、外连接,内连接等,连接重要用于多表之间数
据查询。并:与数学中并是同样。两张表进行并操作,规定它们属性个数相似并且需要相
容。
7.C。【解析】数据字典(DD)是指对数据数据项、数据构造、数据流、数据存储、解
决逻辑、外部实体等进行定义和描述,其目是对数据流程图中各个元素做出详细阐明。
8.B。【解析】《软件可行性分析报告》是软件可行性研究根据。
9.A。【解析】黑盒测试办法重要有等价类划分、边界值分析、因果图、错误推测等。
白盒测试重要办法有逻辑驱动、途径测试等,重要用于软件验证。
10.A。【解析】软件设计阶段重要任务涉及丙个:一是进行软件系统可行性分析,拟
定软件系统建设与否值得,能否建成。二是进行软件系统分析,理解顾客需求,定义应用
功能,详细估算开发成本和开发周期。
11.B。【解析】C语言是一种成功系统描述语言,具备良好移植性,每个后缀为.CC
语言源程序都可以单独进行编译。
12.A。【解析】顾客标记符不能以数字开头,C语言中标记符是区别大小写,核心字
不能用做顾客标记符。
13.B。【解析】当用指数形式表达浮点数据时,E先后都要有数据,并且E背面数要
为整数。
14.A。【解析】C语言是由函数构成,函数是C语言基本单位。因此可以说C语言重
要是借助定义函数来实现程序模块化。
15.C。【解析】在C语言中,可以用一种标记符来表达一种常量,称之为符号常量。
符号常量在使用之前必要先定义,其普通形式为:#define标记符常量。
16.C。【解析】在输入3和5之间除逗号外不能有其她字符。
17.C。【解析】Char类型数据占1个字节。
18.B。【解析】在一种表达式中,括号优先级高,先计算3 !=4,为真即是l,1>2为
假。
19.D。【解析】选项A,当cl和c2相等时,不成立;选项B,a*b要用括号括起来;选
项C,case与背面数字用空格隔开。
20.D。【解析】输出成果是:-1,1 0,2 1,2
21.C。【解析】如果没有把P指向一种指定值,*P是不能被赋值。定义指针变量不赋
初始值时默以为null。
22.D。【解析】比较两个字符串大小用函数strcomp(S,t),空字符串有结束符,因
此也要占用字节,两个双引号表达是空字符串。
23.D。【解析】多元运算符问号前面表达式为真,因此(a-’A’+’a’)赋值给a,括
号里运算是把大写字母变成小写字母,因此答案应为选项D。
24.B。【解析】第一次循环时,b=1,输出成果为B;
第二次循环时,b=3,输出成果为D;
第三次循环时,b=8,输出成果为I。
25.D。【解析】x[0]是不能赋值。
26.C。【解析】在C语言中null等价于数字0。
27.A。【解析】For循环结束后,数组a值并没有变化,由于数组是由0开始,因此
a[2]值是30。
28.B。【解析】Fun函数功能是把数组a每一行最大值赋给b,a第一行最大值是3,
第二行最大值是6,第三行最大值是9,因此答案是3,6,9。
29.C。【解析】第一次执行字符串复制函数a值是a2,第二次执行是字符串连接函数,
因此运营成果为a2yz。
30.A。【解析】选项B不能把一种字符串赋值给一种字符变量,选项c和D犯了同样
错误是把字符串赋给了数组名。
31.C。【解析】输出成果:k=1 a=2
k=2 a=4
k=3 a=7
k=4 a=12
32.A。【解析】For循环完毕功能是把二维数组a第一列字母按从小到大排序,其她
列字母不变。
33.B。【解析】Funl是输出局部变量值,fun2是把全局变量值改成3和4,因此输出
成果是5634。
34.A。【解析】第一调用func函数时输出4,第二次调用func函数时num值并不
会释放,依然是上次修改后值4,第二次调用成果为8,因此输出成果是4 8。
35.C。【解析】Fun函数功能是新开辟内存空间存储a和b地址,q地址并没有变化,
因此应当还是指向地址a。
36.D。【解析】F函数是为构造体数组第二个数赋值,数组第一种数没有变化,因此
对的答案应选D。
37.B。【解析】用typedef阐明类型不是必要用大写,而是习惯上用大写。
38.A。【解析】函数返回值类型可以是简朴类型和构造体类型。
39.B。【解析】2二进制数为010,移两位后二进制数为01000,转成十制数为8,
(3||2)为真即1,8/ 1=8,因此成果为8。
40.D。【解析】这个是对文献操作,把数组数写到文献里,然后再从文献里倒序读出。
因此输出成果为6,5,4,3,2,1。
二、基本操作题程序填空题
【1】str[i]>=’0’&&str[i]<=’9’【2】str[i]-’O’【3】n
【解析】题目中规定把字符串str中数字字符转换成数字并存储到整型数组bb中。一
方面,应判断字符串str中每个字符与否是数字字符。因而,【1】处填
“str[i]>=’0’&&str[i]<=’9’”将每一种数字字符转化为数字放在整型数组bb中,
因而,【2】处填“str[i]-’0’;由函数proc()可知,变量n中存储整型数组bb中元素个
数,最后要返回到主函数当中,因而,【3】处填’n’。
三、程序改错题
(1)错误:int proc(char str[])
对的:void proc(char str[])
(2)错误:str[j]=str[i++];
对的:str[j]=str[i];
【解析】由主函数中函数调用可知,函数proc()没有返回值。因而,“int proc(char
str[])”应改为“void proc(char str[])”;由函数proc()可知,if语句块完毕将字符串str
中第i个元素与第j个元素相互换。因而,“str[j]=str[i++];”应改为“str[j]=str[i];”。
四、程序设计题
double proc(int m)
{
int i;
double s=0.0;//s是表达其和
for(i=1;i<=m;i++)
s=s+log(i);//计算s=ln(1)+ln(2)+ln(3)+…+ln(m)
return sqrt(s);//最后将其开平方值返回到主函数中
}
【解析】由题目中所给表达式可知,表达式值为m项表达式和然后开平方。可以一方
面通过m次循环求得m项表达式和,然后将其和开平方并返回到主函数当中。
版权声明:本文标题:2021年计算机二级c语言题库及答案 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1711048150a585820.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论