作业要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2292
第三次作业 7-7 计算火车运行时间
1.实验代码
1 #include <stdio.h> 2 int main(){ 3 int x,y,h,m; 4 scanf("%d %d",&x,&y); 5 h=y/100-x/100; 6 m=y%100-x%100; 7 if (m<0){ 8 h=h-1;m=m+60; 9 } 10 else { 11 h=h;m=m; 12 } 13 printf("%02d:%02d",h,m); 14 return 0; 15 }
2.设计思路
第一步:先通读一下题,了解题的大概意思。然后再仔细的阅读题目的具体要求。
第二步:注意细节,其中题目要求输入2个4位正整数,而且其中间要用空格隔开,通过读题了解到,这个程序需要使用if else语句来解决。
第三步:整理自己的思路,需要将结果分成两部分,一部分小时,一部分分钟,先设出两个四位数a,b结果的两部分分别设为h,m。想要分成两部分就需要/和%两个除法取整和取余来解决。
流程图
3. 本题了事的过程及解决方法
在刚刚看到这道题的时候,我认为很简单,只需要将输入的两个数相减就可以了,但仔细思考后,发现这是不对的,因为单纯地相减并不能得到想要的答案,小时和分钟是两个部分,需要分开来算,之后再同学的指点下,了解到需要用%和/两种除法来计算,将两个四位数字通过取整和取余区分开,分别来计算,同时也要考虑到小时和分钟的进位情况。如果当分钟相减为负数时,就说明不满足一小时,所以就需要在h上减去1,同时在分钟m上加60。
同事在输出过程中也遇到了问题,在要求下,输出时需要四位数,格式是hh:mm,第一次我的输出是这样的 printf("%d:%d",h,m);结果就是这样
只有三位数字,过来通过网上查询,找到了问题所在,这中间存在借位的情况所以在输出的时候应这样打printf("%02d:%02d",h,m);。在%与d之间加上02,02的意思是借两位,同事空位用0来代替。
调试过程
第四次作业 7-3 出租车计价
1.实验代码
#include <stdio.h> #include <math.h> int main (){ float x,y; int z,a; scanf("%f %f",&x,&y); a=y*2/5; if(y<5&&x<3){ z=10;} else if(y>=5&&x<=3){ z=y*2.0/5.0+10;} if(y<5&&x>3&&x<=10){ z=(x-3)*2.0+10;} else if (y>=5&&x>3&&x<=10){ z=10+y*2.0/5.0+(x-3.0)*2.0;} if (y>=5&&x>10){ z=a+24+(x-10)*3.0;} else if (y<5&&x>10){ z=24+(x-10)*3.0;} printf("%d",z); return 0; }
2.解题思路
第一步:读题,了解到这道题的主要大意是要计算车费,不同的路程区间,有不同的收费标准,同事还有额外的停车时间另计费。
第二步:这道题需要用到if条件语句,else if语句更为简单。
第三步:捋顺题目,区间一共有3个,一开始我认为是两部分,超过初始部分每公里2元和超过10公里部分3元每公里。其实不然,1到3是起步费10元,3到10是每公里2元,10到13一直往后是3元每公里,还要看乘客是否要求停车,时间是否超过5分钟,或超过多少个5分钟。计算有多少个5分钟可以通过/,通过取整的方法知道有多少个5分钟,余数相当于不满的5分钟就舍去了。
流程图
3.调试过程及问题
调试的过程没有什么问题
4.个人总结
1.在本周的学习过程中,我遇到过一些问题,在写程序的时候有一些点一直都不会,在一个问题上能纠结上好长时间,在这周我学会了if else条件语句还有else if,通过做题知道了借位的方法,在比较大小的那道题中,我也学会了一种新的思维方式,解题思路。
2.在本周的学习过程中,我在一开始if else和else if的使用上不是很熟悉,else对应哪个if还找不准,通过上网自己查找资料,询问同学,和室友一起讨论,让我能快速的理解学习的内容,消化掉上课时的内容,以及不太懂得部分。
第一周 | 第二周 | 第三周 | |
博客园字数 | 1200 | 0 | 1000 |
代码数 | 100 | 150 | 300 |
作业点评
https://www.cnblogs.com/xiaofengqaq/p/9845665.html