计算机语言BC语言春季学期期末考试文档格式.docx
《计算机语言BC语言春季学期期末考试文档格式.docx》由会员分享,可在线阅读,更多相关《计算机语言BC语言春季学期期末考试文档格式.docx(15页珍藏版)》请在冰点文库上搜索。
![计算机语言BC语言春季学期期末考试文档格式.docx](https://file1.bingdoc.com/fileroot1/2023-4/29/04d8f316-7496-4f82-9129-1501bb794456/04d8f316-7496-4f82-9129-1501bb7944561.gif)
b++;
case1:
a++;
case2:
b++;
printf("
a=%d,b=%d\n"
a,b);
A.a=2,b=1B.a=1,b=1C.a=1,b=0D.a=2,b=2
3.有如下程序:
{floatx=2.0,y;
if(x<
0.0)y=0.0;
elseif(x<
10.0)y=1.0/x;
elsey=1.0;
%f\n"
y);
A.0.000000B.0.250000C.0.500000D.1.000000
4.有如下程序:
intadd(inta,intb)
{return(a+b);
{intx=3,y=6,z=9,r;
r=add(add(x,y),z);
%d\n"
r);
A.15B.16C.17D.18
5.有如下程序段:
int*p,a=13,b=2;
p=&
a;
a=*p+b;
执行该程序段后,a的值是【】。
A.16B.15C.14D.编译出错
6.有如下程序:
longfib(intn)
{if(n<
2)return
(1);
elsereturn(fib(n-1)+fib(n-2));
{printf("
%ld\n"
fib(3));
A.2B.3C.4D.6
7.有如下程序:
#defineN2
#defineMN+1
#defineNUM2*M+1
{
inti;
for(i=1;
i<
=NUM;
i++)printf("
i);
该程序中的for循环执行的次数是【】。
A.5B.6C.7D.8
8.有如下程序段:
inta=14,b=15,x;
charc='
A'
;
x=(a&
&
b)&
(c<
'
B'
);
执行该程序段后,x的值为【】。
A.trueB.falseC.0D.1
9.若有如下定义:
inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为9的表达式是【】。
A.*p+9B.*p+=9C.*(p+8)D.p+8
10.有如下程序:
{intn[5]={3,3,3},i,k=2;
for(i=0;
k;
i++)
n[i]=n[i]+1;
n[k]);
A.3B.5C.4D.不确定的值
二、阅读程序,写出运行结果(每小题3分,共18分)
请将答案填写在下表中(阅卷以下表为准)。
输出结果
1.以下程序的输出结果是【】。
#include<
stdio.h>
main()
{
inti,j,k;
i=12;
j=20;
k=i+j;
k=i+j=%d\n"
k);
2.以下程序的输出结果是【】。
main()
{floatx,y=9.5;
x=-12.34;
if(x>
0)y=1;
if(x=0)y=0;
if(x<
0)y=-1;
x=%f\ny=%f"
x,y);
3.以下程序的输出结果是【】。
intfun(intx)
{intp;
if(x==0||x==1)return(3);
p=x*fun(x-2);
returnp;
fun(7));
4.以下程序的输出结果是【】。
char*p[]={"
POOL"
"
opk"
he"
SP"
};
for(i=3;
i>
=0;
i--)printf("
%c"
*p[i]);
\n"
5.以下程序的输出结果是【】。
inty=5;
voidsub(intx){inty=1;
y+=x++;
sub:
y=%d\n"
}main(){
intx=3;
sub(x);
main:
6.以下程序的输出结果是【】。
{inta[3][3]={{1,2},{3,4},{5,6}},i,j,s=0;
for(i=1;
3;
i++)
for(j=0;
j<
=i;
j++)s+=a[i][j];
,s);
三、填空题(每空2分,共22分)
1.以下函数返回a所指数组中最小值所在的下标值,请填空。
intfun(int*a,intn)
{
inti,p;
n;
if(a[i]<
a[p]);
return(p);
2.以下函数把b字符串连到a字符串的后面,并返回a中新字符串的长度,请填空。
intstrcen(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!
=)
num++;
while(b[n])
{*(a+num)=b[n];
num++;
;
returnnum;
3.在磁盘的当前目录下有名为“lut2009.txt”的文本文件,下面的程序是从文件中读出其中的字符,并统计文件中字符的个数,同时还要求统计出字母“m”或“M”出现的次数,请填空。
{charch;
intnum=0,cm=0;
;
if((fp=fopen())==NULL)
exit
(1);
else
while((ch=fgetc(fp))!
=EOF)
if()cm++;
printf("
num=%d\tcm=%d\n"
num,cm);
4.下面程序的功能是求1!
+2!
+3!
+4!
+5!
,请填空。
main()
{inti,j,f,sum=0;
=5;
{f=1;
for(j=1;
j++)
;
sum=sum+f;
sum=%d"
sum);
5.下面程序的功能是计算一个3×
3矩阵的主对角线的元素之和,请填空。
{inti,;
inta[3][3]={{-1,2,3},{6,7,-8},{9,11,20}};
for(i=0;
i<
=2;
i++)
sum=;
四、编程题(每小题10分,共50分)
1.请编写一个完成输入长方形的长和宽,计算并输出该长方形面积的程序。
2.请编写一个实现符号函数的程序。
1x>
符号函数即:
y=f(x)=0x=0
-1x<
3.请编写一个输出如下图案的程序。
*******
*****
***
*
要求:
必须用循环结构实现。
4.请编写子函数sub_fun(intx),返回1-2+3-4+…+99-100的值。
5.请编写一个实现对数组a的10个数{20,50,30,10,60,80,100,70,70,40}按从小到大排序的程序。
参考答案和评分标准
一、选择题(每小题1分,共30分)
C
A
D
B
二、阅读程序,写出运行结果(每小题3分,共27分)
k=i+j=32
x=0.000000
y=9.500000
315
ShoP
y=4
y=8
18
三、填空题(每空2分,共30分)
1.p=0;
p=i
2.'
\0'
或0
n++或++n或n=n+1或n+=1
3.FILE*fp
"
lut2009.txt"
"
r"
ch=='
m'
||ch=='
M'
4.j<
=i
f=f*j
5.sum=0
sum+a[i][i]
评分标准:
结构完整2分(主函数或子函数);
变量声明恰当、控制符对应正确2分;
输入(或初始化)2分;
加工处理(顺序、选择或循环)2分;
输出(结果)2分
参考程序:
1.
floatx,y,z;
inputx,y:
scanf("
%f,%f"
&
x,&
y);
z=x*y;
z=%10.2f\n"
z);
getch();
2.
floatx,y;
inputx:
%f"
x);
if(x>
0)
y=1;
if(x==0)
y=0;
if(x<
y=-1;
x=%10.2f\t,y=%10.2f\n"
3.
inti,j;
for(i=4;
=1;
i--)
=4-i;
"
=2*i-1;
*"
4.
intsub_fun(intx)
inti,k=1,s=0;
=x;
s=s+k*i;
k=-k;
returns;
以下主函数可以不写:
sub_fun(100));
5.
#defineN10
inti,j,k,t,a[N]={20,50,30,10,60,80,100,70,70,40};
N-1;
k=i;
for(j=i+1;
N;
if(a[j]<
a[k])
k=j;
t=a[i];
a[i]=a[k];
a[k]=t;
%4d"
a[i]);