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

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

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

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

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

#include<

stdio.h>

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<

malloc.h>

char*p,*q;

p=(char*)malloc(sizeof(char)*20);

q=p;

scanf("

%s%s"

p,q);

%s,%s"

若输入:

abcdef<

回车>

,则输出为(17)。

17(A)def,def(B)abc,def(C)abc,d(D)d,d

3.下列程序的输出是(18)。

iostream.h>

voidmain()

inta=-1,b=4,k;

k=(a++<

=0)&

&

(!

(b--<

=0));

cout<

<

k<

a<

b<

endl;

18(A)003(B)103(C)112(D)012

4.关于类概念的描述中,(19)是错误的。

19(A)类就是C语言中的结构体类型

(B)类是创建对象的样板

(C)类是具有共同行为的若干对象的统一描述体

(D)类是抽象数据类型的实现

5.下列程序的运行结果是(20)。

voidfu();

fu();

voidfu()

staticinta=0;

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)。

#defineM3

#defineNM+1

#defineNNN*N/2

%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,"

);

(B)strcpy(s4,"

(C)strcpy(s3,"

(D)strcpy("

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<

y){x++;

y++;

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->

q->

next=p->

(C)p=p->

next=p;

(D)p=(*p).next;

(*q).next=(*p).next;

(*p).next=q;

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

1.下列程序运行的结果为(26)。

string.h>

voidfun(char*s,intm)

chart,*p1,*p2;

p1=s;

p2=s+m-1;

while(p1<

p2)

{t=*p1++;

*p1=*p2--;

*p2=t;

chara[]="

ABCDEFG"

fun(a,strlen(a));

puts(a);

}

26(A)GFEDCBA(B)AGADAGA

(C)GAGGAGA(D)AGAAGAG

2.读下列C程序,选择正确的输出结果。

voidfun(charstr[][10],intn)

chart[20];

inti,j;

for(i=0;

i<

n-1;

i++)

for(j=i+1;

j<

n;

j++)

if(strlen(str[i])<

strlen(str[j]))

{

strcpy(t,str[i]);

strcpy(str[i],str[j]);

strcpy(str[j],t);

charstr[][10]={"

abc"

"

aabcd"

abed"

a"

acdefg"

};

inti;

fun(str,5);

5;

%2d"

strlen(str[i]));

\n"

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++程序,读程序并回答问题。

intfun(intu,intv)

inttemp;

while(v!

=0)

temp=u%v;

u=v;

v=temp;

returnu;

intu,v;

intt;

"

Inputtwointegers:

cin>

>

u>

v;

t=fun(u,v);

t<

u*v/t<

若从键盘中输入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)。

chang(char*c,intfg)

if(*c=='

'

return1;

elseif(fg&

*c<

='

z'

&

*c>

a'

*c+='

A'

-'

return0;

intflag=1;

charch;

do

ch=getchar();

flag=chang(&

ch,flag);

putchar(ch);

}while(ch!

\n'

程序运行时,从第一列开始输入以下字符,<

CR>

代表换行符。

Thisisabook!

31(A)tHISISABOOK!

(B)thisIsABook!

(C)ThisIsABook!

(D)ThisIsaBook!

5.以下程序的运行结果是(32):

inta=1,b=2,c=3;

a++;

c+=b;

intb=4,c;

c=2*b;

a+=c;

%d,%d,%d,"

a,b,c);

%d,%d,%d\n"

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)。

intx=1,y=0,a=0,b=0;

switch(x)

case1:

switch(y)

case0:

break;

b++;

}

case2:

break;

case3:

b++;

a=%d,b=%d\n"

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;

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.选择下面程序运行的结果。

intm[3][3]={{1},{2},{3}};

intn[3][3]={1,2,3};

m[1][0]+n[0][0]);

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个字节)

structdate

intyear,month,day;

}today;

union

longi;

intk;

charc;

}mix;

date=%d\n"

sizeof(structdate));

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---------*/

main(intargc,char*argv[])

if(argc!

=3)

\nFormat:

MyCopy<

source_file>

<

desine_file>

else

FILE*source,*desine;

source=fopen(argv[1],"

rb"

desine=fopen(argv[2],"

wb"

if(source==NULL)

ERROR:

Can'

topensourcefile%s!

argv[1]);

elseif(desine==NULL)

argv[2]);

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个整数读入并进行升序排序。

voidsort(int*p,intn)

inti,j,t;

n,j++)

if(①)

{t=p[i];

p[i]=p[j];

p[j]=t;

inta[10],i;

FILE*fp;

fp=fopen("

a.dat"

r"

10;

②;

fclose(fp);

%d"

a[i]);

③;

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

longintn;

voidfunc(long);

%ld"

&

n);

①;

voidfunc(②)

if(m>

%d"

m%10);

3.程序功能:

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

折半查找法:

设数组长度为n,则将输入的数m与a[n/2]比较,若m<

a[n/2],则将a[0]到a[n/2]继续折半进行查找;

若m=a[n/2],则表示找到该数的位置;

若m>

a[n/2],则将a[n/2]到a[n]的数继续折半进行查找。

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

intnum,bott,top,mid;

Inputanumber:

%d"

num);

bott=0;

top=9;

while(bott<

=top)

mid=①;

if(num==a[mid])

{printf("

%disthe%dnumber\n"

num,mid+1);

elseif(num<

a[mid])②;

elsebott=mid+1;

if(③)printf("

No\n"

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

例如:

str1存放字符串"

abaxef"

,str2存放字符串"

bac"

,则str3中的字符串为"

bbcxef"

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

"

char*p1,*p2;

p1=str1;

p2=str2;

gets(str1);

gets(str2);

①;

if(*(p1+i)>

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

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

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

else③;

Result:

%s\n"

str3);

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

inti,s,k,count=0;

for(i=100;

=1000;

s=0;

k=i;

while(①)

s=s+k%10;

k=②;

if(s!

=5)③;

elsecount++;

total=%d\n"

count);

(参考答案)

第一部分软件技术基础

一、是非判断题(正确选填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,"

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]!

②strlen(str1)>

strlen(str2)③strcat(str3,p2+i)

5、①k>

0②k/10③continue

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

当前位置:首页 > 经管营销 > 人力资源管理

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

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