本次作业要求:【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/