本次作业要求:【https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2292

第三次作业-------- 分段计算居民水费 

为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x-17.5。请编写程序实现水费的计算。

代码:

#include <stdio.h>
int main(void)
{
  double x,y;
  scanf("%lf",&x);
  if(x<=15){
    y=4*x/3;
  }
  else{
    y=2.5*x-17.5;
  }
  printf("%.2f\n",y);
  return 0;
}

 解题思路

a、定义两个变量x和y;

b、由题意可知x有两种情况,即x<=15和x>15,因此需要用if条件语句;

c、把x的两种情况分别放入if语句和else语句中;

d、输出的y要精确到小数点后两位,因此printf中要用%.2f;

 流程图

调试过程及结果

 

 因为这道题中x只分为两种情况,所以只需要简单运用if-else语句,因此未出现调试错误。

 运行及结果

 

 

 当分别输入x>15和x<=15两种情况时,程序运行的结果都符合。

 

第四次作业-----------出租车计价 

本题要求根据某城市普通出租车收费标准编写程序进行车费计算。具体标准如下:

  • 起步里程为3公里,起步费10元;
  • 超起步里程后10公里内,每公里2元;
  • 超过10公里以上的部分加收50%的回空补贴费,即每公里3元;
  • 营运过程中,因路阻及乘客要求临时停车的,按每5分钟2元计收(不足5分钟则不收费)。

代码:

#include<stdio.h>
int main()
{
  int minute;
  double z,a,b,km;
  scanf("%lf %d",&km,&minute);
  if(km<=3){
    a=10;
  }
  else if(km<=10){
    a=10+(km-3)*2.0;
  }
  else{
    a = 10 + (10 - 3)*2.0 + (km - 10)*3.0;
  }
  b=minute/5*2;
  z=a+b;
  printf("%.0f\n",z);
  return 0;
}

解题思路

a、定义5个变量,(整型变量)minute和(浮点型变量)z、a、b、km;

b、分析题意可知,变量km需分为3种情况讨论;

c、先用if-else加else if语句把3种情况下的行驶里程km与里程费用a的关系进行讨论并根据题意得出两者的关系式;

d、再根据时间与所需费用的关系计算出停车费用b;

e、输出总费用z=a+b;

流程图

 

 调试过程及错误

错误1: 在编译过程中未发现错误,但是当自己分别输入3种不同情况的km进行调试时却发现运行的结果不对,与自己所想的不一样,输入"10 5"本来应该进入else if语句中即不超过10公里的情况,但实际调试时却进入了else语句中即10公里以上的情况,经过反复查看题目和所写代码之后才发现自己写代码时写的太粗心,写"km<=10"时漏写了"="导致了提交和调试时的不正确。

错误2:这次调试中还发现的一个错误就是四舍五入的问题,一开始对于题目中结果四舍五入保留整数只认为是输出"%d",调试时发现这是错误的,经过在网上查阅资料我才知道应该是输出"%.0f"。

 正确调试如下所示:

 

 

运行过程:

 

个人总结和学习进度

       经过这几次pta作业,我发现自己还存在很多不足,首先是做题时不注重细节,很粗心,例如空格,标点符号等容易漏掉,导致提交显示格式错误;

其次是对于if语句运用还不熟练,做题时速度较慢,但在以后的学习中我会更加努力来弥补自己的这些不足之处,平时多练习写代码,做题时更加仔细,

争取把计算机这门专业学好!

 

 已点评的同学链接:

http://home.cnblogs.com/u/abcdsjjs/

 http://home.cnblogs.com/u/1006cy/

http://home.cnblogs.com/u/chumengGTRlhz/