c语言 fx 1 x x 2 2,博主资料--ACCP-C语言程序设计习题参考解答-1~3章

C语言程序设计 习题参考解答

第一章 C语言概述

1.1、CDCCC

1.2、编程题

(1)解:

main()

{

printf(" * * * * * * * * * * \n");

printf("\n");

printf(" Very Good! \n");

printf("\n");

printf(" * * * * * * * * * * \n");

}

运行结果:

* * * * * * * * * *

Very Good!

* * * * * * * * *

(2) (略)

1.3 (略)

1.4 (略)

1.5 (略)

Menu

C语言程序设计 习题参考解答

第二章 基本数据类型和表达式

2.1、BABAB DDABD CCDAC ABADD DCBB

2.2 (略)

2.3 (略)

2.4 (略)

Menu

C语言程序设计 习题参考解答

第三章 控制流

3.1

解:

main()

{

float c,f;

printf("请输入一个华氏温度:\n");

scanf("%f",&f);

c=(5.0/9.0)*(f-32); //注意5和9要用实型表示,否则5/9值为零

printf("摄氏温度为:%5.2f\n",c);

}

运行结果:

请输入一个华氏温度:

78

摄氏温度为:25.56

3.2

解:

main()

{ int x,y;

printf(" 输入 x:");

scanf("%d",&x);

if(x<1)

{

y=x;

printf(" X=%d,Y=X=%d \n",x,y);

}

else if(x<10)

{

y=2*x-1;

printf(" X=%d,Y=2*X-1=%d \n",x,y);

}

else

{

y=3*x-11;

printf(" X=%d,Y=3*x-11=%d \n",x,y);

}

}

运行结果:

1:输入 X:4

X=4,Y=2*X-1=7

2:输入 X:-1

X=-1,Y=X=-1

3:输入 X:20

X=20,Y=3*x-11=49

3.3

解:

main()

{

int t,a,b,c,d;

printf("请输入四个数:");

scanf("%d,%d,%d,%d",&a,&b,&c,&d);

printf("\n\n a=%d,b=%d,c=%d,d=%d\n",a,b,c,d);

if(a>b)

{t=a;a=b;b=t;}

if(a>c)

{t=a;a=c;c=t;}

if(b>c)

{t=b;b=b;b=t;}

if(b>d)

{t=b;b=d;d=t;}

if(c>d)

{t=c;c=d;d=t;}

printf("\n排序后的结果如下:\n");

printf(" %d %d %d %d \n",a,b,c,d);

}

3.4

实际上应该有以下几种可能:

(1) (1) a=0,不是二次方程。

(2) (2) b^2-4ac=0,有两个相等实根。

(3) (3) b^2-4ac>0,有两个不等实根。

(4) (4) b^2-4ac<0,有两个共轭复根。

据此编写程序如下:

#include

main()

{ float a,b,c,d,disc,x1,x2,realpart,imagpart;

scanf

(“%f,%f,%f”,&a,&b,&c);

printf(“The equation”);

if (fabs(a)<=le-6)

printf(“is not a quadratic”);

else

disc=b*b-4*a*c;

if (fabs(disc)<=le-6)

printf(“has two equal roots:%8.4f\n”,-b/(2*a));

else if (disc)>le-6

{x1=(-b+sqrt(disc))/2*a;

x2=(-b-sqrt(disc))/2*a;

printf(“has distinct real roots: %8.4f and %8.4f\n”,x1,x2);

}

else

{realpart=-b/(2*a);

imagpart=sqrt(-disc)/(2*a);

printf(“has complex roots:\n”);

printf(“%8.4f+%8.4fi\n”,realpart,imagpart);

printf(“%8.4f-%8.4fi\n”,realpart,imagpart);

}

}

程序中用disc代表b^2-4ac,先计算disc的值,以减少以后的重复计算。对于判断b^2-4ac是否等于0时,要注意一个问题:由于disc(即b^2-4ac)是实数,而实数在计算和存储时会有一些微小的误差,因此不能直接进行如下判断:if

(disc==0)……

因为这样可能会出现本来是零的量,由于上述误差而被判别为不等于零而导致结果错误。所以采取的办法是判别disc的绝对值(abs(disc))是否小于一个很小的数(例如10^-6),如果小于此数,就认为disc=0。程序中以realpart代表实部p,以imagpart代表虚部q,以增加可读性。

