二级C语言笔试真题及答案.docx
《二级C语言笔试真题及答案.docx》由会员分享,可在线阅读,更多相关《二级C语言笔试真题及答案.docx(23页珍藏版)》请在冰豆网上搜索。
二级C语言笔试真题及答案
2004年4月二级C语言笔试真题及答案
(考试时间:
120分钟,满分100分)
一、选择题,(1-40)每题1分,(41-50)每题2分,共60分)
下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。
(1)1MB等于
A)1000字节B)1024字节
C)1000×1000字节D)1024×1024字节
(2)与十六进制数200等值的十进制数为
A)256B)512C)1024D)2048
(3)所谓“裸机”是指
A)单片机B)单板机
C)不装备任何软件的计算机D)只装备操作系统的计算机
(4)能将高级语言编写的源程序转换成目标程序的是
A)链接程序B)解释程序C)编译程序D)编辑程序
(5)在64位计算机中,一个字长所占的字节数为
A)64B)8C)4D)1
(6)在Windows环境下,当一个应用程序窗口被最小化后,该应用程序
A)继续在后台运行B)继续在前台运行
C)终止运行D)暂停运行
(7)在Windows环境下,能实现窗口移动的操作是
A)用鼠标拖动窗口中的任何部位B)用鼠标拖动窗口的边框
C)用鼠标拖动窗口的控制按钮D)用鼠标拖动窗口的标题栏
(8)在Windows环境下,PrintScreen键的作用是
A)打印当前窗口的内容B)打印屏幕内容
C)复制屏幕到剪贴板D)复制当前窗口到剪贴板
(9)Internet的通信协议是
A)TCP/IPB)BBSC)WWWD)FTP
(10)下列叙述中正确的是
A)计算机病毒只感染可执行文件
B)计算机病毒只感染文本文件
C)计算机病毒只能通过软件复制的方式进行传播
D)计算机病毒可以通过网络或读写磁盘等方式进行传播
(11)一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是
A)有零个或多个输入B)有零个或多个输出
C)有穷性D)可行性
(12)以下叙述中正确的是
A)C语言的源程序不必通过编译就可以直接运行
B)C语言中的每条可执行语句最终都将被转换成二进制的机器指令
C)C源程序经编译形成的二进制代码可以直接运行
D)C语言中的函数不可以单独进行编译
(13)以下符合C语言语法的实型常量是
A)1.2E0.5B)3.14.159EC).5E-3D)E15
(14)以下4组用户定义标识符中,全部合法的一组是
A)_mainB)IfC)txtD)int
enclude-maxREALk_2
sinturbo3COM_001
(15)若以下选项中的变量已正确定义,则正确的赋值语句是
A)x1=26.8%3B)1+2=x2C)x3=0x12D)x4=1+2=3;
(16)设有以下定义
inta=0;
doubleb=1.25;
charc=’A’;
#defined2
则下面语句中错误的是
A)a++;B)b++C)c++;D)d++;
(17)设有定义:
floata=2,b=4,h=3;,以下C语言表达式与代数式计算结果不相符的是
A)(a+B)*h/2B)(1/2)*(a+B)*h
C)(a+B)*h*1/2D)h/2*(a+B)
(18)有以下程序
main()
{
intx=102,y=012;
printf(“%2d,%2d\n”,x,y);
}
执行后输出结果是
A)10,01B)02,12C)102,10D)02,10
(19)以下4个选项中,不能看作一条语句的是
A){;}B)a=0,b=0,c=0;C)if(a>0);D)if(b==0)m=1;n=2;
(20)设有定义:
inta,*pa=&a;以下scanf语句中能正确为变量a读入数据的是
A)scanf(“%d”,pA);B)scanf(“%d”,A);
C)scanf(“%d”,&pA);D)scanf(“%d”,*pA);
(21)以下程序段中与语句k=a>b?
(b>c?
1:
0):
0;功能等价的是
A)if((a>B)&&(b>C))k=1;B)if((a>B)||(b>C))k=1
elsek=0;
C)if(a<=B)k=0;D)if(a>B)k=1;
elseif(b<=C)k=1;elseif(b>C)k=1;
elsek=0;
(22)有以下程序
main()
{chark;intI;
for(i=1;i<3;i++)
{scanf(“%c”,&k);
switch(k)
{case‘0’:
printf(“another\n”);
case‘1’:
printf(“number\n”);
}
}
}
程序运行时,从键盘输入:
01<回车>,程序执行后的输出结果是
A)anotherB)anotherC)anotherD)number
numbernumbernumbernumber
anothernumber
(23)有以下程序
main()
{intx=0,y=5,z=3;
while(z-->0&&++x<5)y=y-1;
printf(“%d,%d,%d\n”,x,y,z);
}
程序执行后的输出结果是
A)3,2,0B)3,2,-1C)4,3,-1D)5,-2,-5
(24)有以下程序
main()
{inti,s=0;
for(i=1;i<10;i+=2)s+=i+1;
printf(“%d\n”,s);
}
程序执行后的输出结果是
A)自然数1~9的累加和B)自然数1~10的累加和
C)自然数1~9中的奇数之和D)自然数1~10中的偶数之和
(25)有以下程序
main()
{inti,n=0;
for(i=2;i<5;i++)
{do
{if(i%3)continue;
n++;
}while(!
i);
n++;
}
printf(“n=%d\n”,n);
}
程序执行后的输出结果是
A)n=5B)n=2C)n=3D)n=4
(26)若程序中定义了以下函数
doublemyadd(doublea,doubleB)
{return(a+B);}
并将其放在调用语句之后,则在调用之前应该对该函数进行说明,以下选项中错误的说明是
A)doublemyadd(doublea,B);
B)doublemyadd(double,double);
C)doublemyadd(doubleb,doubleA);
D)doublemyadd(doublex,doubley);
(27)有以下程序
charfun(charx,chary)
{if(xreturny;
}
main()
{inta=’9’,b=’8’,c=’7’;
printf(“%c\n”,fun(fun(a,B),fun(b,C)));
}
程序的执行结果是
A)函数调用出错B)8C)9D)7
(28)设有定义:
intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是
A)p=1;B)*q=2;C)q=p;D)*p=5;
(29)有以下程序
voidf(intv,intw)
{intt;
t=v;v=w;w=t;
}
main()
{intx=1,y=3,z=2;
if(x>y)f(x,y);
elseif(y>z)f(y,z);
elsef(x,z);
printf(“%d,%d,%d\n”,x,y,z);
}
执行后输出结果是
A)1,2,3B)3,1,2C)1,3,2D)2,3,1
(30)有以下程序段
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是
A)5B)6C)8D)9
(31)31、有以下程序
main()
{chara[]=”abcdefg”,b[10]=”abcdefg”;
printf(“%d%d\n”,sizeof(A),sizeof(B));
}
执行后输出结果是
A)77B)88C)810D)1010
(32)有以下程序
voidswap1(intc[])
{intt;
t=c[0];c[0]=c[1];c[1]=t;
}
voidswap2(intc0,intc1)
{intt;
t=c0;c0=c1;c1=t;
}
main()
{inta[2]={3,5},b[2]={3,5};
swap1(A);swap2(b[0],b[1]);
printf(“%d%d%d%d\n”,a[0],a[1],b[0],b[1]);
}
其输出结果是
A)5353B)5335C)3535D)3553
(33)有以下程序
voidsum(int*A)
{a[0]=a[1];}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
for(i=2;i>=0;i--)&nb
sp;sum(&aa[i]);
printf(“%d\n”,aa[0]);
}
执行后的输出结果是
A)4B)3C)2D)1
(34)34、有以下程序
intf(intb[][4])
{inti,j,s=0;
for(j=0;j<4;j++)
{i=j;
if(i>2)i=3-j;
s+=b[i][j];
}
returns;
}
main()
{inta[4][4]={{1,2,3,4},{0,2,4,5},{3,6,9,12},{3,2,1,0}};
printf(“%d\n”,f(A));
}
执行后的输出结果是
A)12B)11C)18D)16
(35)有以下定义
#include
chara[10],*b=a;
不能给数组a输入字符串的语句是
A)gets(A)B)gets(a[0])C)gets(&a[0]);D)gets(B);
(36)有以下程序
main()
{char*p[10]={“abc”,”aabdfg”,”dcdbe”,”abbd”,”cd”};
printf(“%d\n”,strlen(p[4]));
}
执行后输出结果是
A)2B)3C)4D)5
(37)有以下程序
inta=2;
intf(int*A)
{return(*A)++;}
main()
{ints=0;
{inta=5;
s+=f(&A);
}
s+=f(&A);
printf(“%d\n”,s);
}
执行后输出结果是
A)10B)9C)7D)8
(38)有以下程序
#definef(x)x*x
main()
{inti;
i=f(4+4)/f(2+2);
printf(“%d\n”,i);
}
执行后输出结果是
A)28B)22C)16D)4
(39)设有以下语句
typedefstructS
{intg;charh;}T;
则下面叙述中正确的是
A)可用S定义结构体变量B)可以用T定义结构体变量
C)S是struct类型的变量D)T是structS类型的变量
(40)有以下程序
strucSTU
{charname[10];
intnum;
};
voidf1(structSTUC)
{structSTUb={“LiSiGuo”,2042};
c=b;
}
voidf2(structSTU*C)
{structSTUb={“SunDan”,2044};
*c=b;
}
main()
{structSTUa={“YangSan”,2041},b={“WangYin”,2043};
f1(A);f2(&B);
printf(“%d%d\n”,a.num,b.num);
}
执行后的输出结果是
A)20412044B)20412043C)20422044D)20422043
(41)有以下程序
main()
{unsignedchara,b;
a=4|3;
b=4&3;
printf(“%d%d\n”,a,b(;
}
执行后输出结果是
A)70B)07C)11D)430
(42)下面程序的功能是输出以下形式的金字塔图案是:
*
***
*****
*******
main()
{inti,j;
for(i=1;i<=4;i++)
{for(j=1;j<=4-i;j++)printf(““);
for(j=1;j<=_______;j++)printf(“*”);
printf(“\n”);
}
}
在下划线处应填入的是
A)iB)2*i-1C)2*i+1D)i+2
(43)有以下程序
voidsort(inta[],intn)
{inti,j,t;
for(i=0;ifor(j=i+2;jif(a[i]}
main()
{intaa[10]={1,2,3,4,5,6,7,8,9,10},i;
sort(aa,10);
for(i=0;i<10;i++)printf(“%d”,aa[i]);
printf(“\n”);
}
其输出结果是
A)1,2,3,4,5,6,7,8,9,10,B)10,9,8,7,6,5,4,3,2,1,
C)9,2,7,4,5,6,3,8,1,10,D)1,10,3,8,5,6,7,4,9,2,
(44)以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是
A)chars[10]=”abcdefg”;B)chart[]=”abcdefg”,*s=t;
C)chars[10];s=”abcdefg”;D)chars[10];strcpy(s,”abcdefg”);
(45)有以下程序
#include
main(intargc,char*argv[])
{inti,len=0;
for(i=1;iprintf(“5d\n”,len);
}
经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行
exabcdefgh3k44
执行后输出结果是
A)14B)12C)8D)6
(46)有以下程序
voidf(inta[],inti,intj)
{intt;
if(i{t=a[i];a[i]=a[j];a[j]=t;
f(a,i+1,j-1);
}
}
main()
{inti,aa[5]={1,2,3,4,5};
f(aa,0,4);
for(i=0;i<5;i++)printf(“%d,”,aa[i]);printf(“\n”);
}
执行后输出结果是
A)5,4,3,2,1,B)5,2,3,4,1,C)1,2,3,4,5,D)1,2,3,4,5,
(47)有以下程序
structSTU
{charname[10];
intnum;
intScore;
};
main()
{structSTUs[5]={{“YangSan”,20041,703},{“LiSiGuo”,20042,580},
{“wangYin”,20043,680},{“SunDan”,20044,550},
{“Penghua”,20045,537}},*p[5],*t;
inti,j;
for(i=0;i<5;i++)p[i]=&s[i];
for(i=0;i<4;i++)
for(j=i+1;j<5;j++)
if(p[i]->Score>p[j]->Score)
{t=p[i];p[i]=p[j];p[j]=t;}
printf(“5d%d\n”,s[1].Score,p[1]->Score);
}
执行后输出结果是
A)550550B)680680C)580550D)580680
(48)有以下程序
#include
structNODE{
intnum;
structNODE*next;
};
main()
{structNODE*p,*q,*r;
intsum=0;
p=(structNODE*)malloc(sizeof(structNODE));
q=(structNODE*)malloc(sizeof(structNODE));
r=(structNODE*)malloc(sizeof(structNODE));
p->num=1;q->num=2;r->num=3;
p->next=q;q->next=r;r->next=NULL;
sum+=q->next->num;sum+=p->num;
printf(“%d\n”,sum);
}
执行后的输出结果是
A)3B)4C)5D)6
(49)有以下程序
#include
main()
{FILE*fp;inti,k=0,n=0;
fp=fopen(“d1.dat”,”w”);
for(i=1;i<4;i++)fprintf(fp,”%d”,i);
fclose(fp);
fp=fopen(“d1.dat”,”r”);
fscanf(fp,”%d%d”,&k,&n);printf(“%d%d\n”,k,n);
fclose(fp);
}
执行后输出结果是
A)12B)1230C)123D)00
(50)有以下程序(提示:
程序中fseek(fp,-2L*sizeof(int),SEEK_END);语句的作用是使位置指针从文件尾向前移2*sizeof(int)字节)
#include
main()
{FILE*fp;inti,a[4]={1,2,3,4},b;
fp=fopen("data.dat","wb");
for(i=0;i<4;i++)fwrite(&a[i],sizeof(int),1,fp);
fclose(fp);
fp=fopen("data.dat
","rb");
fseek(fp,-2L*sizeof(int).SEEK_END);
fread(&b,sizeof(int),1,fp);/*从文件中读取sizeof(int)字节的数据到变量b中*/
fclose(fp);
printf("%d\n",B);
}
执行后输出结果是
A)2B)1C)4D)3
二、填空题(每空2分,共40分)
请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分.
(1)E-mail地址由用户名和域名两部分组成,这两部分的分隔符为【1】。
(2)计算机网络分为广域网和局域网,因特网属于【2】。
(3)从Windows环境进入MS-DOS方式后,返回Windows环境的DOS命令为【3】。
(4)在Windows环境下,只要在“开始”菜单中单击【4】选项,就可以查阅最近打开过的文档清单。
(5)计算机的运算速度可以用MIPS来描述,1MIPS是指每秒执行【5】条指令。
(6)已知字符A的ACSII码值为65,以下语句的输出结果是【6】
charch=’B’;
printf(“%c%d\n”,ch,ch);
(7)有以下语句段
intn1=10,n2=20;
printf(“【7】”,n1.n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空。
n1=10
n2=20
(8)有以下程序
main()
{intt=1,i=5;
for(;i>=0;i--)t*=i;
printf(“%d\n”,t);
}
执行后输出结果是【8】。
(9)有以下程序
main()
{intn=0,m=1,x=2;
if(!
n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf(“%d\n”,x);
}
执行后输出结果是【9】。
(10)有以下程序
#include
main()
{charch1,ch2;intn1,n2;
ch1=getchar();ch2=getchar();
n1=ch1-‘0’;n2=n1*10+(ch2-‘0’);
printf(“%d\n”,n2);
}
程序运行时输入:
12<回车>,执行后输出结果是【10】。
(11)有以下程序
voidf(inty,int*x)
{y=y+*x;*x=*x+y;}
main()
{intx=2,y=4;
f(y,&x);