四川省计算机等级考试二级C语言笔试题22.docx
《四川省计算机等级考试二级C语言笔试题22.docx》由会员分享,可在线阅读,更多相关《四川省计算机等级考试二级C语言笔试题22.docx(18页珍藏版)》请在冰豆网上搜索。
四川省计算机等级考试二级C语言笔试题22
四川省计算机等级考试二级C语言笔试题(第二十二次)一
2009-03-2915:
24:
34
四川省普通高等学校计算机应用知识和能力
第二十二次等级考试
二级(C与C++语言)笔试试卷
时间:
2005年4月16日
上午9:
00—11:
00
第一部分
软件技术基础
(共15分)
一、是非判断题(每小题1分,共10分)
(判断下列各题是否正确,如正确,在客观答题纸上对应编号选A,否则选B )
1.C++语言中所定义的类实际上也是一种数据类型。
( 1 )
2.数据结构的表示包括数据逻辑结构和存储结构两方面的表示。
( 2 )
3.冒泡排序算法是一种只能实现升序排序,而不能实现降序排序的排序算法。
( 3 )
4.线性表采用链式存储时,结点的存储地址必须是连续的。
( 4 )
5.栈顶的位置是随着进栈和退栈操作而变化的。
( 5 )
6.在软件生存期内,软件必须进行维护,维护不会产生副作用。
( 6 )
7.采用动态重定位进行地址转换,允许程序在执行过程中在内在中移动。
而静态重定位则不可以。
( 7 )
8.在软件的需要分析阶段,要直接面向用户,主要考虑用户的经济承受能力和费用的支付问题。
( 8 )
9.需求分析阶段的主要任务应由系统分析员主持完成。
( 9 )
10.操作系统是最重要的系统软件。
( 10 )
二、选择题(每小题1分,共5分)
1.以下特征中哪个不是算法的特征 ( 11 )。
11 (A)可行性 (B)确定性 (C)有穷性 (D)唯一性
2.在多道程序设计系统中,处于后备状态的作业要经过( 12 )调度后才能真正执行。
12 (A)作业调度 (B)作业调度和进程调度
(C)进程调度 (D)作业调度和设备调度
3.为解决CPU和I/O设备之间速度匹配问题,常采用“缓冲区”方法。
“缓冲区”的结构多为( 13 )。
13 (A)顺序栈 (B)链栈 (C)顺序队列 (D)循环队列
4.对象实现了数据和操作的结合,使数据和操作 ( 14 )于对象的统一体中。
14 (A)结合 (B)程序的效率 (C)封装 (D)抽象
5.结构化程序设计主要强调的是 ( 15 )。
15 (A)程序易读性 (B)程序的效率
(C)程序设计语言的先进性 (D)程序的规模
第二部分
C与C++语言程序设计
(共85分)
一、单项选择题(每小题1分,共10分)
1.下列程序运行的结果是( 16 )
#include
voidswap(intx,inty)
{x^=y;y^=x;x^=y;}
main()
{
inta=010,b=1;
swap(a,b);
printf("%d,%d\n",a,b);
}
16 (A)10,1 (B)8,1 (C)1,8 (D)1,10
2.有以下程序
#include
#include
main()
{
char*p,*q;
p=(char*)malloc(sizeof(char)*20);
q=p;
scanf("%s%s",p,q);
printf("%s,%s",p,q);
}
若输入:
abcdef<回车>,则输出为( 17 )。
17 (A)def,def (B)abc,def (C)abc,d (D)d,d
3.下列程序的输出是( 18 )。
#include
voidmain()
{
inta=-1,b=4,k;
k=(a++<=0)&&(!
(b--<=0));
cout<}
18 (A)003 (B)103 (C)112 (D)012
4.关于类概念的描述中,( 19 )是错误的。
19 (A)类就是C语言中的结构体类型
(B)类是创建对象的样板
(C)类是具有共同行为的若干对象的统一描述体
(D)类是抽象数据类型的实现
5.下列程序的运行结果是( 20 )。
#include
main()
{
voidfu();
fu();
fu();
}
voidfu()
{
staticinta=0;
printf("a=%d,",!
a?
1:
8);
}
20 (A)a=8,a=8, (B)a=1,a=8 (C)a=8,a=1, (D)a=1,a=1,
6.以下程序中,输出值是( 21 )。
#include
#defineM3
#defineNM+1
#defineNNN*N/2
main()
{
printf("%d\n",NN);
}
21 (A)3 (B)4 (C)6 (D)8
7.若有语句:
chars1[]="string1",s2[8],*s3,*s4="string2";则( 22 )是对库函数strcpy的错误调用。
22 (A)strcpy(s1,"string2"); (B)strcpy(s4,"string1");
(C)strcpy(s3,"string1"); (D)strcpy("string2",s2);
8.以下( 23 )为不正确的if语句。
23 (A)if(x>y); (B)if(x==y)x+=y;
(C)if(x!
=y)x=x*x elsex+=1; (D)if(x 9.关于C++函数参数的描述中,错误的是( 24 )。
24 (A)实参个数与形参个数可以不同
(B)缺省参数必须放在形参表的最右端
(C)用引用变量作形参可以实现地址传递
(D)重载函数可以有缺省参数
10.若有如下定义:
structnode
{
intdata;
structnode*next;
}
46
q
且已建立下面的链表结构,指针p,q分别指向图中所示结点,则不能将q所指结点插入链表末尾的一组语句是( 25 )。
p
44
5 NULL
head……
25(A)q->next=NULL;p=p->next;p->next=q; (B)p=p->next;q->next=p->next;p->next=q;
(C)p=p->next;q->next=p;p->next=q; (D)p=(*p).next;(*q).next=(*p).next;(*p).next=q;
二、读程序回答问题(每个选择3分,共45分)
1.下列程序运行的结果为( 26 )。
#include
#include
voidfun(char*s,intm)
{
chart,*p1,*p2;
p1=s;
p2=s+m-1;
while(p1 {t=*p1++;*p1=*p2--;*p2=t;}
}
main()
{
chara[]="ABCDEFG";
fun(a,strlen(a));
puts(a);
}
26 (A)GFEDCBA (B)AGADAGA
(C)GAGGAGA (D)AGAAGAG
2.读下列C程序,选择正确的输出结果。
#include
#include
voidfun(charstr[][10],intn)
{
chart[20];
inti,j;
for(i=0;i for(j=i+1;j if(strlen(str[i]) {
strcpy(t,str[i]);
strcpy(str[i],str[j]);
strcpy(str[j],t);
}
}
main()
{
charstr[][10]={"abc","aabcd","abed","a","acdefg"};
inti;
fun(str,5);
for(i=0;i<5;i++)
printf("%2d",strlen(str[i]));
printf("\n");
for(i=0;i<5;i++)
puts(str[i]);
}
(1) main函数中,第一个for循环的输出结果为:
( 27 )。
27 (A)65431 (B)13456
(C)76542 (D)24567
(2) main函数中,第二个for循环的输出结果为:
( 28 )。
28 (A)abc (B)a (C)acdefg (D)a
aabcd abc aabcd abc
abed abed abed aabcd
a aabcd abc abed
acdefg acdefg a aabcd
3.以下是一个C++程序,读程序并回答问题。
#include
intfun(intu,intv)
{
inttemp;
while(v!
=0)
{
temp=u%v;
u=v;
v=temp;
}
returnu;
}
voidmain()
{
intu,v;
intt;
cout<<"Inputtwointegers:
";
cin>>u>>v;
t=fun(u,v);
cout< cout<
}
若从键盘中输入1015;回答下列两个问题:
(1)第一条输出语句的输出结果为( 29 )。
29 (A)5 (B)10 (C)15 (D)30
(2)第二条输出语句的输出结果为( 30 )。
30 (A)5 (B)10 (C)15 (D)30
4.以下程序的运行结果是( 31 )。
#include
chang(char*c,intfg)
{
if(*c=='')
return1;
elseif(fg&&*c<='z'&&*c>='a')
*c+='A'-'a';
return0;
}
main()
{
intflag=1;
charch;
do
{
ch=getchar();
flag=chang(&ch,flag);
putchar(ch);
}while(ch!
='\n');
}
程序运行时,从第一列开始输入以下字符,代表换行符。
Thisisabook!
31 (A)tHISISABOOK!
(B)thisIsABook!
(C)ThisIsABook!
(D)ThisIsaBook!
5.以下程序的运行结果是( 32 ):
#include
main()
{
inta=1,b=2,c=3;
a++;
c+=b;
{
intb=4,c;
c=2*b;
a+=c;
printf("%d,%d,%d,",a,b,c);
}
printf("%d,%d,%d\n",a,b,c);
}
32 (A)10,4,8,10,2,5 (B)6,2,4,6,2,4 (C)10,4,8,10,2,8 (D)9,4,8,2,2,5
6.以下程序的输出是( 33 )。
#include
main()
{
intx=1,y=0,a=0,b=0;
switch(x)
{
case1:
switch(y)
{
case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
33 (A)a=1,b=0 (B)a=2,b=1 (C)a=1,b=1 (D)a=2,b=2
7.若有以下程序段:
inta[]={4,0,2,3,1},k,j,t;
for(j=1;j<5;j++)
{
t=a[j];
k=j-1;
while(k>=0&&t>a[k])
{ a[k+1]=a[k];k--;}
a[k+1]=t;
}
则该程序段的功能是( 34 )。
34 (A)对数组a进行插入排序(升序)
(B)对数组a进行插入排序(降序)
(C)对数组a进行选择排序(升序)
(D)对数组a进行选择排序(降序)
8.选择下面程序运行的结果。
#include
intm[3][3]={{1},{2},{3}};
intn[3][3]={1,2,3};
main()
{
printf("%d\n",m[1][0]+n[0][0]);
printf("%d\n",m[0][1]+n[1][0]);
}
第1条printf语句行输出的结果是( 35 )。
35 (A)0 (B)1 (C)2 (D)3
第2条printf语句行输出的结果是( 36 )。
36 (A)0 (B)1 (C)2 (D)3
9.选择下面程序运行的结果(设int占2个字节)
#include
main()
{
structdate
{
intyear,month,day;
}today;
union
{
longi;
intk;
charc;
}mix;
printf("date=%d\n",sizeof(structdate));
printf("mix=%d\n",sizeof(mix));
}
第1条printf语句行输出的结果为( 37 )。
37 (A)date=2 (B)date=4 (C)date=6 (D)前3个答案都是错误的
第2条printf语句行输出的结果为( 38 )。
38 (A)mix=2 (B)mix=4 (C)mix=6 (D)前3个答案都是错误的
10.读下面程序,程序的命名为MyCopy.c。
/*---------MyCopy.c---------*/
#include
main(intargc,char*argv[])
{
if(argc!
=3)
printf("\nFormat:
MyCopy\n");
else
{
FILE*source,*desine;
source=fopen(argv[1],"rb");
desine=fopen(argv[2],"wb");
if(source==NULL)
printf("ERROR:
Can'topensourcefile%s!
\n",argv[1]);
elseif(desine==NULL)
printf("ERROR:
Can'topensourcefile%s!
\n",argv[2]);
else
{
while(!
feof(source))
fputc(fgetc(source),desine);
}
fclose(source);
fclose(desine);
}
}
(1)程序的功能是( 39 )。
40 (A)将磁盘文件的信息显示在屏幕上
(B)将一个磁盘文件复制到另一个磁盘文件中
(C)将两个磁盘文件合并
(D)以上答案都不对
(2)当编译、连接后,在命令行键入:
MyCopyFILE1FILE2<回车>,则程序将实现( 40 )。
41 (A)将FILE1的信息显示在屏幕上
(B)将FILE1和FILE2合并
(C)将一个FILE2复制到FILE1中
(D)将一个FILE1复制到FILE2中
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.以下程序的功能是将磁盘文件a.dat中的10个整数读入并进行升序排序。
#include
voidsort(int*p,intn)
{
inti,j,t;
for(i=0;i for(j=i+1;j if(①