计算机等级考试二级C语言笔试真题及答案.docx
《计算机等级考试二级C语言笔试真题及答案.docx》由会员分享,可在线阅读,更多相关《计算机等级考试二级C语言笔试真题及答案.docx(14页珍藏版)》请在冰豆网上搜索。
![计算机等级考试二级C语言笔试真题及答案.docx](https://file1.bdocx.com/fileroot1/2023-1/3/84635c25-b4bb-4a40-a0ac-3f8355481a02/84635c25-b4bb-4a40-a0ac-3f8355481a021.gif)
计算机等级考试二级C语言笔试真题及答案
2012年9月全国计算机等级考试二级笔试试卷
C语言程序设计
(考试时间90分钟,满分100分)
一、选择题(
(1)~(10)、(21)~(40)每小题2分,(11)~(20)每题1分共70分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)下列链表中,其逻辑结构属于非线性结构的是
带链的栈C)二叉链表D)循环链表
Q(1:
35),初始状态为front=rear=35,现经过一系列入队与退则循环队列中的元素个数为
C)15
A)双向链表B)
(2)设循环队列的存储空间为
队运算后,front=15,rear=15,
A)20B)
0或35
D)16
(3)下列关于栈的叙述中,正确的是
A)栈底元素一定是最先入栈的元素
C)栈顶元素一定是最后入栈的元素
(4)在关系数据库中,用来表示实体间联系的是
A)网状结构B)树状结构
B)栈操作遵循先进后出的原则
D)以上三种说法都不对
C)属性
D)二维表
(5)公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员,则实体部门和职员间的联系是
A)1:
m联系B)m:
n联系
(6)有两个关系R和S如下:
R
C)
1:
1联系
D)m:
1联系
A
B
C
a
1
2
b
2
1
c
3
1
A
B
C
c
3
1
S
则由关系R得到关系S的操作是
A)自然连接B)并
(7)数据字典(DD)所定义的对象都包含于
A)软件结构图B)方框图
(8)软件需求规格说明书的作用不包括
A)软件设计的依据
C)软件验收的依据
(9)下面属于黑盒测试方法的是
A)边界值分析
B)路径覆盖
(10)下面不属于软件设计阶段任务的是
A)制定软件确认测试计划
C)软件总体设计
(11)以下叙述中正确的是
C)选择
D)投影
数据流图(DFD图)D)程序流程图
软件可行性研究的依据
用户与开发人员对软件要做什么的共同理解
C)语句覆盖
D)逻辑覆盖
数据库设计
算法设计
B
A)在C语言程序中,main函数必须放在其他函数的最前面
B)每个后缀为.C的C语言源程序都可以单独进行编译
C)在C语言程序中,只有main函数才可单独进行编译
D)每个后缀为.C的C语言源程序都应该包含一个main函数
(12)
A
A)
B)
C)
D)
C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是
预定义标识符(如库函数中的函数名)可用作用标识符,但失去原有含义用户标识符可以由字母和数字任意顺序组成
在标识符中大写字母和小写字母被认为是相同的字符
关键字可用作用户标识符,但失去原有含义
(13)以下选项中表示一个合法的常量是(说明:
符号表示空格)
A)999B)0XabC)123E0.2D)2.7e
(14)C语言主要是借助以下哪个功能来实现程序模块化
A)定义函数B)定义常量和外部变量
C)
C
非零的数值型常量有正值和负值的区分常量是在程序运行过程中值不能被改变的量定义符号常量必须用类型名来设定常量的类型用符号名表示的常量叫符号常量
三种基本结构语句D)丰富的数据类型
(15)以下叙述中错误的是
A)
B)
C)
D)
“%d,%d,&a,&下选项中的输入数据,不能把值3
(16)若有定义和语句:
inta,b;scanf(
赋给变量a、5赋给变量b的是C
switch
(19)若以下选项中的变量全部为整型变量,且已正确定义并赋值,则语法正确的语句是
(20)有以下程序
#include
main()
{inta=-2,b=0;while(a++&&++b);printf("%d,%d\n",a,b);
}
x[0]可看作是由3个整型元素组成的一维数组x[0]和x[1]是数组名,分别代表不同的地址常量数组x包含6个元素
可以用语句x[0]=0;为数组所有元素赋初值0
(25)设有定义:
intx[2][3];,则以下关于二维数组x的叙述错误的是
A)
B)
C)
D)
(26)设变量p是指针变量,语句p=NULL;是给指针变量赋NULL值,它等价于
A)
p="";B)p='0';
(27)有以下程序#includemain(){inta[]={10,20,30,40},*p=a,i;
for(i=0;i<=3;i++){a[i]=*p;p++;}printf("%d\n",a[2]);
}程序运行后的输出结果是
A)30
(28)有以下程序
#include
#defineN3
voidfun(inta[][N],intb[]){inti,j;
for(i=0;i{b[i]=a[i][0];for(j=i;j}
}main(){
intx[N][N]={1,2,3,4,5,6,7,8,9},y[N],i;fun(x,y);
for(i=0;i}
程序运行后的输出结果是
B)40
C)10
D)20
printf("%d,",y[i]);
A)2,4,8,B)
29)有以下程序(strcpy为字符串复制函数,strcat为字符串连接函数)#include
#includemain()
{chara[10]="abc",b[10]="012",c[10]="xyz";strcpy(a+1,b+2);
puts(strcat(a,c+1));}
3,6,9,
C)3,5,7,
D)1,3,5,
程序运行后的输出结果是
A)a12xyzB)12yz
30)以下选项中,合法的是
C)a2yz
A
D)bc2yz
A)
B)
C)
D)
31)有以下程序
#includemain()
{char*s="12134";intk=0,a=0;
while(s[k+1]!
='\0')
{k++;
if(k%2==0){a=a+(s[k]-'0'+1);
charstr3[]={'d','e','b','u','g','\0',};
charstr4;str4="helloworld";
charname[10];name="china";
charstr[5]="pass",str2[6];str2=str1;
continue;}
a=a+(s[k]-'O');
}
printf("k=%da=%d\n",k,a);
}
程序运行后的输出结果是
A)k=6a=11
(32)有以下程序
#include
main()
{chara[5][10]={"one","two","three","four","five"};inti,j;chart;
for(i=0;i<4;i++)for(j=i+1;j<5;j++)
if(a[i][0]>a[j][0])
{t=a[i][0];a[i][0]=a[j][0];a[j][0]=t;}
B)k=3a=14
C)k=4a=12
D)k=5a=15
puts(a[1]);
}
程序运行后的输出结果是
A)fwoB)fix
(33)有以下程序
#include
inta=1,b=2;
voidfun1(inta,intb)
{printf("%d%d",a,b);}
voidfun2()
{a=3;b=4;}
main()
{fun1(5,6);fun2();
printf("%d%d\n",a,b);
}
A置换排序
C)two
D)owo
程序运行后的输出结果是
全局变量一旦覆盖就没了
A)1256
(34)有以下程序
#includevoidfunc(intn){staticintnum=1;
num=num+n;printf("%d",num)}main()
{func(3);func(4);printf("\n");}程序运行后的输出结果是
A)48B)34
(35)有以下程序
#include
#include
voidfun(int*p1,int*p2,int*s){s=(int*)malloc(sizeof(int));
*s=*p1+*p2;free(s);
}
main()
{inta=1,b=40,*q=&a;fun(&a,&b,q);printf("%d\n",*q);
}程序运行后的输出结果
structSTU{charname[9];charsex;intscore[2];};
voidf(structSTUa[])
{structSTUb={"Zhao",'m',85,90};
a[1]=b;
}
main()
{structSTUc[2]={{"Qian",'f',95,92},{"Sun",'m',98,99}};
f(c);
printf("%s,%c,%d,%d,",c[0].name,c[0].sex,c[0].score[0],c[0].score[1]);
printf("%s,%c,%d,%d\n",c[1].name,c[1].sex,c[1].score[0],c[1].score[1]);
}
程序运行后的输出结果是
B)Zhao,m,85,90,Qian,f,95,92
D)Qian,f,95,92,Zhao,m,85,90B
A)Zhao,m,85,90,Sun,m,98,99
C)Qian,f,95,92,Sun,m,98,99
(37)以下叙述中错误的是
A)
B)
C)
D)
38)以下叙述中错误的是
A)
B)
C)
D)
39)若有定义语句intb=2;则表达式(b<<2)/(3||b)的值是
A)4B)8C)0D)2
40)有以下程序
#include
main()
{FILE*fp;inti,a[6]={1,2,3,4,5,6};fp=fopen("d2.dat","w+");
for(i=0;i<6;i++)
rewind(fp);
for(i=0;i<6;i++)fclose(fp);
for(i=0;i<6;i++)
}
程序运行后的输出结果是
fprintf(fp,"%d\n",a[i]);
fscanf(fp,"%d",&a[5-i]);
printf("%d,",a[i]);
A)4,5,6,1,23
B)1,2,332,1,
C)1,2,3,4,5,6,
D)6,5,4,3,2,1,
、填空题(每空2分,共30分)
#include
main()
{doublea;floatb;
printf("%f%f\n",a,b);
scanf(”%lf%f",&a,&b);
}
有以下程序
#include
main()
ch;
{intn1=0,n2=0,n3=0;char
while((ch=getchar())!
='!
')switch(ch){case'1':
case3:
n1++;break;
case'2':
case'4':
n2++;break;default:
n3++;break;
}
Printf(%d%d%d”,n1,n2,n3);
}
若程序运行时输入01234567!
<回车>,则输出结果是224。
(9)有以下程序
#include
main()
{inti,sum=0;
for(j=1;j<9;i+=2)sum+=i;
printf("%d\n",sum);
}
程序运行后的输出结果是
(10)有以下程序
#include
main()
{intd,n=1234;
while(n!
=0)
{d=n%10;n=n/10;printf("%d",d);}}
程序运行后的输出结果是
(11)有以下程序
#includeintk=7;
int*st(int*a)
{int*c=&k;
if(*a>*c)c=a;returnc;
}
main()
{inti=3,*p=&i,*r;r=st(p);printf("%d\n",*r);
}
程序运行后的输出结果是
(12)
16。
4321。
(13)
(14)
7。
以下程序的输出结果是22。
#include
#defineN3
#defineM(n)(N+1)*n
main()
{intx;
x=2*(N+M
(2));
printf("%d\n",x);
}
若有定义语句:
charstr[]="0";,则字符串str在内存中实际占2字节。
有以下程序
#includeintfun(intn)
{if(n==0)return
(1);return(fun(n-1)*n);
}
main()
{intt;
t=fun(3);printf("%d\n”,t);
}
程序运行后的输出结果是【14】。
h已指向如下链表
(15)以下函数的功能是输出链表结点中的数据,形参指针
请填空。
structslist{chardata;structslist*next;};voidfun(structslist*h)
{structslist*p;
P=h;
while(p)
{printf("%c”,p->data);p=【15】;}
printf("\n");
}