第二次作业
【作业要求】:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2292
第三次作业:7-7 计算火车运行时间
1.实验代码
#include<stdio.h> int main() { int x,y; scanf("%d %d",&x,&y); int a,b; a = y / 100 - x / 100; b = y % 100 - x % 100; if(b>=0){ printf("%02d:%02d",a,b); } else{ a = a - 1; b = b + 60; printf("%02d:%02d",a,b); } return 0; }
2.设计思路
第一步:仔细阅读作业题目要求,输入格式及输出格式。观察输出样例及输入样例的数字间是否存在空格。
第二步:定义整型变量x(出发时间),y(到达时间),a(所用小时数),b(所用分钟数)。
第三步:利用a=y/100-x/100及b=y%100-x%100分别求出所用小时及所用分钟数。因为变量被定义为整型,符号/可以运用除法运算求出前两位小时,符号%可以运用求余运算求出后两位分钟。
第四步:判断后两位分钟数的两种情况,利用if-else语句分别求出不同情况下的结果。
第五步:输出结果。
流程图
3.本题调试过程碰到问题及解决办法
刚开始我的代码及调试是这样的,输出结果为3:29,小时的前面并没有补0。
通过同学的帮助与在网络上的查询,代码应输入为printf("%02d:%02d",a,b);其中%02d代表如果整数不够2列就补上0,如果大于2则没有影响。例如当结果为1时输出01,当结果为11时则正常输出11。
但这只是错误之一,我发现当出发时间的分钟数大于到达时间的分钟数,会变成如下情况。
当出发时间分钟数大于到达时间分钟数时,输出结果会出现负数。因此,需要运用if-else语句分别解释这两种不同情况。
情况一:出发时间分钟数小于到达到达时间分钟数。
情况二:出发时间分钟数大于到达时间分钟数
然后就输出了不同情况下的正确结果。
第四次作业:7-4 比较大小
1.实验代码
#include <stdio.h> #include <math.h> int main() { int a,b,c; scanf("%d %d %d",&a,&b,&c); if(a>b&&b>c){ printf("%d->%d->%d",c,b,a); } else if(a>c&&c>b){ printf("%d->%d->%d",b,c,a); } else if(b>a&&a>c){ printf("%d->%d->%d",c,a,b); } else if(b>c&&c>a){ printf("%d->%d->%d",a,c,b); } else if(c>a&&a>b){ printf("%d->%d->%d",b,a,c); } else{ printf("%d->%d->%d",a,b,c); } return 0; }
2.设计思路
第一步:仔细阅读作业题目要求,输入格式及输出格式。观察输出样例及输入样例的数字间是否存在空格。
第二步:定义整型变量a,b,c。利用if-else语句判断三个数字的大小,并从小到大依次输出。
第三步:按照输出格式输出结果。
流程图
3.本题调试过程碰到问题及解决办法
刚开始我的代码及调试是这样的,编译并没有出错,但是无法从小到大依次输出正确格式。
经过同学的帮助以及查阅资料书,我明白了错误出在(a>b>c)上。
正确形式应该是(a>b&&b>c),其它以此类推。
其中&&代表 与,意为同时都要满足。
更改后的代码及调试如下
这样就能输出正确的格式,同理,其它情况同样适用。
4.个人总结
(1)在本周的学习当中,我学习到了if-else语句,可以通过语句判断并计算多种不同情况。在学习中确实遇到了一些问题,比如没有仔细观察题目,没能理解其中的隐含条件。通过做题不仅巩固了if-else语句的知识,同时也掌握了新的知识:%02d的含义。通过 7-4 比较大小这道题,也学会了分类讨论的学习思想。
(2)本周的学习内容中感觉if-else语句和else-if语句比较难,经常混淆它们的概念。对此,通过上网查询资料以及与同学的交流,明白了这周的学习内容,并学习到了新的知识。
作业点评:http://www.cnblogs.com/zst1/p/9912320.html