2022年大连艺术学院公共课《C语言》科目期末试卷B(有答案)
一、填空题
1、假设变量a、b和c均为整型,以下语句借助中间变量t把a、b和c中的值进行交
换,即把b中的值给a,把c中的值给b,把a中的值给c。例如:交换前,a=10、
b=20、c=30;交换后,a=20、b=30、c=10。请填空。
_______;a=b;b=c;_______;
2、C语言的源程序必须通过【】和【】后,才能被计算机执行。
3、C语言源程序的基本单位是________
4、C语言中的标识符可分为关键字、_______和_______3类。
5、假设m是一个3位数,从左到右依次用a、b、c表示各位的数字,则从左到右各
位数字是b、a、c的3位数的表达式是_______。
6、请读程序段:
unsigneda=16;
printf("%d,%d,%dn",a>>2,a=a>>2,a);以上程序段的输出结果是
_______。
7、执行下面程序段后,k的值是_______。
k=1;n=263;
do{k*=n%10;n/=10;}while(n);
8、设有宏定义如下:
#defineMIN(x,y)(x)>(y)?(x):(y)
#defineT(x,y,r)x*r*y/4则执行以下语句后,s1的值为_______,s2的值
为_______。
inta=1,b=3,c=5,s1,s2;
s1=MIN(a=b,b-a);
s2=T(a++,a*++b,a+b+c);
9、若有定义floata[3][5];则a数组所含数组元素个数是_______,a数组所占的字
节数是_______。
10、请填空:
建立如图所示存储结构所需的说明语句是_______。
建立如图所示为变量a输入数据的输入语句是_______。
建立如图所示存储结构所需的赋值语句是_______。
二、选择题
11、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值是()
A.7B.8C.6D.2
12、sizeof(float)是()。
A.一个双精度型表达式B.一个整型表达式
C.一种函数调用D.一个不合法的表达式
13、以下叙述正确的是
A.在C程序中,main函数必须位于程序的最前面
B.C程序的每行中只能写一条语句
C.C语言本身没有输入输出语句
D.在对一个C程序进行编译的过程中,可以发现注释中的拼写错误
14、以下叙述不正确的是()
A.一个C源程序可由一个或多个函数组成
B.一个C源程序必须包含一个main函数
C.C程序的基本组成单位是函数
D.在C程序中,注释说明只能位于一条语句的后面
15、若有说明:inta[3][4];,则对a数组元素的正确引用是()。
A.a[3][4]B.a[1,3]C.a[i+1][0]D.a(2)(1)
16、以下C程序的运行结果是。(注:口表示空格)
#include
intmain()
{longy=-43456;printf("y=%-8ldn",y);
printf("y=%-08ldn",y);
printf("y=%08ldn",y);
printf("y=%+8ldn",y);
return0;
}
A.y=囗囗-43456y=-囗囗43456y=-0043456y=-43456
B.y=-43456y=-43456y=-0043456y=+囗-43456
C.y=-43456y=-43456y=-0043456y=囗囗-43456
D.y=囗囗-43456y=-0043456y=00043456y=+43456
17、若要对a进行++运算,则a应具有下面说明()
[3][2];*a[]={"12","ab"};(*A.[3];[10],*a=b;
18、若用数组名作为函数调用的实参,则传递给形参的是()
A.数组的首地址B.数组第一个元素的值
C.数组中全部元素的值D.数组元素的个数
19、以下正确的描述是()。
ue语句的作用是结束整个循环的执行
B.只能在循环体内和switch语句体内使用break语句
C.在循环体内使用break语句或continue语句的作用相同
D.从多层循环嵌套中退出时,只能使用goto语句
20、语句while(!E);中的表达式!E等价于()。
A.E==0B.E!=1C.E!=0D.E==1
21、以下程序()。
#include
intmain()
{inta=5,b=0,c=0;
if(a=b+("***n");
elprintf("$$$n");
return0;
}
A.有语法错不能通过编译B.可以通过编译但不能通过连接
C.输出***D.输出$$$
22、下面程序段的功能是输出两个字符串中对应相等的字符,请选择填空()。
charx[]="programming";
chary[]="Fortran";
inti=0;
while(x[i]!='o'&&.y[i]!='o')
if(x[i]==y[i])printf("%c",【】);
eli++;
A.x[i++]B.y[++i]C.x[i]D.y[i]
23、下面程序的运行结果是()。
#include
intmain()
{charstr[]="SSSWLIA",c;intk;
for(k=2;(c=str[k])!=o';k++)
{switch(C.
{ca'I':++k;break;
ca'L':continue;
default:putchar(C.;continue;
putchar('*’);
}
return0;
}
***
24、以下程序的功能是计算函数F(x,y,z)=(x+y)/(x-y)+(z+y)/(z-
y)的值,请选择填空。
#include
#include
floatf(float,float);
intmain()
{floatx,y,z,sum;
scanf("%f%1%f",8.x,&y,8.z);
sum=f(【】)+f(z+y,z-y);
printf("sum=%fNn",sum);
return(0);
}
floatf(floata,floatB.
{floatvalue;
value=a/b;
return(value);
}
A)x-y,x+yB)x+y,x-yC)z+y,z-yD)z-y,z+y
25、假设等比数列的第一项a=1,公比q=2,下面程序的功能是求满足前n项和小
于100的最大n,请选择填空。()
#include
intmain()
{inta=1,g=2,n=0,sum=0;
do
{【1】;
++n;a*=g;
}while(sum<100);
n-=1;
printf("%dn",n);
return0;
}
+++==a+aD.a+=sum
三、读程序填空
26、以下程序的输出结果是_______。
#include
intmain()
{inta=252;
printf("a=%oa=%#on",a,a);
printf("a=%xa=%#xn",a,a);
return0;
}
27、以下程序的输出结果为_______。
#include
intmain()
{charc='x';
printf("c:dec=%d,oct=%o,hex=%x,ASCIl=%cn",c,c,c,c);
return0;
}
28、以下Check函数的功能是对value中的值进行四舍五入,若计算后的值与
pon值相等,则显示WELLDONE!,否则显示计算后的值。已有函数调用语句
Check(pon,value);请填空。
voidCheck(intpon,floatvalue)
{intval;val=_______;
printf("计算后的值:%d",val);
if(_______)printf("nWELIDONE!!n");
elprintf("nSorrythecorrectansweris%dn",val);
}
29、函数yanghui能够按以下形式构成一个杨辉三角形。请填空。
1
11
121
1321
14321
#include
#defineN1
voidyanghui(inta[][N])
{inti,j;
for(i=0;i
for(_______;i
for(j=2;_______;j++)a[i][j]=_______+a[i-1][j];
}
30、下面程序的功能是完成用100元人民币换成1元、2元、5元的所有兑换方案。
请填空。
#include
intmain()
{inti,j,k,L=1;
for(i=0;i<=20;i++)
for(j=0;j<=50;j++)
{k=_______;
if(_______)
{printf("%2d%2d%2d",i,j,k);
L=L+1;
if(L%5==0)printf("n");
return0;
}
31、下面程序的功能是给一维数组a输入6个任意整数,假设为:
748915
然后建立一个具有以下内容的方阵并打印。请填空。
574891
157489
915748
891574
489157
748915
#include
intmain()
{inta[6],i,j,k,m;
for(i=0;i<6;i++)
scanf("%d",&.a[i]);
for(i=5;i>=0;i--)
{k=a[5];for(_______;j>=0;j-一)
a[j+1]=a[j];
_______;
for(m=0;m<6;m++)
printf("%d",a[m]);
printf("n");
}
return0;
}
32、假设奖金税率如下(a代表奖金,r代表税率):
500≤a<1000r=5%
1000≤a<2000r=8%
2000≤a<3000r=10%
以下程序的功能是:对输入的一个奖金数,求税率和应交税款以及实得奖金数(扣
除奖金税后)。题中r代表税率,t代表税款,b代表实得奖金数。请填空。
#include
intmain()
{floata,r,t,b;
intc;
scanf("%f",8&a);
if(a>=3000)c=6;
elc=_______:
switch(c)
{ca0:r=0;break;
ca1:r=0.05;break;
ca2:
ca3:_______;break;
ca4:
ca.5:r=0.1;break;
ca6:r=0.15;break;
}
t=a*r;
b=a-t;
printf("r=%f,t=%f.b=%",r,t,b);
return0;
}
33、以下程序的运行结果是_______。
#include
voidpp(inta,int*b);
int*p;
intmain()
{inta=1,b=2,c=3;
p=&b;
pp(a+c,&b);
printf("(1)%d%d%dn",a,b,*p);
return(0);
}
voidpp(inta,int*b)
{intc=4;
*p=*b+c
a=*p-C;
printf("(2)%d%d%dn",a,*b,*p);
}
四、编程题
34、每个苹果0.8元,第一天买2个苹果;从第二天开始,每天买前一天的2倍,直
至购买的苹果个数达到不超过100的最大值,编写程序求每天平均花多少钱。
35、假设A、B两名工人生产同一产品,两人每月生产的数量如下:
其中各行的3个数据分别表示月份、A工人生产量、B工人生产量。请编写程序,将
这些数据写到d盘file1文件夹中的二进制文件中。
参考答案
一、填空题
1、【1】t=a【2】c=t
2、【1】编译【2】连接
3、函数
4、【1】用户标识符【2】预定义标识符
5、m/10%10*100+m/100*10+m%10
6、1,4,16
7、36
8、【1】3【2】28
9、【1】15【2】60
10、【1】chara,*p;【2】scanf("%c",8.a);【3】p=8.a;
二、选择题
11、B
12、B
13、C
14、D
15、C
16、C
17、D
18、A
19、B
20、A
21、D
22、A
23、B
24、B
25、B
三、读程序填空
26、a=374囗囗a=0374
a=fc囗囗a=0xfc
(注:答案中的囗代表空格)
27、c:dec=120,oct=170,hex=78,ASCII=x
28、【1】(int)((value*10+5)/10)【2】pon==val
29、【1】i=1【2】j<=i-1【3】a[i-1][j-1]
30、【1】100-i*5-j*2【2】k>=0
31、【1】j=4【2】a[0]=k
32、【1】a/500【2】r=0.08
33、(1)166
(2)266
四、编程题
34、#include
intmain()
{intday=0,buy=2;
floatsum=0.0,ave;
do
{sum+=0.8*buy;
day++;buy*=2;
}while(buy<=100);
ave=sum/day;
printf("%f",ave);
return0;
}
35、#include
structworkertintmonth;intworka;intworkb;};
intmain()
{inti;
structworkerwk;
FILE*fp;
fp=fopen("d:filelel2_","wb");
if(fp==NULL)
{printf("Error!n");
exit(O);}
for(i=1;i<=12;i++)
{scanf("%d%d%d",&.,,);
fwrite(&.wk,sizeof(structworker),1,fp);)
fclo(fp);
}
return0;
}
本文发布于:2022-12-30 00:37:08,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/56413.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |