份考试C语言程序设计第三次作业.docx
《份考试C语言程序设计第三次作业.docx》由会员分享,可在线阅读,更多相关《份考试C语言程序设计第三次作业.docx(19页珍藏版)》请在冰豆网上搜索。
份考试C语言程序设计第三次作业
2013年9月份考试C语言程序设计第三次作业
一、填空题(本大题共40分,共20小题,每小题2分)
1.编写C语言程序四个步骤是:
______,______,______,______.
2.源程序的基本单位是______
3.函数体一般包括______部分和______部分
4.C语言提供的预处理功能有______、______、______等三种.
5.在C语言中(以16位PC为例),一个float类型的数据在内存中所占的字节数是______;一个double类型的数据在内存中所占的字节数是______.
6.C语言中变量和函数的存储方式有四种,分别是:
______,______,______,______.
7.写出下面表达式运算后Val的值,假设Val=10,Num=5.Val和Num都定义为整型变量.
(1)______,
(2)______,(3)______
(1)Val+=Val;
(2)Val*=Num+Val;(3)Val+=Val-=Val*=Val;
8.下面程序段的运行结果是______.
Chars[80],*sp="HELLO!
";
sp=strcpy(s,sp);
s[0]=''h'';
puts(sp);
9.下列程序的输出结果是______
main()
{
inta=-1,b=4,k;
k=(a++<0)&&(!
(b--<=0));
printf("%d%d%d\n",k,a,b);
}
10.当a的值分别为:
1,2,3时,程序的结果是______
#includemain()
{
inta;
printf("Pleaseentera=");
scanf("%d",&a);switch(a)
{
case1:
printf("*");
break;
default:
printf("#");
case2:
printf("-");
}
}
11.下面程序段的运行结果是______
chars[80],*sp="you";
sp=strcpy(s,sp);
s[0]=''Y'';
puts(sp);
12.以下程序的执行结果是:
______.
#includemain()
{
inta,b,c,d,x;
a=c=0;b=1;
d=20;if(a)d=d-10;
elseif(!
b)if(!
c)x=15;
elsex=25;
printf("d=%d\n",d);
}
13.写出下面表达式运算后Val的值,假设Val=12,Num=7.Val和Num都定义为整型变量.______Val+=Val;______Val*=Val;______Val*=Num+Val;______Val%=(Num%=4);______Val/=Val+Val;______Val+=Val-=Val*=Val;
14.若a是int型变量,则执行下面表达式后a的值是______.a=25/3%3
15.输入:
teacher时,下列程序的输出结果是______
#includemain()
{
charc;
intv0=0,v1=0;
doswitch(c=getchar())
{
case''a'':
case''b'':
case''c'':
v0++;
default:
2:
v1++;
}
while(c!
=''\n'');
printf("v0=%d,v1=%d\n",v0,v1);
}
16.下列程序的输出结果是______
main()
{
inta=-1,b=4,k;
k=(++a<0)&&(!
(b--<=0));
printf("%d%d%d\n",k,a,b);
}
17.下列程序的输出结果是______
main()
{
intx=1,a=0,b=0;
switch(x)
{
case0:
b++;
case1:
a++;
case2:
a++;b++;
}
printf("a=%d,b=%d\n",a,b);
}
18.以下程序的运行结果是______
inta=3,b=5;
max(inta,intb)
{
intc;
c=a>b?
a:
b;
return(c);
}
main()
{
inta=8;
printf("%d",max(a,b)):
}
19.当a的值分别为:
1,2,3时,程序的结果是______.
#includemain()
{
inta;
printf("Pleaseentera=");
scanf("%d",&a);
switch(a)
{
case1:
printf("a");
break;
default:
printf("b");
case2:
printf("c");
}
}
20.下列程序的输出结果是______.
#includemain()
{
inta=-1,b=2,k;
k=(++a<0)&&(!
(b--<=0));
printf("%d%d%d\n",k,a,b);
}
二、程序阅读题(本大题共60分,共10小题,每小题6分)
1.表示"整数x的绝对值大于5"时值为"真"的C语言表达式是().
2.已知字符A的ASCII码值为65,以下语句的输出结果是().
charch=''B'';
printf("%c%d\n",ch,ch);
3.以下程序运行时,若从键盘输入:
102030<回车>,输出的结果是().
#includemain()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
4.以下程序运行后的输出结果是().
voidswap(intx,inty)
{
intt;
t=x;x=y;y=t;
printf("%d%d",x,y);
}
main()
{
inta=3,b=4;
swap(a,b);
printf("%d%d",a,b);
}
5.以下程序运行后的输出结果是().
main()
{
charm;
m=''B''+32;
printf("%c\n",m);
}
6.以下程序运行后的输出结果是().
main()
{
inta[4][4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4){if(i==2||i==4)continue;
j=0;
do{s+=a[i][j];j++;
}
while(j<4);
}
printf("%d\n",s);
}
7.有以下语句段
intn1=10,n2=20;
printf("()",n1,n2);
要求按以下格式输出n1和n2的值,每个输出行从第一列开始,请填空.n1=10n2=20
8.以下程序运行后的输出结果是()
main()
{
chara[]="Language",b[]="Programe";
char*p1,*p2;intk;
p1=a;
p2=b;
for(k=0;k<=7;k++)if(*(p1+k)==*(p2+k))printf("%c",*(p1+k));
}
9.求ax*x+bx+c=0的方程的根.a,b,c由键盘输入,设b-4ac>0.
10.有一分数序列:
2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和.
答案:
一、填空题(40分,共20题,每小题2分)
1.
参考答案:
编辑编译连接运行
解题方案:
基本知识、记忆
评分标准:
每答对1空得2分
2.
参考答案:
函数
解题方案:
基本知识点、记忆
评分标准:
每答对1空得2分
3.
参考答案:
声明执行
解题方案:
函数体一般包括声明部分和执行部分
评分标准:
每答对1空得2分
4.
参考答案:
宏定义文件包含条件编译
解题方案:
基本概念,记忆
评分标准:
每答对1空得2分
5.
参考答案:
48
解题方案:
Float4字节Double8字节
评分标准:
每答对1空得2分
6.
参考答案:
自动(auto)静态(static)寄存器(register)外部的(extern)
解题方案:
4种存储方式是自动(auto)、静态(static)、寄存器(register)、外部的(extern)
评分标准:
每答对1空得2分
7.
参考答案:
201500
解题方案:
Val+=Val,Val=20等价于Val*=(Num+Val),Val=150等价于Val*=Val,Val-=Val,Val+=Val,Val=0
评分标准:
每答对1空得2分
8.
参考答案:
hELLO!
解题方案:
"HELLO!
"字符串常量自动添加结束符’\0’,所以sp=strcpy(s,sp);s="triz",且sp指向s所以输出hELLO!
评分标准:
每答对1空得2分
9.
参考答案:
103
解题方案:
(a++<0)&&(!
(b--<=0))等价于1&&(!
0)所以k=1,a=0,b=3
评分标准:
每答对1空得2分
10.
参考答案:
*-#-
解题方案:
执行case1,输出*执行case2,输出执行default,输出#-
评分标准:
每答对1空得2分
11.
参考答案:
You
解题方案:
"you"字符串常量自动添加结束符’\0’,所以sp=strcpy(s,sp);s="you",且sp指向s所以输出You
评分标准:
每答对1空得2分
12.
参考答案:
d=20
解题方案:
Else和最近的if配对,所以if(a)[假]d=d-10;elseif(!
b)[假]if(!
c)x=15;elsex=25;从而,赋值语句都没有执行,所以d=20
评分标准:
每答对1空得2分
13.
参考答案:
24144228000
解题方案:
(1)Val+=Val,Val=24
(2)val*=Val,Val=144(3)等价Val*=(Num+Val),Val=12*(12+7)=228(4)Val%=(Num%=4);Val%=(Num%4)=12%(7%4)=12%3=0(5)等价Val/=(Val+Val)12/=(12+12)Val=0(6)等价Val*=Val,Val-=Val,Val*=Val+=Val,则Val=(144,0,0,0)=0
评分标准:
每答对1空得2分
14.
参考答案:
2
解题方案:
/优先即高于%,等价于(25/3)%3=8%3=2
评分标准:
每答对1空得2分
15.
参考答案:
v0=2,v1=8
解题方案:
Case中没有break,因此?
v0增加2次,v1增加8次,所以v0=2,v1=8
评分标准:
每答对1空得2分
16.
参考答案:
004
解题方案:
++a<0即0<0为假,不执行&&的后的表达式,所以k=0,a=0,b=4
评分标准:
每答对1空得2分
17.
参考答案:
a=2,b=1
解题方案:
执行case1,case中没有break,执行完该switch语句,所以a=2,b=1
评分标准:
每答对1空得2分
18.
参考答案:
8
解题方案:
对于全局变量和局部变量同名时,在程序局部变量作用域,局部变量覆盖全局变量,所以max(a,b)等价于max(8,5)
评分标准:
每答对1空得2分
19.
参考答案:
acbc
解题方案:
Case1输出aCase2输出cCase3输出bc
评分标准:
每答对1空得2分
20.
参考答案:
002
解题方案:
(++a<0)&&(!
(b--<=0))即(0<0)&&(!
(b--<=0)),即0&&(!
(b--<=0)),所以(!
(b--<=0))不执行.K=0,a=0,b=2
评分标准:
每答对1空得2分
二、程序阅读题(60分,共10题,每小题6分)
1.
参考答案:
x>5||x5或abs(x)>5或(x>5)||(x5)
解题方案:
要使整数x的绝对值大于5,则x大于5或x小于-5,用C语言表示即为:
x>5||x<-或者(x>5)||(x<-5).
评分标准:
回答正确得5分,错误不得分
2.
参考答案:
B66
解题方案:
printf函数的一般格式为printf(格式控制,输出表列)"格式控制"是用双引号括起来的字符串,也称"转换控制字符串".1、d格式符,用来输出十进制整数.2、c格式符,用来输出一个字符.已知字符A的ASCII码值为65,则字符B的ASCII码值为66,所以本题输出结果为:
B66
评分标准:
回答正确得5分,错误不得分
3.
参考答案:
10300
解题方案:
在scanf格式控制符中,如果在%后有一个"*"附加说明符,表示跳过它指定的列数.本题中""%d%*d%d""表示将10赋给i,%*d表示读入整数但不赋给任何变量,然后再读入整数30赋给变量j,那么变量k并没有重新赋值,仍为初始值0.所以输出的结果为10300.
评分标准:
回答正确得5分,错误不得分
4.
参考答案:
4334
解题方案:
用变量作为函数的实参时,属单向传递,即"值传送"方式,此种函数参数的传递方式只能由实参传给形参,不能由形参传回来给实参.本题中,变量a,b的值传递给了函数swap的形参x,y,并在函数中对x,y的值进行了交换,所以函数swap中输出的x,y的值为4,3,但此时实参a,b的值并没有随形参x,y的改变而改变,所以在主函数中输出的a,b的值为3,4.
评分标准:
回答正确得5分,错误不得分
5.
参考答案:
b
解题方案:
考察的主要知识点是不同类型数据间的转换与运算.本题所要实现的功能是把大写字母转换为小写字母,在C中,小写字母的ASCII码值比大写字母的ASCII码值大32.
评分标准:
回答正确得5分,错误不得分
6.
参考答案:
92
解题方案:
本题考查的是循环的嵌套.解题过程:
(1)当i=0时执行while1)i<4,i=12)因为i=1,所以不执行continue3)j赋值04)执行dowhile①s=0+a[1][0]=5,j=1,因为j<4,所以继续循环②s=5+a[1][1]=5+6=11,j=2,因为j<4,所以继续循环③s=11+a[1][2]=11+7=18,j=3,因为j<4,所以继续循环④s=18+a[1][3]=18+8,j=26,因为j=4,所以终止循环
(2)当i=1时,i<4执行while,i=2,因为i=2,所以执行continue,结束本次while循环(3)当i=2时,i<4执行while,i=31)因为i=3,所以不执行continue2)j赋值03)执行dowhile①s=26②s=26+a[3][0]=26+15=41,j=1,因为j<4,所以继续循环③s=41+a[3][1]=41+16=57,j=2,因为j<4,所以继续循环④s=57+a[3][2]=57+17=74,j=3,因为j<4,所以继续循环⑤s=74+a[3][3]=74+18=92,j=4,因为j=4,所以终止循环(4)i=3时,i<4执行while,i=4因为i=4,所以执行continue,结束本次循环(5)当i=4时,i=4结束while循环(6)结果输出s=92.
评分标准:
回答正确得5分,错误不得分
7.
参考答案:
n1=%d\nn2=%d
解题方案:
printf函数的一般格式为printf(格式控制,输出表列)"格式控制"是用双引号括起来的字符串,也称"转换控制字符串",它包括两种信息:
1、格式说明,由"%"和格式字符组成,如%d,%f等.它的作用是将输出的数据转换为指定的格式输出.格式说明总是由"%"字符开始的.2、普通字符,即需要原样输出的字符.结果要求输出为:
n1=10n2=20所以格式控制中需含有"n1="部分,又因为要求按两行输出,需含有回车符:
\n.
评分标准:
回答正确得5分,错误不得分
8.
参考答案:
gae
解题方案:
解题过程:
(1)当k=0时,*(p1+0)=''L'',*(p2+0)=''P'',L!
=P,所以没有输出
(2)当k=1时,*(p1+1)=''a'',*(p2+1)=''r'',a!
=r,所以没有输出(3)当k=2时,*(p1+2)=''n'',*(p2+2)=''o'',n!
=o,所以没有输出(4)当k=3时,*(p1+3)=''g'',*(p2+3)=''g'',g==g,所以输出g(5)当k=4时,*(p1+4)=''u'',*(p2+4)=''r'',u!
=r,所以没有输出(6)当k=5时,*(p1+5)=''a'',*(p2+5)=''a'',a==a,所以输出a(7)当k=6时,*(p1+6)=''g'',*(p2+6)=''m'',g!
=m,所以没有输出(8)当k=7时,*(p1+7)=''e'',*(p2+7)=''e'',e==e,所以输出e(9)当k=8时结束循环(10)输出结果为:
gae.
评分标准:
回答正确得5分,错误不得分
9.
参考答案:
#includemain()
{
floata,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;
printf("\n\nx1=%5.2f\nx2=%5.2f\n",x1,x2);
}
解题方案:
一元二次函数的球根公式是(-b+sqrt(b*b-4*a*c))/2a,(-b-sqrt(b*b-4*a*c))/2a
评分标准:
程序机构3,算法5,其他2
10.
参考答案:
main()
{
intn,t,number=20;
floata=2,b=1,s=0;
for(n=1;n<=number;n++)
{
s=s+a/b;
t=a;
a=a+b;
b=t;
}
printf("sumis%9.6f\n",s);
}
解题方案:
分子的规律是2,3,5,8,13…分母的规律是1,2,3,5,8,13…可知第n项f[n]的值为f[n-1]+f[n-2]
评分标准:
程序机构3,算法5,其他2