C语言32次试题及答案Word下载.docx
- 文档编号:21247773
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:15
- 大小:28.99KB
C语言32次试题及答案Word下载.docx
《C语言32次试题及答案Word下载.docx》由会员分享,可在线阅读,更多相关《C语言32次试题及答案Word下载.docx(15页珍藏版)》请在冰豆网上搜索。
15(A)一定存在互斥关系(B)一定存在同步关系
(C)一定彼此独立无关(D)可能存在同步或互斥关系
第二部分
C与C++语言程序设计
(共85分)
一、单项选择题(每小题1分,共10分)
1.若x和y为double类型,则表达式x=1,y=x+3/2的值为(16)。
(考点:
数据类型、运算符)
16(A)1(B)2(C)2.0(D)2.5
2.如果a,b,c,x,y均为int型变量,x=5,y=10,则执行下面语句后,a,b,c的值分别为(17)。
a=(--y==x++)?
--y:
++x;
(考点:
b=y++;
c=x;
17(A)a=7,b=9,c=7(B)a=7,b=9,c=6
(C)z=6,b=9,c=7(D)z=6,b=9,c=6
3.执行下面语句段的输出结果是(18)。
逻辑运算符)
inti=1,j=1,k=2;
if((j++||k++)&
&
i++)
printf("
%d,%d,%d\n"
i,j,k);
18(A)1,1,2(B)2,2,1(C)2,2,2(D)2,2,3
4.若要求表示“a不等于0”的关系,则不能正确表示这一关系的表达式为(19)。
关系运算)
19(A)a<
>
0(B)a(C)a>
0||a<
0(D)a!
=0
5.若有说明inta,*p=&
a;
则scanf("
%d"
*p);
语句不能正确为变量赋值的原因是(20)。
指针)
20(A)*p表示的是指针变量p的地址
(B)*p表示的是变量a的值,而不是变量a的地址
(C)*p表示的是指针变量p的值
(D)*p只是用来说明p是一个指针变量
6.若有如下说明,则能使指针变量p的值增加的表达式是(21)。
结构体指针)
structws
{inta;
int*b;
}*p;
21(A)++p->
a(B)p->
b++(C)p->
a++(D)(p++)->
a
7.以下能对二维数组a进行正确初始化的是(22)。
二维数组)
22(A)inta[2][]={{1,0,1},{5,2,3}};
(B)inta[][3]={{1,2,3},{4,5,6}};
(C)inta[2][4]={{1,2,3},{4,5},{6}};
(D)inta[][3]={{1,0,1},{},{1,1}};
8.有以下结构体说明和变量定义:
链表操作)
structnode
{intdata;
Structnode*next;
}*p,*q,*r;
建立如图所示的链表结构,指针变量p、q分别指向如图所示的结点,指针变量r指向一新结点,则可以实现将r指向的结点插入到p、q所指结点之间的语句组是(23)。
23(A)q=r;
p->
next=q->
next;
(B)p->
next=r;
r->
next=p->
(C)r->
next=q;
(D)p=r;
9.以下程序的运行结果为(24)。
宏定义)
#define<
stdio.h>
#definePT3.5
#defineS(x)PT*x*x
voidmain()
{inta=1,b=2;
%4.1f\n"
S(a+b));
}
24(A)14.0(B)31.5(C)7.5(D)10.5
10.下面程序段的运行结果为(25)。
位运算)
inta=9,b=020;
printf("
%o\n"
~a&
b<
<
1);
25(A)40(B)41(C)42(D)43
二、读程序回答问题(每个选择3分,共45分)
1.有如下程序:
字符数组、函数(地址参数))
intcount(char*str,charsubstr[20])
{inti,j,k,num=0;
for(i=0;
*(str+i)!
='
\0'
;
i++)
{j=i;
k=0;
while(substr[k]==str[j])
{k++;
j++;
}
if(substr[k]=='
)
num++;
returnnum;
{
charstr[80],substr[20];
gets(str);
gets(substr);
%d\n"
count(str,substr));
(1)若运行程序时输入abcdabad和ab两个字符串,则输出结果为(26)。
26(A)3(B)4(C)2(D)11
(2)该程序的功能是(27)。
27(A)比较两个字符串str和substr的大小
(B)统计子串substr在母串str中出现的次数
(C)将子串substr复制到母串str中
(D)统计两个字符串中字符的总个数
2.有下列程序(考点:
函数)
#include<
intfun(inta,intb)
{staticc=0;
if(a>
b)c=c+a;
elsec=c+b;
returnc;
inta=2,b=5,c=6,d;
d=fun(2*a,fun(b,c));
d);
(1)fun(2*a,fun(b,c))的函数调用中,实参的个数为(28)。
28(A)1(B)2(C)3(D)4
(2)程序的运行结果是(29)。
29(A)6(B)10(C)12(D)15
3.有下列程序(考点:
带参数的宏定义)
#defineM(x,y)((x%y==1)?
1:
0)
intfun(int*a,intn)
inti,s=0;
i<
n;
if(M(a[i],2)&
M(a[i],3))s=s+a[i];
returns;
inta[]={1,2,3,4,5,6,7};
fun(a,7));
(1)宏调用M(a[i],2)&
M(a[i],3)为真时所要表达的是(30)。
30(A)判断a[i]是否能被2或3整除
(B)判断a[i]是否能被2和3整除
(C)判断a[i]被2或3整除时,是否至少有一种情况余1
(D)判断a[i]被2和3整除时,是否都余1
(2)程序的运行结果是(31)。
31(A)15(B)6(C)16(D)8
4.有下列程序(考点:
函数(地址参数)、指针运算)
#include"
stdio.h"
voidprt(int*x,int*y,int*z)
++*x,++*y,*(z++));
inta=10,b=40,c=20;
prt(&
a,&
b,&
c);
(1)第一次调用函数prt的运行结果是(32)。
32(A)11,42,31(B)11,41,20(C)11,21,40(D)11,41,21
(2)第二次调用函数prt的运行结果是(33)。
33(A)12,42,20(B)12,22,41(C)11,21,41(D)12,42,22
5.有如下程序(考点:
全局变量和局部变量、函数(地址参数)、)
intb=1;
intfun(int*a)
intb=0;
b=b+a[0];
returnb;
inta[]={1,2,3,4,5,6},i;
2;
{
b=b+fun(a+i);
%d"
b);
(1)程序的运行结果是(34)。
34(A)24(B)412(C)23(D)410
(2)若将函数fun中的定义“intb=0;
”去掉,则程序的运行结果为(35)。
35(A)24(B)412(C)23(D)410
6.有如下程序(考点:
字符数组、函数(地址参数)、逻辑表达式)
#include<
voidfun(char*s,char*t1,char*t2)
inti,j=0;
s[i]!
if(i%2&
(s[i]>
a'
s[i]<
z'
))
t1[i]=s[i]-'
+'
A'
else
t1[i]=s[i];
if(s[i]>
0'
9'
t2[j]=s[i];
j++;
t1[i]=t2[j]='
chars[20]="
2abcde3fg45"
t1[20],t2[20];
fun(s,t1,t2);
puts(t1);
puts(t2);
(1)程序中第一个puts的输出结果为(36)
36(A)abcdefg(B)2345(C)2AbCdE3Fg45(D)2aBcDe3fG45
(2)程序中第二个puts的输出结果为(37)
37(A)abcdefg(B)2345(C)2AbCdE3Fg45(D)2aBcDe3fG45
7.有如下程序:
命令行参数、宏定义、条件运算符)
#defineIsAlpha(c)c>
c<
?
voidmain(intargc,int**argv)
char*str,cx;
intcn=0;
if(argc<
2)
return;
str=(*++argv);
while(*str)
cx=(*str++);
if(IsAlpha(cx))
cn++;
cn);
若上述程序经编译连接后形成的可执行文件名为:
2-8.exe
(1)当输入命令行:
2-8.exe2abHcabA2时,输出为(38)。
38(A)5(B)3(C)1(D)2
(2)上述程序的功能是(39)。
39(A)命令行第一参数2abHc中出现的小写字母个数
(B)命令行第一参数2abHc中出现的大写字母个数
(C)命令行第二参数abA2中出现的小写字母个数
(D)命令行第二参数abA2中出现的大写字母个数
8.有如下程序:
文件、大小写字母转换方法)
charch;
FILE*fp;
if((fp=fopen("
test.dat"
"
r+"
))==NULL)
Cannotopenfile.\n"
);
exit(0);
ch=fgetc(fp);
while(ch!
=EOF)
if(ch>
ch<
ch-=32;
elseif(ch>
Z'
ch+=32;
putchar(ch);
fclose(fp);
若磁盘文件test.dat中的内容为ab12HD,则程序运行结果为(40)。
40(A)ab12HD(B)Ab12hD(C)aB12Hd(D)AB12hd
注意:
①请把下面“程序填空”中各小题答案写在主观题答题纸上
②每一个空只填一个语句或一个语句所缺的部分内容
三、程序填空(每空2分,共30分)
1.以下程序能计算数列1/2,3/4,1/6,3/8,1/10,3/12…的前15项之和。
请填空。
序列处理算法)
#defineN15
inti;
doublesum=0.0,a,b=0.0;
N;
if(①)
a=②;
a=1.0;
b+=2.0;
sum+=③;
1/2+3/4+1/6...+1/30=%f\n"
sum);
2.一结构体数组中放置了10名学生的学号和成绩(成绩互不相同),程序功能是求出学生的最高分,输出他的学号和成绩。
结构体数组、求最值算法)
typedefstructsutdent
charno[10];
intscore;
}ST;
STs[10]={{"
A01"
65},{"
A02"
70},{"
A03"
60},{"
A04"
84},{"
A05"
82},
{"
A06"
90},{"
A07"
75},{"
A08"
72},{"
A09"
95},{"
A10"
93}};
intmax,i,maxi;
max=s[0].score;
maxi=0;
for(i=1;
10;
if(s[i].score①max)
max=②;
maxi=③;
}
Max:
No%s;
Score%d\n"
s[maxi].no,s[maxi].score);
3.insert()函数在一维数组y中把x插到下标为i的元素之前,i≥0。
如果i大于等于元素个数则插在末尾。
原有的元素个数存放在指针变量n所指的变量中。
数组、插入元素算法)
#defineN11
voidinsert(inty[],int*n,intx,inti)
intj;
if(i<
*n)
for(j=*n-1;
①;
j--)
②=y[j];
i=*n;
y[i]=③;
(*n)++;
inty[N]={0,1,2,3,4,5,6,7,8,9},x,i,*n,j;
j=N-1;
\nPleaseinputx:
"
scanf("
&
x);
\nPleaseinputi:
i);
insert(y,&
j,x,i);
for(j=0;
j<
j++)
y[j]);
4.下面程序能将Hello!
反向打印出来。
函数(地址参数)、字符数组、递归算法)
intprint_hello(char*);
print_hello("
\nHello!
\n"
intprint_hello(char*string)
char*str=string;
if(*str==①)return;
②;
--str;
%c"
*str);
③;
print_hello(string);
5.函数fun的功能是:
根据以下公式计算s,计算结果通过形参指针sn传回;
n通过形参传入,n的值大于等于0。
(考点:
循环、序列处理算法)
voidfun(float*,int);
floata;
intk=2;
fun(&
a,k);
%f\n"
a);
voidfun(float*sn,intn)
floats=0.0,w,f=-1.0;
inti=0;
=n;
f=①*f;
w=f/②;
s+=w;
③=s;
第三十二级考试
第二部分C与C++语言程序设计
一、单项选择题(每小题1分,共10分)
1、C2、A3、C4、A5、B6、D7、B8、C9、C10、A
二、读程序题(每个选择3分,共45分)
1、CB2、BC3、DD4、BA5、AB
6、CB7、BA8、D
三、程序填空题(每空2分,共30分)
1、①i%2==1②3③a/b
2、①>
②s[i].score③i
3、①j>
=i②y[j+1]③x
4、①‘\0’②str++③*str=’\0’
5、①-1②(2*i+1)③*sn
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 32 试题 答案