二级C语言笔试真题及答案Word格式.docx
《二级C语言笔试真题及答案Word格式.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试真题及答案Word格式.docx(16页珍藏版)》请在冰豆网上搜索。
![二级C语言笔试真题及答案Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/1/046b82b8-d8c8-4c34-9b65-b516ca082bba/046b82b8-d8c8-4c34-9b65-b516ca082bba1.gif)
(12)MS-DOS是
A)分时操作系统B)分布式操作系统
C)单用户、单任务操作系统D)单用户、多任务操作系统
(13)在Windows操作系统中,不同文档之间互相复制信息需要借助于
A)剪切板B)记事本C)写字板D)磁盘缓冲器
(14)在Windows操作系统中
A)同一时刻可以有多个活动窗口
B)同一时刻可以有多个应用程序在运行,但只有一个活动窗口
C)同一时刻只能有一个打开的窗口
D)DOS应用程序窗口与Windows应用程序窗口不能同时打开着
(15)下列叙述中正确的是
A)所有DOS应用程序都可以在Windows操作系统中正确运行
B)所有DOS应用程序都不能在Windows操作系统中正确运行
C)大部分DOS应用程序可以在Windows操作系统中正确运行
D)为DOS5.0以上版本操作系统编写的应用程序可以在Windows操作系统中正确运行
(16)下列叙述中正确的是
A)C语言编译时不检查语法
B)C语言的子程序有过程和函数两种
C)C语言的函数可以嵌套定义
D)C语言所有函数都是外部函数
(17)以下所列的C语言常量中,错误的是
A)0xFFB)1.2e0.5C)2LD)‘\72’
(18)下列选项中,合法的C语言关键字是
A)VARB)cherC)integerD)default
(19)以下变量x.、y、z均为double类型且已正确赋值,不能正确表示数学式子的C语言表达式是
A)x/y*zB)x*(1/(y*z))C)x/y*1/zD)x/y/z
(20)若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是
A)-3B)9C)-12D)6
(21)设x、y、t均为int型变量,则执行语句:
x=y=3;
t=++x||++y;
后,y的值为
A)不定值B)4C)3D)1
(22)若变量已正确说明为float类型,要通过语句scanf(“%f%f%f”,&
a,&
b,&
c);
给a赋于10.0,b赋予22.0,c赋予33.0,不正确的输入形式是:
A)10<
回车>
B)10.0,22.0,33.0<
22<
33<
C)10.0<
D)1022<
22.033.0<
33<
(23)若执行以下程序时从键盘上输入9,则输出结果是
A)11B)10C)9D)8
Main0
{intn;
scanf(“%d”,&
n);
if(n++<
10)printf(“%d\n”,n);
elseprintf(“%d\n”,n--);
}
(24)若a、b、c1、c2、x、y、均是整型变量,正确的switch语句是
A)swich(a+b);
B)switch(a*a+b*b)
{case1:
y=a+b;
break;
{case3:
case0:
y=a-b;
case1:
break;
}case3:
y=b-a,break;
}
C)switchaD)switch(a-b)
{casec1:
break{default:
y=a*b;
break
casec2:
x=a*d;
breakcase3:
case4:
x=a+b;
default:
case10:
case11:
}}
(25)有以下程序段
intk=0
while(k=1)k++;
while循环执行的次数是
A)无限次B)有语法错,不能执行
C)一次也不执行D)执行1次
(26)以下程序执行后sum的值是
A)15B)14C)不确定D)0
min()
{inti,sum;
for(i=1;
i<
6;
i++)sum+=i;
printf(“%d\n”,sum);
(27)有以下程序段
intx=3
do
{printf(“%d”,x-=2);
}
while(!
(--x));
其输出结果是
A)1B)30C)1-2D)死循环
(28)若变量c为char类型,能正确判断出c为小写字母的表达式是
A)‘a’<
=c<
=‘z’B)(c>
=‘a’)||(c<
=‘z’)
C)(‘a’<
=c)and(‘z’>
=c)D)(c>
=‘a’)&
&
(c<
(29)以下所列的各函数首部中,正确的是
A)voidplay(var:
Integer,varb:
Integer)
B)voidplay(inta,b)
C)voidplay(inta,intb)
D)Subplay(aasinteger,basinteger)
(30)以下程序的输出结果是
A)0B)29C)31D)无定值
fun(intx,inty,intz)
{z=x*x+y*y;
main()
{inta=31;
fun(5,2,a);
printf(“%d”,a);
(31)下列程序段的输出结果是
A)2143B)1212C)1234D)2112
voidfun(int*x,int*y)
{printf(“%d%d”,*x,*y);
*x=3;
*y=4;
{intx=1,y=2;
fun(&
y,&
x);
printf(“%d%d”,x,y);
(32)下列程序的输出结果是
A)非法B)a[4]的地址C)5D)3
main()
{chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;
printf(“%d”,*--p);
(33)下列程序的运行结果是
A)63B)36C)编译出错D)00
voidfun(int*a,int*b)
{int*k;
k=a;
a=b;
b=k;
{inta=3,b=6,*x=&
a,*y=&
b;
fun(x,y);
printf(“%d%d”,a,b);
(34)下面程序的输出结果是
A)0B)1C)10D)9
{inta[]={1,2,3,4,5,6,7,8,9,0,},*p;
p=a;
printf(“%d\n”,*p+9);
(35)当调用函数时,实参是一个数组名,则向函数传送的是
A)数组的长度B)数组的首地址
C)数组每一个元素的地址D)数组每个元素中的值
(36)设有以下说明语句
structex
{intx;
floaty;
charz;
}example;
则下面的叙述中不正确的是
A)struct结构体类型的关键字B)example是结构体类型名
C)x,y,z都是结构体成员名D)structex是结构体类型
(37)以下只有在使用时才为该类型变量分配内存的存储类说明是
A)auto和staticB)auto和register
C)register和staticD)extern和register
(38)若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是
A)EOFB)-1C)非零值D)NULL
(39)以下程序的输出结果是
A)20B)21C)22D)23
{inti,k,a[10],p[3];
k=5;
for(i=0;
10;
i++)a[i]=i;
3;
i++)p[i]=a[i*(i+1)];
i++)k+=p[i]*2;
printf(“%d\n”,k);
(40)以下程序的输出结果是
A)1,5,9B)1,4,7C)3,5,7D)3,6,9
{inti,x[3][3]={1,2,3,4,5,6,7,8,9};
for(i=0;
i++)printf(“%d,”,x[i][2-i]);
(41)以下程序的输出结果是
A)18B)19C)20D)21
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
i++)
for(j=0;
j<
=i;
j++)s+=a[i][j];
printf(“%dn”,s);
(42)以下程序的输出结果是
A)ABCDB)ABCDC)EFGD)EFGH
FGHEFGJKIJKL
KLIJO
M
{charw[][10]={“ABCD”,”EFGH”,”IJKL”,”MNOP”},k;
for(k=1;
k<
k++)printf(“%s\n”,w[k]);
(43)当执行下面的程序时,如果输入ABC,则输出结果是
A)ABC6789B)ABC67C)12345ABC6D)ABC456789
#include“stdio.h”
#include“string.h”
{charss[10]=“1,2,3,4,5”;
gets(ss);
strcat(ss,“6789”);
printf(“%s\n”,ss);
(44)假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的DOS提示符下键入:
PROGABCDEFGHIJKL<
,则输出结果为
A)ABCDEFGB)IJHLC)ABCDEFGHIJKLD)IJKLABCDEFGH
main(intargc,char*argv[]))
{while(--argc>
0)printf(“%s”,argv[argc]);
printf(“\n”);
(45)以下程序的输出结果是
A)1B)2C)3D)4
longfun(intn)
{longs;
if(n==1||n==2)s=2;
elses=n-fun(n-1);
returns;
{printf(“%ld\n”,fun(3));
(46)以下程序的输出结果是
A)16B)2C)9D)1
#defineSQR(X)X*X
{inta=16,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf(“d\n”,a);
(47)若定义了以下函数:
voidf(……)
{……
*p=(double*)malloc(10*sizeof(double));
……
p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是
A)double*pB)float**pC)double**pD)float*p
(48)以下程序的输出是
A)10B)11C)51D)60
structst
{intx;
int*y;
}*p;
intdt[4]={10,20,30,40};
structstaa[4]={50,&
dt[0],60,&
dt[0],};
{p=aa;
printf(“%d\n”,++(p->
x));
(49)假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是
A)free(q);
p->
next=q->
next;
B)(*p).next=(*q).next;
free(q);
C)q=(*q).next;
(*p).next=q;
D)q=q->
next=q;
p=p->
free(p);
(50)以下程序的输出结果是
A)0B)1C)2D)3
{intx=0.5;
charz=’a’;
printf(“%d\n”,(x&
1)&
(z<
’z’));
二)填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。
计算机机领域中,通常用英文单词“Byte”表示【1】。
在DOS环境下,自动批处理的文件名为【2】。
要将当前盘当前目录下所有扩展名为.TXT的文件内容在打印机上打印输出,应使用的单条DOS内部命令为【3】。
在Windows环境下,可以利用单击、双击、拖动这三种鼠标操作之一的【4】操作实现窗口的移动。
在Windows环境下,可以将窗口最小化为【5】。
以下程序的输出结果是【6】
{inta=1,b=2;
a=a+b;
b=a-b;
a=a-b;
printf(“%d,%d\n”,a,b);
下列程序的输出结果是16.00,请填空。
。
{inta=9,b=2;
floatx=【7】,y=1.1,z;
z=a/2+b*x/y+1/2;
printf(“%5.2f\n”,z);
用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。
st=(char*)【8】;
下列程序段的输出结果是【9】。
{charb[]=”Hello,you”;
b[5]=0;
printf(“%s\n”,b);
下列程序段的输出结果是【10】。
intn=’c’;
switch(n++)
{default:
printf(“error”);
case‘a’:
case‘A’:
case‘b’:
case‘B’:
printf(“good”);
case‘c’:
case‘C’:
printf(“pass”);
case‘d’:
case‘D’:
printf(“warn”);
以下程序通过函数指针p调用函数fun,请在填空栏内,写出定义变量p的语句。
voidfun(int*x,int*y)
{……}
{inta=10,b=20;
【11】;
/定义变p*/
p=fun;
p(&
b);
……
下列程序的输出结果是【12】。
voidfun(int*n)
{while((*n)--);
printf(“%d”,++(*n));
{inta=100;
a);
以下程序的输出结果是【13】。
{intarr[]={30,25,20,15,10,5},*p=arr;
p++;
printf(“%d\n”,*(p+3));
以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
{charname[20];
doublescore;
};
{structstex;
printf(“exsize:
%d\n”,sizeof(【14】));
下面程序把从终端读入的文本(用@作为文本结束标志)输出到一个名为bi.dat的新文件中。
请填空。
FILE*fp;
{charch;
if((fp=fopen(【15】))==NULL)exit(0);
while((ch=getchar())!
=’@’)fputc(ch,fp);
fclose(fp);
若变量n中的值为24,则prnt函数共输出【16】行,最后一行有【17】个数。
voidprnt(intn,intaa[])
{inti;
i<
=n;
i++)
{printf(“%6d”,aa[i]);
if(!
(i%5))printf(“\n”);
printf(“\n”);
以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。
#defineN3
#defineM4
voidLineMax(intx[N][M])
{inti,j,p;
N;
{p=0;
for(j=1;
j<
M;
j++)
if(x[i][p]<
x[i][j])【18】;
printf(“Themaxvalueinline%dis%d\n”,i,【19】);
{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
【20】
2001年4月全国计算机等级考试二级笔试答案
C语言
选择题(
(1)--(40)题每题1分,(41)--(50)题每题2分,共60分。
(1)C
(2)C
(3)C
(4)C
(5)C
(6)B
(7)A
(8)D
(9)D
(10)C
(11)C
(12)C
(13)A
(14)B
(15)C
(16)D
(17)B
(18)D
(19)A
(20)C
(21)C
(22)B
(23)B
(24)D
(25)A
(26)C
(27)C
(28)D
(29)C
(30)C
(31)A
(32)C
(33)B
(34)C
(35)B
(36)B
(37)B
(38)C
(39)B
(40)C
(41)A
(42)D
(43)A
(44)D
(45)A
(46)B
(47)C
(48)C
(49)B
(50)B
二、填空题(每空2分,共40分)
(1)字节
(2)AUTOEXEC。
BAT
(3)COPY*。
TXTPRN
(4)拖动
(5)图标或按钮
(6)2.1
(7)6.6
(8)Malloc(11)或malloc(sizeof(char)*11)
(9)Hello
(10)passwarm
(11)void(*p)()或void(*p)(int*,int*)
(12)0
(13)10
(14)structst或ex
(15)“bi.dat”,“w”或“bi.dat”,“wt”或“bi.dat”,“w+t”
(16)5
(17)4
(18)sp=j
(19)cx[i][p]
(20)LineMax(x)
〖完〗录入:
李丹校对:
Forest
用全真模拟软件,不愧为是有的放矢,…