C语言20次Word格式文档下载.docx
《C语言20次Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言20次Word格式文档下载.docx(14页珍藏版)》请在冰豆网上搜索。
65971376294958请问使用的是何种排序方法(15)。
15(A)简单插入排序(B)冒泡排序
(C)2路归并排序(D)快速排序
第二部分
C与C++语言程序设计
(共85分)
一、单项选择题(每小题1分,共10分)
1.定义如下枚举类型:
enumDay{Monday,Tuesday,Wednesday,Thursday,Friday=2};
则下列语句正确的是(16)。
16(A)表达式Wednesday==Friday的值是true
(B)enumDayday;
day=3;
(C)enumDayday;
day=Tuesday-3;
(D)enumDayday;
day=Monday+10;
2.下列程序片段的输出结果是(17)。
intm=4;
do
{printf("
%d,"
m-=3);
}
while(!
(--m));
17(A)1(B)1,-3,(C)3,0(D)死循环
3.执行下列程序片段时的输出结果是(18)。
intx,y;
x=3;
y=5;
printf("
%d"
x%=(y/=2));
18(A)3(B)2(C)1(D)0
4.对于下述程序,判断正确的是(19)。
#include<
stdio.h>
voidf(int*p)
{*p=10;
int*p;
voidmain()
{f(p);
printf("
(*p)++);
}
19(A)输出的值是随机值(B)运行时出错
(C)输出值为10(D)输出值为11
5.下列程序运行的结果是(20)。
#defineFU(y)2.8+y
#definePR(a)printf("
(int)(a))
#definePRINT(a)PR(a);
{intx=2;
PRINT(FU(5)*x);
20(A)12(B)14(C)13(D)15
6.下列程序运行的结果是(21)。
{inta[10]={9,8,7,6,5,4,3,2,1,0},*p=a+4;
*++p);
++*p);
21(A)4,3(B)4,6(C)5,5(D)4,5
7.关于对类要领的描述中,错误的是(22)。
22(A)类就是C语言中的结构类型
(B)类是创建对象的样板
(C)类是具有共同行为的若干对象的统一描述体
(D)类是抽象数据类型的实现
8.已知inta=9,b=4;
将a-b的值输出显示到屏幕上,下列各种实现方法中,正确的是(23)。
23(A)cout<
<
a<
'
-'
b<
endl(B)cout<
"
a-b"
endl
(C)cout<
a-b<
endl(D)cout<
%d\n"
a-b
9.下列循环语句会进入死循环的是(24)。
24(A)i=0;
do{i++;
}while(i==100);
(B)for(i=0;
i<
100;
i+=3.14);
(C)for(i=0;
;
i+=2);
(D)k=1;
do{k--;
}while(k);
10.下面程序运行的结果是(25)。
intfun(char*str)
{
intn=0;
while(*str>
='
0'
&
&
*str<
9'
)
{n=n*10+*str-'
1'
str++;
returnn;
{printf("
fun("
567.89"
));
25(A)89(B)567.89(C)567(D)456
二、读程序回答问题(每个选择3分,共45分)。
1.有下列程序:
iostream.h>
{inta,b,c,x;
a=b=c=0;
for(inti=0;
10;
i++)
{cin>
>
x;
switch(x%3)
{case0:
a+=x;
break;
case1:
b+=x;
case2:
c+=x;
cout<
'
c<
endl;
程序运行时依次输入x的值为:
12345678910
①程序运行的结果是(26)。
26(A)3,12,21(B)18,22,15
(C)3,4,3(D)9,10,8
②switch(x%3)与(27)相同。
27(A)switch(!
(x%3)!
=0)(B)switch(x%3==0)
(C)switch(x%3!
=0)(D)他们都不相同
2.有下列程序:
char*str[]={"
One"
"
Two"
Three"
Four"
};
char=str;
inti;
for(i=0;
3;
%s"
(ptr+1)[i]);
①为程序中空白处选择填空(28)。
28(A)**ptr(B)*ptr(C)ptr[](D)&
ptr
②运行结果是(29)。
29(A)newohree(B)Two(C)TwoThreeFour(D)指针运行非法,无输出
3.读下列程序,回答问题。
voidmain(void)
intm,n;
doublex,y;
intdivide(intm,intn);
doubledivide(intm,doubley);
doubledivide(doublex,doubley);
Entertwointegerandtworealnumber:
cin>
m>
n>
x>
y;
L1:
cout<
divide(m,n)<
L2:
divide(n,x)<
L3:
divede(x,y)<
intdivide(intm,intn)
{returnm/n;
doubledivide(intm,doubley)
{returnm/(int)y;
doubledivide(doublex,doubley)
{returnx/y;
①输入数据727.02.0,语句L1输出结果是(30)。
30(A)0(B)1(C)3(D)3.5
②输入数据727.02.0,语句L2输出结果是(31)。
31(A)0(B)1(C)3(D)3.5
③输入数据727.02.0,语句L3输出结果是(32)。
32(A)0(B)1(C)3(D)3.5
4.#include<
unsignedinta=0112,x,y,z;
x=a>
y=~(~0<
4);
z=x&
%o%o%o\n"
x,y,z);
%x\n"
!
(x&
y&
z));
该程序中执行第一个printf函数后,输出为(33)。
33(A)111711(B)171117(C)111717(D)171711
该程序中执行第二个printf函数后,输出为(34)。
34(A)171(B)0112(C)1(D)0
5.以下程序运行的结果为(35)。
voidswap1(inta,intb)
{inttemp;
temp=a;
a=b;
b=temp;
voidswap2(int&
a,int&
b)
{inti=3,j=5;
swap1(i,j);
%d%d\n"
i,j);
swap2(i,j);
35(A)35(B)53(C)53(D)35
35533553
6.读下列递归程序,回答问题。
voidfun(char*strp)
{char*t;
if(*strp){t=strp;
t++;
fun(t);
putchar(*strp);
{inti,a[10]={0,1,2,3,4,5,6,7,8,9};
charstr[11];
str[i]=a[i]+'
str[i]='
\0'
fun(str);
程序中的fun函数被调用(36)次。
36(A)9(B)10(C)11(D)12
程序的输出结果为(37)。
37(A)0123456789(B)9876543210(C)01234(D)98765
5678943210
7.读下列C程序,若输入字符串Examination,请选择正确的输出结果。
{charstr[20];
inti=0;
staticintcount[2]={0};
gets(str);
do
{
switch(str[i++])
{
case'
a'
:
A'
e'
E'
i'
I'
o'
O'
u'
U'
count[0]++;
/*break;
*/
default:
count[1]++;
}
}while(str[i]!
);
count[0]=%d,count[1]=%d\n"
count[0],count[1]);
程序的输出结果为(38)。
38(A)count[0]=6,count[1]=11(B)count[0]=6,count[1]=12
(C)count[0]=5,count[1]=11(D)count[0]=5,count[1]=12
若将程序中注释语句的注释标记去掉,则程序的输出结果为(39)。
39(A)count[0]=6,count[1]=11(B)count[0]=6,count[1]=5
(C)count[0]=5,count[1]=11(D)count[0]=6,count[1]=6
8.下面程序输出的结果为(40)。
inta=5;
{inta=3;
a++;
a;
40(A)54(B)45(C)53(D)44
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.下列程序实现将一个整数字符串转换为一个整数。
string.h>
intFun(char*str)
{intnum,digital,len;
①;
len=strlen(str);
while(*str!
=NULL)
digital=*str-'
②;
digital*=10;
len--;
③;
num+=digital;
returnnum;
{charn[80];
intnumber;
gets(n);
number=Fun(n);
number);
2.寻找并输出11~999之间的数m,它满足m,m2,m3均为回文数(所谓回文数是指其各位数字左右对称的整数)。
{intsymm(longn);
longm;
for(m=11;
m<
1000;
m++)
if(①)
m="
m*m="
m*m<
m*m*m="
m*m*m<
intsymm(longn)
{longi,m;
i=n;
m=0;
while(②)
{③;
i=i/10;
return(m==n);
3.已知head指向一个单向链表,如下图:
主程序中调用add函数能求出链表中所有结点数据域的和sum并返回。
structlink
{intdata;
structlink*next;
intadd(structlink*heak)
{structlink*p;
ints=0;
p=①;
while(p)
{s+=②;
p=③;
return(s);
{structlink*head;
……/*表示省掉的程序段,创建链表*/
sum=add(head);
sum);
4.下面程序功能是统计文本data.txt中各种大写字母的个数,将统计结果存放在数组count中,(字母'
的个数存入count[0]中,字母'
B'
的个数存入count[1]……依此类推),输出统计结果,一行输出5个。
请填空。
stdlib.h>
{FILE*fp;
staticintcount[26]={0};
charch;
Cannotopenthefile!
\n"
exit(0);
while(!
feof(fp))
{②;
if(ch>
ch<
Z'
)count[③]++;
26;
if(i%5==0)printf("
count[%d]=%-5d"
count[i]);
fclose(fp);
5.下面程序的功能是输入两个字符串a和b和一个标志flag,当flag=0时,将b连在a后;
当flag=1时,将a连在b后;
否则返回空指针。
char*stradd(char*s,char*t,intf)
{char*p;
if(f==0)
{p=s;
s+=strlen(s);
①;
elseif(f==1)
{p=t;
while(*t++);
t--;
while(*s)
*t++=*s++;
②;
returnp;
{chara[100],b[100],*str;
intn;
Inputstringaandb:
gets(a);
gets(b);
Inputflag:
scanf("
flag);
str=stradd(a,b,n);
Output:
%s\n"
str);