3.5

分析此问题,折扣的变化是有规律的:折扣的“变化点”都是250的倍数(250,500,1000,2000,3000)。利用这一特点,

可以在横轴上加一种坐标c,c的值为s/250。C代表250的倍数。当c<1时,表示s<250,无折扣;1<=

c<=

2时,表示250<=s<500,折扣d=2%;2<=c<4时,d=5%;4<=c<8时,d=8%;8<=c<12时,d=10%;c>12时,d=15%;

据此写出程序如下:

main()

{

int c,s;

float p,w,d,f;

scanf(“%f,%f,%d”,&p,&w,&s);

if (s>=3000) c=12;

else c=s/250;

switch(c)

{

case 0:d=0;break;

case 1:d=2;break;

case 2:

case 3:d=5;break;

case 4:

case 5:

case 6:

case 7:d=8;break;

case 8:

case 9:

case 10:

case 11:d=10;break;

case 12:d=15;break;

}

f=p*w*s*(1-d/100.0);

printf(“freight=%15.4f”,f);

}

运行情况如下:

100,20,300

freight=588000.0000

请注意:c、s是整型变量,因此c=s/250为整数。当s>=3000时,令c=12,而不使c随s增大,这是为了在switch语句中便于处理,用一个case可以处理所有s>=3000的情况。

3.6 (略)

3.7

解:

main()

{

int n,t,number=20;

float a=2,b=1,s=0;

for(n=1;n<=number;n++)

{

s=s+a/b;

t=a;a=a+b;b=t;

}

printf("总和=%9.6f\n",s);

}

3.8 (略)

3.9

解:

main()

{

int i,j,k,n;

printf("水仙花数是:");

for(n=100;n<1000;n++)

{

i=n/100;

j=n/10-i*10;

k=n%10;

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)

{

printf("\n%d",n);

}

}

}

3.10

解:

main()

{

int day,x1,x2;

day=9;

x2=1;

while(day>0)

{

x1=(x2+1)*2;

x2=x1;

day--;

}

printf("桃子总数=%d\n",x1);

}

3.11

解:

main()

{

float sn=100.0,hn=sn/2;

int n;

for(n=2;n<=10;n++)

{

sn=sn+2*hn;

hn=hn/2;

}

printf(“第十次落地是共经过的米数为:%f”,sn);

printf(“第十次反弹%f米\n”,hn);

}

3.12

解:

#include

main()

{

float x,x0,f,f1;

x=1.5;

do

{

x0=x;

f=((2*x0-4)*x0+3)*x0-6;

f1=(6*x0-8)*x0+3;

x=x0-f/f1;

}

while(fabs(x-x0)>=1e-5);

printf("方程的根=%6.2f\n",x);

}

3.13

解:

#include

main()

{

float x0,x1,x2,fx0,fx1,fx2;

do

{

printf("请输入x1,x2的值:\n");

scanf("%f,%f",&x1,&x2);

fx1=x1*((2*x1-4)*x1+3)-6;

fx2=x2*((2*x2-4)*x2+3)-6;

}

while(fx1*fx2>0);

do

{

x0=(x1+x2)/2;

fx0=x0*((2*x0-4)*x0+3)-6;

if((fx0*fx1)<0)

{

x2=x0;

fx2=fx0;

}

else

{

x1=x0;

fx1=fx0;

}

}

while(fabs(fx0)>=1e-5);

printf("方程的根是%6.2f\n",x0);

}

3.14

解:

#include

main()

{

int i,j,k;

for(i=0;i<=3;i++)

{

for(j=0;j<=2-i;j++)

printf(" ");

for(k=0;k<=2*i;k++)

printf("*");

printf("\n");

}

for(i=0;i<=2;i++)

{

for(j=0;j<=i;j++)

printf(" ");

for(k=0;k<=4-2*i;k++)

printf("*");

printf("\n");

}

}

3.15

解:

main()

{

char i,j,k;

for(i='x';i<='z';i++)

for(j='x';j<='z';j++)

{

if(i!=j)

for(k='x';k<='z';k++)

{

if(i!=k&&j!=k)

{

if(i!='x'&&k!='x'&&k!='z')

printf("顺序为:\na--%c\tb--%c\tc--%c\n",i,j,k);

}

}

}

}

运行结果:

顺序为:

a—z b—x c—y

Menu

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值