练习3.6
编程练习
1~3题
#include<stdio.h>
int main()
{
float x,y;
x=(3+10)/2.0;
y=(4+12)/2.0;
printf("%f\n",x);
printf("%f\n",y);
return 0;
}
4题
#include<stdio.h>
#define ER 2.0
int main()
{
int x1,y1,x2,y2;
float x3,y3;
printf("请输入数据:");
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
x3=(x1+x2)/ER; /*注意应先输入数据后在计算*/ y3=(y1+y2)/ER;
printf("(%5.2f,%5.2f)\n",x3,y3);
return 0;
}
5题
#include<stdio.h>
#include<math.h>
int main()
{
int num1;
float num2;
printf(“请输入数据:”);
scanf(“%d”,&num1);
num2 = pow(num1,0.25);
printf(“输入数据的4次方根为:%f\n”,num2);
return 0;
}
6题
#include<stdio.h>
#include<math.h>
int main()
{
int X,N,R;
float A;
printf(“输入初始存款金额:”);
scanf(“%d”,&X);
printf(“输入存期:”);
scanf(“%d”,&N);
printf(“输入年利率:”);
scanf(“%d”,&R);
A = X*pow((1.0+R/100.0),N);
printf(“获得的货币量:%f\n”,A);
return 0;
}
7题
1、分析问题
a 、确定期望的输出。
要求有下列4个输出:
1)购买物品的总价袼。
2)购买物品的折扣总数。
3)购买物品的应付税额。
4)购买物品的应付款额。
b、确定输入数据。
用户要输入的数据如下:
1)购买某一件物品的单价。
2)购买物品的数量。
3)购买某一件物品的税率。
c、列出输入输出相关联的公式。
总值(总价格)=项数(数量)X每项价值(单价)
折扣后总值(折扣总数)=总值(总价格)-(折扣率X总值)应付税额=总值X税率(因不同情况而定)
应付款额=总值+应付税额
注意:计算是从总值开始的,然后是依次计算它们的值,计算顺序不能乱。
d、执行手工计算。
随意给一组数据用上面的公式进行计算。
如:令单价为10元、数量为100个、折扣率为20%、税率为6%。
有:总值=10*100元=1000元
折扣后总值=10*100元-20%*10*100元=800元
应付税额=1000*6%元=60元
应付款额=1000元+60元=1060元
2、选择一个全面的解决方案的算法
对于这个问题,算法为:
输入要输入的数据并显示
使用分析阶段提供的公式计算总值、折扣后总值、应付税额、应付款额并显示。
3、编写程序
程序如下所示,其中所选变量名称反映了他们的用途。
#include<stdio.h>
#define TAXRATE 0.06 /*假设税率为6%*/
int main()
{
float danJia,shuLiang,zheKou;
float zongZhi,zheZong;
float yingShui,yingKuan;
printf(“请输入单价:”);
scanf(“%f”,&danJia);
printf(“请输入数量:”);
scanf(“%f”,&shuLiang);
printf(“请输入折扣率:”);
scanf(“%f”,&zheKou);
zongZhi = shuLiang*danJia;
zheZong = zongZhi-(zheKou*zongZhi);
yingShui = zongZhi*TAXRATE;
yingKuan = zongZhi+yingShui;
printf(“总值:%f\n折扣后总值:%f\n应付税额:%f\n应付款额%f\n”,zongZhi,zheZong,yingShui,yingKuan);
return 0;
}
4、测试并调试程序
开发过程的最后一步是验证程序的操作。这个程序的输入输出如下(调试的结果)。
请输入单价:10.0
请输入数量:100.0
请输入折扣率:0.2
总值:1000.000000
折扣后总值:800.000000
应付税额:60.000000
应付款额1060.000000
Press any key to continue
由于所显示的值与前面手工计算的值一致,所以我们可以信任这个程序,能够将它用于确定希望得到购买某一件物品的相关计算中。
8题
1、分析问题
a、确定期望的输出。
根据题目要求只有个输出:皮特驱车穿过田野到达萨利的农场的最短距离s。
b、确定要输入的数据。
根据题目可知要输入的(已知的)数据有以下2项:
1)向东行驶的距离x。
2)向北行驶的距离y。
c、列出输入与输出相关联的公式。
距离= sqrt(x*x+y*y);
d、执行手工计算。
假设向东行驶的距离是3英里,向西行驶的距离是4英里。
则可由输入与输出相关联的公式计算出:
距离=sqrt(3*3+4*4)英里=5英里
2、选择一个全面解决方案的算法
对于这个实际问题的算法,如下:
输入并且显示要输入的数据
使用分析阶段的公式计算所要求解的距离。
3、编写程序
程序如下所示,其中用到了数学函数库(math.h)和对于已知值数据的四舍五入方法((int)(s+0.5)或(int)(s*10+5.0)*0.1将s四舍五入到最接近的整数,如果要四舍五入到十分位则应是(int)(s *10+0.5)*0.1,百分位(int)(s*100+5.0)*0.01)。
#include<stdio.h>
#include<math.h>
int main()
{
float x,y,s;
int s1;
continue语句执行过程printf(“请输入向东行驶的距离:”);
scanf(“%f”,&x);
printf(“请输入向北行驶的距离:”);
scanf(“%f”,&y);
s = sqrt(x*x+y*y);
s1 = (int)(s*10+5.0)*0.1;
printf(“皮特驱车穿过田野到达萨利的农场的最短距离为:%d\n”,s1);
return 0;
}
4、测试并调试程序
开发过程的最后一步是验证程序的操作。这个程序的输入输出如下(调试的结果)。
请输入向东行驶的距离:3.0
请输入向北行驶的距离:4.0
皮特驱车穿过田野到达萨利的农场的最短距离为:5
Press any key to continue
在调试中遇到的问题:当输入数据时,输出为0。后经过检查得出导致错误的原因是s被四舍五入后变成了一个整数,然而程序中s被定义为浮点型,所以s在被四舍五入后要重新定义一个整型数据变量s1.
9题
1、分析问题
a、确定期望的输出。
根据题目的要求要输出的6个数据如下:
1)第一次冲击的速度v1。
2)第二次冲击的速度v2。
3)第三次冲击的速度v3。
4)第一次冲击弹跳的回弹高度h1。
5)第二次冲击弹跳的回弹高度h2。
6)第三次冲击弹跳的回弹高度h3。
b、确定要输入的数据。
根据已知条件可以确定要输入的数据为:初始的高度height。
c、列出输入与输出相关联的公式。
v1=sqrt(2*g*height) h1=height*(2/3)
v2=sqrt(2*g*h1) h2=h1*(2/3)
v3=sqrt(2*g*h2) h3=h2*(2/3)
d、执行手工计算。
假设初始速度为2米,则有:
v1=sqrt(2*9.81*2)m/s=6.26418390534633m/s
v2=sqrt(2*9.81*2*(2/3))m/s=5.114684*********m/s
v3=sqrt(2*9.81*2*(4/9))m/s=4.17612260356422m/s
h1=2*(2/3)m=1.333333333333333m
h2=h1*(2/3)m=0.8888888888888889m
h3=h2*(2/3)m=0.5925925925925926m
2、选择一个全面解决方案的算法
对于这个题目的算法,如下:
输入并且显示要输入的数据
使用分析阶段的公式计算出所要输出的数据的值并显示(注意整除)。
3、编写程序

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。