2022年武汉东湖学院公共课《C语言》科目期末试卷A(有答案).docx
《2022年武汉东湖学院公共课《C语言》科目期末试卷A(有答案).docx》由会员分享,可在线阅读,更多相关《2022年武汉东湖学院公共课《C语言》科目期末试卷A(有答案).docx(17页珍藏版)》请在冰点文库上搜索。
2022年武汉东湖学院公共课《C语言》科目期末试卷A(有答案)
一、填空题
1、设x的二进制数是11001101,若想通过x&y运算使x中的低4位不变,高4位清零,则y的二进制数是_______。
2、结构化程序由________、________、________3种基本结构组成。
3、一个C语言源程序由若干函数组成,其中至少应含有一个________
4、若x和n均是int型变量,且x和n的初值均为5,则执行表达式x+=n++后x的值为_______,n的值为_______。
5、若有定义语句:
ints=6;则表达式s%2+(s+1)%2的值为_______
6、函数process是一个可对两个整型数a和b进行计算的通用函数;函数max()可求这两个数中的较大者,函数min()可求它们中的较小者。
已有调用语句process(a,b,max);和process(a,b,min);。
请填空。
voidprocess(_______)
{intresult;
result=(*fun)(x,y);
printf("%d\n",result);
}
7、函数swap(arr,n)可对arr数组从第1个元素到第n个元素分别进行两两元素交换。
在运行调用函数中的如下语句后,a[o]和a[1]的值分别为_______,原因是_______。
a[0]=1;a[1]=2;swap(a,2);
8、设有以下定义和语句,请在printf语句的_______中填上能够正确输出的变量及相应的格式说明。
union
{intn;doublex;}num;
num.n=10;
num.x=10.5;
printf("_______",_______);
9、执行以下程序时,若从第一列开始输入数据,为使变量a=3、b=7、x=8.5、y=71.82、c1='A'、c2='a',正确的数据输入形式是_______。
#include
intmain()
{inta,b;
floatx,y;
charcl,c2;
scanf("a=%db=%d",&.a,&.b);
scanf("x=%fy=%",8.x,8.y);
scanf("c1=%cc2=%c”,8.cl,8.c2);
printf("a=%d,b=%d,x=%f,y=%f,cl=%c,c2=%c",a,b,x,y,cl,c2);
return0;
}
10、在C语言中,二维数组元素在内存中的存放顺序是_______。
二、选择题
11、若x、i、j和k都是int型变量,则执行表达式x=(i=4,j=16,k=32)后x的值为()。
A.4B.16C.32D.52
12、下面4个选项中,是正确的数值常量或字符常量的选项是()
13、以下程序的运行结果是()。
#include
intmain()
{intm=5,n=10;
printf("%d,%d\n",m++,--n):
return0;
}
A.5,9B.6,9C.5,10D.6,10
14、有输入语句:
scanf("a=%d,b=%d,c=%d",&a,&b,&C.;为使变量a的值为1,b的值为3,c的值为2;从键盘输入数据的正确形式应当是()。
(注:
囗表示空格)
A.132<回车>B.1,3,2<回车>
C.a=1囗b=3囗c=2<回车>D.a=1,b=3,c=2<回车>
15、判断字符串s1是否大于字符串s2,应当使用()。
A.if(s1>s2)B.if(strcmp(s1,s2))
C.if(strcmp(s2,s1)>0)D.if(strcmp(s1,s2)>0)
16、一个C程序的执行是从()
A.本程序的main函数开始,到main函数结束
B.本程序的第一个函数开始,到本程序文件的最后一个函数结束
C.本程序的main函数开始,到本程序文件的最后一个函数结束
D.本程序的第一个函数开始,到本程序main函数结束
17、以下不是无限循环的语句为()。
A.for(y=0,x=1;x>++y;x=i++)i=x;
B.for(;;x++=i):
C.while
(1){x++;}
D.for(i=10;;i-一)sum+=i;
18、若用数组名作为函数调用的实参,则传递给形参的是()
A.数组的首地址B.数组第一个元素的值
C.数组中全部元素的值D.数组元素的个数
19、若要对a进行++运算,则a应具有下面说明()
A.inta[3][2];B.char*a[]={"12","ab"};C.char(*A.[3];D.intb[10],*a=b;
20、若需要建立如图9-3所示的存储结构,且已有说明float*p,m=3.14;则正确的赋值语句是()
A)p=m;B)p=&m;C)*p=m;D)*p=&m;
21、以下程序的运行结果是()。
#include
intf(intx,inty)
{return(y-x)*x;}
intmain()
{inta=3,b=4,c=5,d;
d=f(f(a,C.,f(a,B.+f(c,B.);
printf("%d\n",D.;
return(0);
}
A.-48B.58C.-58D.47
22、下面程序的运行结果是()。
#include
intmain()
{charstr[]="SSSWLIA",c;intk;
for(k=2;(c=str[k])!
=\o';k++)
{switch(C.
{case'I':
++k;break;
case'L':
continue;
default:
putchar(C.;continue;
putchar('*’);
}
return0;
}
A.SSW*B.SW*C.SW*AD.SW
23、下面程序的功能是从键盘输入一行字符,统计其中有多少个单词,单词之间用空格分隔。
请选择填空。
()
#include
intmain()
{chars[80],c1,c2='';inti=0,num=0;
gets(s);
while(s[i]!
='\o')
{c1=s[i];
if(i==0)c2='';
elsec2=s[i-1];
if(【】)num++;
i++;
printf("Thereare%dwords.\n",num);
return0;
}
A.c1==′′&&c2==''B.cl!
=''&&c2==''C.c1==''&&c2!
=''D.cl!
=''&&c2!
=''
24、以下程序()。
#include
intmain()
{inta=5,b=0,c=0;
if(a=b+C.printf("***\n");
elseprintf("$$$\n");
return0;
}
A.有语法错不能通过编译B.可以通过编译但不能通过连接
C.输出***D.输出$$$
25、有一堆零件(100~200之间),如果分成4个零件一组的若干组,则多2个零件;若分成7个零件一组,则多3个零件;若分成9个零件一组,则多5个零件。
下面程序是求这堆零件的总数,请选择填空()。
#include
intmain()
{inti;
for(i=100;i<200;i++)
if((i-2)%4==0)
if(!
((i-3)%7))
if([])
printf("%d",i);
return0;
}
A)i%9=5B)i%9!
=5C)(i-5)%9!
=0D)i%9==5
三、读程序填空
26、以下printf语句中*号的作用是_______,输出结果是_______。
#include
intmain()
{inti=1;printf("##%*d\n",i,i);
i++;
printf("##%*d\n",i,i);
i++;
printf("##%*d\n",i,i);
return0;
}
27、以下程序的输出结果是_______。
#include
intmain()
{intx=1,y=2;
printf("x=%dy=%d*sum*=%d\n",x,y,x+y);
printf("10Squaredis:
%d\n",10*10);
return0;
}
28、以下程序的运行结果是_______。
#include
intmain()
{intal,a2,bl,b2;
Inti=5,j=7,k=0;
al=!
k;a2=i!
=j;
printf("a1=%d\ta2=%d\n",al,a2);
b1=k&&j;b2=k||j;
printf("b1=%d\tb2=%d\n",bl,b2);
returnO;
}
29、以下程序的功能是:
输入一个小写字母,将字母循环后移5个位置后输出。
例如’a’变成’f’,w’变成b’。
请填空。
#include
intmain()
{charc;
c=getchar();
if(c>='a'8&&.c<='u')【l】:
elseif(c>='v√8&8.c<='z)_______;
putchar(c);
return0;
}
30、下面程序的运行结果是_______。
#include
intmain()
{inti,t,sum=0;
for(t=i=1;i<=10;)
{sum+=t;++i;
if(i%3==0)t=-i;
elset=i;
}
printf("sum=%d,sum);
return0;
}
31、以下程序的运行结果是_______,其算法是_______。
#include
voidsort(inta[]);
intmain()
{inta[5]={5,10,一7,3,7},i,t,j;
sort(a);
for(i=0;i<=4;i++)
printf("%d",a[i]);
return(0);
voidsort(inta[])
{inti,j,t;
for(i=0;i<4;i++)
for(j=0;j<4一i;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=t;}
}
32、以下程序的功能是求1000以内的水仙花数。
(提示:
所谓水仙花数是指一个3位正整数,其各位数字的立方之和等于该正整数。
例如:
407=4×4×4+0×
0×0+7×7×7,故407是一个水仙花数。
)请填空。
#include
intmain()
{intx,y,z,a[8],m,i=0;
printf("Thespecialnumbersare:
\n");
for(_______;m++)
{x=m/100;
y=_______:
z=m%10;
if(x*100+y*10+z==x*x*x+y*y*y+z*z*z)
{_______:
i++;}
}
for(x=0;x
printf("%6d",a[x]);
return0;
}
33、设有5个学生,每个学生考4门课,以下程序能检查这些学生有无考试不及格的课程。
若某一学生有一门或一门以上课程不及格,就输出该学生的序号(序号从0开始)和其全部课程成绩。
请填空。
#include
intmain()
{intscore[5][4]={{62,87,67,95},{95,85,98,73},{66,92,81,69},
{78,56,90,99},{60,79,82,89}};
int(*p)[4],j,k,flag;
p=score;
for(j=0;j<5;j++)
{flag=0;
for(k=0;k<4;k++)
if(_______)flag=1;
if(flag==1)
{printf("No.%disfail,scoresare:
\n",j);
for(k=0;k<4;k++)
printf("%5d",_______);
printf(\n");
}
return(0);
}
四、编程题
34、编写程序,将字符串computer赋给一个字符数组,然后从第一个字母开始间隔地输出该串,请用指针完成。
35、已有变量定义和函数调用语句intx=57;isprime(x);函数isprime()用来判断一个整型数a是否为素数;若是素数,则函数返回1,否则返回0。
请编写isprime函数。
intisprime(inta)
{
}
参考答案
一、填空题
1、00001111
2、【1】顺序结构【2】选择结构【3】循环结构
3、主函数(或main函数)
4、【1】10【2】6
5、1
6、intx,inty,int(*fun)(int,int)
7、【1】a[0]=2a[1]=1
【2】因实参是地址,已对指定地址中的内容进行了交换。
8、【1】%If【2】num.x
9、a=3囗b=7x=8.5囗y=71.82c1=ADc2=a<回车>
(注:
答案中的囗代表空格)
10、按行主顺序存放
二、选择题
11、C
12、D
13、A
14、D
15、D
16、A
17、A
18、A
19、D
20、B
21、A
22、B
23、B
24、D
25、D
三、读程序填空
26、【1】可以使同一输出语句中的输出宽度得以改变。
【2】##1
##囗2
##囗囗3
27、x=1y=2*sum*=310Squaredis:
100
28、al=1a2=1,b1=0b2=1
29、【1】c=c+5【2】c=c-21
30、sum=19
31、【1】-735710【2】冒泡法排序
32、【1】m=100;m<1000【2】m/10-x*10【3】a[i]=m
33、【1】*(*(p+j)+k)<60【2】*(*(p+j)+k)
四、编程题
34、#include
intmain()
{staticcharx[]="computer";
char*p;
for(p=x;pputchar(*p);
printf("\n");
return0;
}
35、intisprime(inta)
{inti;
for(i=2;iif(a%i==0)return0;
return1;
}