C语言22次笔试题含答案.docx

上传人:b****4 文档编号:4883130 上传时间:2022-12-11 格式:DOCX 页数:17 大小:26.46KB
下载 相关 举报
C语言22次笔试题含答案.docx_第1页
第1页 / 共17页
C语言22次笔试题含答案.docx_第2页
第2页 / 共17页
C语言22次笔试题含答案.docx_第3页
第3页 / 共17页
C语言22次笔试题含答案.docx_第4页
第4页 / 共17页
C语言22次笔试题含答案.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

C语言22次笔试题含答案.docx

《C语言22次笔试题含答案.docx》由会员分享,可在线阅读,更多相关《C语言22次笔试题含答案.docx(17页珍藏版)》请在冰豆网上搜索。

C语言22次笔试题含答案.docx

C语言22次笔试题含答案

第二十二次等级考试

二级(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*xelsex+=1;(D)if(x

9.关于C++函数参数的描述中,错误的是(24)。

24(A)实参个数与形参个数可以不同

(B)缺省参数必须放在形参表的最右端

(C)用引用变量作形参可以实现地址传递

(D)重载函数可以有缺省参数

10.若有如下定义:

structnode

{

intdata;

structnode*next;

}

且已建立下面的链表结构,指针p,q分别指向图中所示结点,则不能将q所指结点插入链表末尾的一组语句是(25)。

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

aabcdabcaabcdabc

abedabedabedaabcd

aaabcdabcabed

acdefgacdefgaaabcd

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(①)

{t=p[i];p[i]=p[j];p[j]=t;}

}

main()

{

inta[10],i;

FILE*fp;

fp=fopen("a.dat","r");

for(i=0;i<10;i++)

②;

fclose(fp);

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\n");

③;

for(i=0;i<10;i++)

printf("%d",a[i]);

printf("\n");

}

2.下列程序用递归算法实现,输入任意一个整数,在各数位之间插入空格后输出。

#include

main()

{

longintn;

voidfunc(long);

scanf("%ld",&n);

①;

}

voidfunc(②)

{

if(m>=0)

③;

printf("%d",m%10);

}

3.程序功能:

有10个数按升序放在一个数组中,输入一个数,要求用折半查找该数是数组中的第几个元素,如果该数不在数组中,打印出“NO”。

折半查找法:

设数组长度为n,则将输入的数m与a[n/2]比较,若ma[n/2],则将a[n/2]到a[n]的数继续折半进行查找。

#include

main()

{

inta[10]={12,32,45,62,71,76,80,85,90,95};

intnum,bott,top,mid;

printf("Inputanumber:

\n");

scanf("%d",&num);

bott=0;

top=9;

while(bott<=top)

{

mid=①;

if(num==a[mid])

{printf("%disthe%dnumber\n",num,mid+1);break;}

elseif(num

elsebott=mid+1;

}

if(③)printf("No\n");

}

4.有两个字符串str1和str2,将str1和str2对应字符中ASCII码值较大者存入字符数组str3的对应位置,若str1和str2长度不一致,则将较长字符串中剩余字符直接连接到str3的末尾。

例如:

str1存放字符串"abaxef",str2存放字符串"bac",则str3中的字符串为"bbcxef"。

#include

#include

main()

{

inti;

charstr[80],str2[80],str3[80]="";

char*p1,*p2;

p1=str1;p2=str2;

gets(str1);gets(str2);

for(i=0;①;i++)

{

if(*(p1+i)>*(p2+i))str3[i]=*(p1+i);

elsestr3[i]=*(p2+i);

}

if(②)strcat(str3,p1+i);

else③;

printf("Result:

%s\n",str3);

}

5.下面程序的功能是计算100至1000之间有多少个数其各位数字之和是5。

#include

voidmain()

{

inti,s,k,count=0;

for(i=100;i<=1000;i++)

{

s=0;

k=i;

while(①)

{

s=s+k%10;

k=②;

}

if(s!

=5)③;

elsecount++;

}

printf("total=%d\n",count);

}

第二十二次等级考试

二级(C与C++语言)笔试试卷

(参考答案)

第一部分软件技术基础

一、是非判断题(正确选填A,错误选填B)(每小题1分,共10分)

1~10:

A、A、B、B、A、B、B、B、A、A

二、单项选择题:

(每小题1分,共5分)

1~5:

D、C、D、C、D

第二部分C与C++语言程序设计

一、单项选择题(每小题1分,共10分)

1、B2、A3、B4、A5、D

6、C7、D8、C9、D10、C

二、读程序题(每个选择3分,共45分)

1、D2、

(1)A

(2)C3、

(1)A

(2)D

4、C5、A6、B

7、B8、

(1)D

(2)A9、

(1)C

(2)B

10、

(1)B

(2)D

三、程序填空题(每空2分,共30分)

1、①p[i]>p[j]②fscanf(fp,"%d",&a[i])③sort(a,10)

2、①func(n)②longm③func(m/10)

3、①(bott+top)/2②top=mid-1③bott>top

4、①str1[i]!

='\0'&&str2[i]!

='\0'

②strlen(str1)>strlen(str2)③strcat(str3,p2+i)

5、①k>0②k/10③continue

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1