13、014、(x>2&&x<3)||x<-1015、1
三、编程题
1、编写程序,输入一个长方形的二边长,输出其面积。
解:
程序如下
#include“stdio.h”
main()
{
inta,b,s;/*a,b作为长方形的两个边长,s为面积。
*/
printf(“请输入两个边长\n”);
scanf(“%d%d”,&a,&b);
s=a*b;
printf(“Thearea:
%d\n“,s);
}
2、设置半径为r=2.9,编程求圆周长和圆面积
解:
程序如下
#include“stdio.h”
#definePI3.14
main()
{
floatr,L,S;
L=2*PI*r;
S=PI*r*r;
printf(“L=%f,S=%f\n“,L,S);
}
3、输入一个华氏温度,输出相应的摄氏温度。
二者的换算公式是:
c=5/9(F–32),其中F表示华氏温度,c表示摄氏温度。
解:
程序如下
#include“stdio.h”
main()
{
floatc,F;
printf(“请输入一个华氏温度:
\n”);
scanf(“%f”,&F);
c=(float)5/9*(F-32);
printf(“F=%f,c=%f\n”,F,c);
}
第3章程序设计初步
一、单选题
1、C2、C3、B4、B5、B
解析:
1.答案:
C。
这里考察的是if-else语句和表达式中有增量和减量的执行过程。
if(m++>5)printf(“%d\n”,m);elseprintf(“%d\n”,m++);
先执行m>5的值是0,然后执行m=m+1;得到m=6;由于m>5的值是0所以执行else语句,应先输出m的值是6,然后m再自增一个单位变成7。
2.答案:
C。
这里考察的是if语句的嵌套。
根据else子句总是与之前最近的if语句配对来进行选择满足条件的答案。
3.答案:
B。
这里也考察的是if语句的嵌套。
同理:
if(xif(y<0)z=0;elsez+=1;等价与if(x4.答案:
B。
这里考察的是if语句的嵌套。
根据else子句总是与之前最近的if语句配对。
5.答案:
B。
由于B项:
if(x=y)&&(x!
=0)x+=y;if后的条件表达式没有用圆括号括起来。
正确的是:
if((x=y)&&(x!
=0))x+=y;
二、根据要求完成程序填空
1、z>yz>xy>x2、ch>=‘A’&&ch<=’Z’ch=ch-32
3、x<0x/10y!
=2
三、编程题
1、编写一个程序,要求用户从终端键入两个整数数值。
检测这两个数,判定第一个数是否能被第二数整除,并在终端上显示相应的信息。
解:
程序如下
#include“stdio.h”
main()
{
inta,b;/*a为第一个数,b为第二个数*/
printf(“Pleaseinputtwonumbers:
\n”);
scanf(“%d%d”,&a,&b);
if(a%b==0)
printf(“%d能被%d整除。
\n”,a,b);
else
printf(“%d不能被%d整除。
\n”,a,b);
}
2、有3个整数a,b,c,由键盘输入,输出其中最大的数。
解:
程序如下
#include“stdio.h”
main()
{
inta,b,c,max;
printf(“Pleaseinputthreenumbers:
\n”);
scanf(“%d%d%d”,&a,&b,&c);
if(a>b)max=a;
elsemax=b;
if(maxprintf(“Themaxis%d\n”,max);
}
3、给出一百分制成绩,要求输出成绩等级A、B、C、D、E。
其中90分以上为A,80~89分为B,70~79为C,60~69为D,60分以下为E。
解:
程序如下
#include“stdio.h”
main()
{
floatscore;
intgrade;
printf(“Pleaseinputascore:
\n”);
scanf(“%f“,&score);
grade=(int)score/10;
switch(grade)
{case10:
case9:
printf(“gradeisA\n”);break;
case8:
printf(“gradeisB\n”);break;
case7:
printf(“gradeisC\n”);break;
case6:
printf(“gradeisD\n”);break;
default:
printf(“gradeisE\n”);
}
}
4、新世纪百货进行打折促销活动,消费金额(P)越高,折扣(d)越大,标准如下:
消费金额折扣
P<1000%
100≤P<2005%
200≤P<50010%
500≤P<100015%
P≥100020%
编程实现从键盘输入消费金额,输出折扣率和实付金额(f)。
要求分别用if语句和switch语句实现。
解:
(1)用if语句编程实现如下
#include“stdio.h”
main()
{
floatP,d,f;
printf(“输入消费金额:
\n”);
scanf(“%f”,&P);
if(P<100)d=0;
if(P>=100&&P<200)d=0.05;
if(P>=200&&P<500)d=0.10;
if(P>=500&&P<1000)d=0.15;
if(P>=1000)d=0.20;
f=P*(1-d);
printf(“折扣是%f,则实付金额为%f\n”,d,f);
}
(2)用switch语句编程实现如下
#include“stdio.h”
main()
{
floatP,d,f;
intc;
printf(“输入消费金额:
\n”);
scanf(“%f”,&P);
c=(int)P/100;
switch(c)
{case0:
d=0;break;
case1:
d=0.05;break;
case2:
case3:
case4:
d=0.10;break;
case5:
case6:
case7:
case8:
case9:
d=0.15;break;
default:
d=0.20;
}
f=P*(1-d);
printf(“折扣是%f,则实付金额为%f\n”,d,f);
}
第4章循环结构程序设计
一、单项选择
1、A2、D3、C4、D5、B
6、D7、B8、B
二、按要求完成程序填空
1、c!
=’\n’c>=’0’&&c<=’9’
2、i%3==2&&i%5==3&&i%7==2j%5==0
3、i<10j%3!
=0
三、编程题
1、编程求n的阶乘(n由键盘输入)。
解:
程序如下
#include“stdio.h”
main()
{
intn,i;
longfac;
fac=1;
printf(“Inputanumber:
”);
scanf(“%d”,&n);
i=1;
while(i<=n)
{fac=fac*i;
i++;
}
printf(“%d!
is%ld\n”,n,fac);
}
2、计算1!
+2!
+3!
+…+10!
的值。
解:
方法一
#include“stdio.h”
main()
{
inti=1,j;
doublefac,sum=0;
while(i<=10)
{j=1;
Fac=1;
while(j<=i)
{fac=fac*j;
j++;
}
sum=sum+fac;
i++;
}
printf(“1!
+2!
+3!
+…+10!
=%.0f\n”,sum);
}
方法二:
#include“stdio.h”
main()
{
inti,j;
doublefac,sum=0;
for(i=1;i<=10;i++)
{
for(j=1,fac=1;j<=i;j++)
fac=fac*j;
sum=sum+fac;
}
printf(“1!
+2!
+3!
+…+10!
=%.0f\n”,sum);
}
方法三:
#include“stdio.h”
main()
{
inti;
doublefac,sum;
sum=0;
fac=1;
for(i=1;i<10;i++)
{
fac=fac*i;
sum=sum+fac;
}
printf(“1!
+2!
+3!
+…+10!
=%.0f\n”,sum);
}
3、求Sn=a+aa+aaa+…+aaa…a(n个a)的值,其中a是一个数字。
例如:
3+33+333+3333(此时n=4),n由键盘输入。
解:
程序如下
#include“stdio.h”
main()
{
inta,n,i;
longSn,t;
Sn=0;
printf(“Pleaseinputa:
\n”);
scanf(“%d”,&a);
printf(“Pleaseinputn:
\n”);
scanf(“%d”,&n);
t=a;
for(i=1;i<=n;i++)
{Sn=Sn+t;
t=t*10+a;
}
printf(“Sn=%ld\n”,Sn);
}
4、打印出所有的“水花仙数”,所谓“水花仙数”是指一个3位数,其各位数字立方和等于该数本身。
例如,153是一个水花仙数。
解:
程序如下
#include“stdio.h”
main()
{
intt,a,b,c,n;/*变量n为统计水花仙数的个数*/
n=0;
for(t=100;t<1000;t++)
{a=t/100;
b=(t–a*100)/10;
c=t%10;
if(a*a*a+b*b*b+c*c*c==t)
{n++;
if(n%6==0)
printf(“\n”);
printf(“%5d”,t);
}
}
}
6、每个苹果0.8元,第一天买2个苹果,第二天开始,每天买前一个的2倍,直至购买的苹果个数达到不超过100的最大值。
编写程序求每天平均花多少钱?
解:
程序如下
#include“stdio.h”
main()
{
intday,num,sum;
floatmoney,every;
sum=0;
num=2;
for(day=1;num<100;)
{sum=sum+num;
day++;
num=num*2;
}
money=sum*0.8;
every=money/day;
printf(“every=%f\n”,every);
}
7、变成完成用一元人民币换成一分、二分、五分的所有兑换方案,即输出所有满足搭配要求的1分币个数,2分币个数,5分币个数。
解:
程序如下:
#include“stdio.h”
main()
{
intone,two,five;
for(one=0;one<=100;one++)
for(two=0;two<=50;two++)
for(five=0;five<=20;five++)
if(one+two*2+five*5==100)
printf(“one=%d,two=%d,five=%d\n”,one,two,five);
}
第5章模块化程序设计---函数
一、单选题
1、B2、B3、A4、A5、D
6、D7、B8、B9、B10、A
二、编程题
1、已知三角形的三边长,编一实现求三角形面积的功能函数。
说明:
用海伦公式来求面积,但要注意输入的三边长要符合构成三角形的条件。
海伦公式为:
SΔ=
(其中:
s=(a+b+c)/2)
解:
程序如下
#include“stdio.h”
#include“math.h”
floatArea(inta,intb,intc)
{
floats,area;
s=(float)(a+b+c)/2;
if((a+b>c)&&(a-b)area=sqrt(s*(s-a)*(s-b)*(s-c));
else
area=0;
returnarea;
}
main()
{
inta,b,c;
floatarea;
floatArea(int,int,int);
printf(“请输入三角形的三边长\n”);
scanf(“%d%d%d”,&a,&b,&c);
area=Area(a,b,c);
if(area!
=0)
printf(“area=%f\n”,area);
eles
printf(“error!
\n”);
}
2、写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。
解:
程序如下
#include“stdio.h”
intprime(intn)
{
intt,a=1;
for(t=2;t<=n/2;t++)
if(n%t==0)
{
a=0;break;
}
returna;
}
main()
{
intn;
printf(“inputanumber:
\n”);
scanf(“%d”,&n);
if(prime(n)==1)
printf(“%disprime\n”,n);
eles
printf(“%disnotprime\n”,n);
}
3、编写函数,求1!
+2!
+3!
+…+K!
的和。
解:
程序如下
#include“stdio.h”
doubleSUM(intk)
{inti,j;
doublefac,sum;
sum=0;
for(i=1;i<=k;i++)
{
for(j=1,fac=1;j<=i;j++)
fac=fac*j;
sum=sum+fac;
}
returnsum;
}
main()
{intk;
doublesum;
scanf(“%d”,&k);
sum=SUM(k);
printf(“1!
+2!
+3!
+…+K!
=%.0f\n”,sum);
}
4、求方程ax2+bx+c=0的根,用2个函数分别求当b2-4ac大于0和等于0的根并输出结果,从主函数中输入a、b、c的值。
#include“stdio.h”
#include“math.h”
voidf1(floata,floatb,floatc)
{
floatt1,t2;
t1=(-b+sqrt(b*b-4*a*c))/(2*a);
t2=(-b-sqrt(b*b-4*a*c))/(2*a);
printf(“t1=%f,t2=%f\n”,t1,t2);
}
voidf2(floata,floatb,floatc)
{
floatt1;
t2=-b/(2*a);
printf(“t1=%f\n”,t1);
}
main()
{
floata,b,c;
printf(“inputa,b,c\n”);
scanf(“%f%f%f”,&a,&b,&c);
if(b*b–4*a*c>0)
f1(a,b,c);
elesif(b*b-4*a*c==0)
f2(a,b,c)