作业要求:【https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2293】
第四次作业:题目7-2高数公路的处罚:
1.代码:
#include<stdio.h> int main() { double a,b,c; scanf("%lf %lf",&a,&b); c = (a - b) / b * 100; if(c<10){ printf("OK"); } else if(10<=c&&c<50){ printf("Exceed %.0lf%%. Ticket 200 ",c); } else if(50<=c){ printf("Exceed %.0lf%%. License Revoked ",c); } return 0; }
2.解题思路:
(1).先定义三个整形变量a,b,c。
(2).输入整型变量a,b。其中a代表车速,b代表限速。
(3).求出车速超出限速的百分比,我们让c等于这个百分比的一百倍。
(4).因为本题有三种情况, 所以运用if-else if的运算方式进行运算。
(5).进入if的判断。如果车速超出限速的百分比小于10%,则输出OK。
(6).如果车速超出限速的百分比达到10%和50%之间(包括10%),则输出“Exceed %.0lf%%. Ticket 200”,其中%.0lf%%表示车速超出限速的百分比,%.0lf指取整无小数,后面的两个%%表示输出时的%。
(7). 如果车速超出限速的百分比达到50%以上(包括50%),则输出"Exceed %.0lf%%. License Revoked",其中%.0lf%%表示车速超出限速的百分比,%.0lf指取整无小数,后面的两个%%表示输出时的%。
3.流程图:
4.调试过程:
(1).
(2).
(3).
5.本题遇到的问题和解决方法:
(1).我在做这道题时遇到的第一个问题就是无法输出%。
如图我第一次只在代码里面打了一了百分号,然后正常编译运行以后(如图):
并没有在输出值中显示出百分号,这个问题困扰了我很久,我进行了多次改动,但结果是一样的并没有显示出百分号。然后我问了我的室友,我的室友表示也在被这个问题困扰着。于是我就百度了一下结果如图:
百度出来的结果告诉我只要在代码里打两个百分号即可,我就去改了下(如图):
然后再编译运行一下看一下结果(如图):
输出的结果如愿得到了我们想要的。从这道题中我学到了:如果想在程序中输出百分号,就必须在代码里打两个百分号,是一个不错的收获。
6.个人总结:
我认为本次作业量虽然大而且题目也不是很简单,但我学到了许多的东西,比如上面提到的百分号的问题,虽说与同学的探讨无果,但在探讨中得到了许多。而且也学到了这个方法,以后遇到这种问题就可以迎刃而解了。然后在做着道题的时候,刚开始读题也出现了问题,卡住了许久,然后一筹莫展的时候我选择重新读题,在真正了解了题意以后,这道题就简单了许多。这也暴露出了我的问题,说实话在做pta上的题时,我确实每次都不仔细读题,而导致不理解题意,而耽误时间。我从这次以后一定会改正自己的错误,继续努力。
第三次作业:7-7 计算火车运行时间:
1.代码:
#include<stdio.h> int main() { int a,b,h1,h2,m1,m2,h,m; scanf("%d %d", &a, &b); h1=a / 100; h2=b / 100; m1=a % 100; m2=b % 100; if(m1 <= m2){ h = h2 - h1, m = m2 - m1;} else { h = h2 - h1 - 1, m = m2 - m1 + 60;} printf("%02d:%02d", h, m); return 0; }
2.解题思路:
(1).定义整型变量a,b,h1,h2,m1,m2,h,m。
(2).输入a,b。其中a代表火车的出发时间,b代表火车的到达时间。
(3).运用h1=a / 100求出h1的值。h1代表的是火车出发的小时数。
运用h2=b / 100求出h2的值。h2代表的是火车到达的小时数。
运用m1=a % 100求出m1的值。m1代表的是火车出发的分钟数。
运用m2=b % 100求出m2的值。m2代表的是火车到达的分钟数。
(4).因为有一个关于火车运行时间可能为正负的情况,并且需要向小时借位的情况,所以此处需判断。如果m2大于等于m1即表示到达的分钟数大于出发的分钟数,则运用h = h2 - h1, m = m2 - m1求出h和m的值,h的值表示火车运行的小时数,m的值表示火车运行的分钟数。
(5).如果m2小于m1即表示到达的分钟数小于出发的分钟数,这个时候要考虑借位的问题,所以运用h = h2 - h1 - 1, m = m2 - m1 + 60求出h和m的值,解释一下这里(因为m2小于m1,所以求出来的分钟已经小于零,就需要把小时数减一,再把分钟数加六十,就达到了借位的要求),h的值表示火车运行的小时数,m的值表示火车运行的分钟数。
(6).输出小时数和分钟数,题目要求的输出格式为hh:mm,所以需要打出"%02d:%02d"这种形式%d中间的02表示输出两位然后不足的用0代替。
3.流程图:
4.调试过程(以出发时间为12:01,到达时间为15:30为例):
(1).
(2).
(3.)
5.本题遇到的问题和解决方法:
我在做这道题时遇到的问题是借位的问题,我感觉这个才是这道题最关键的内容,也是这道题想考的内容。我刚开始忽略了这个问题,并没有想到借位的问题,结果一定是不对的。然后我就在想这个地方如何处理,我发现这个需要考虑分钟数的正负,所以这个地方需要进行分类讨论。如果火车运行时间的分钟数是负数,则需要在分钟数上加60,再在小时数上减去1,这样就达到了借位的效果。
6.个人总结:
在这周的学习当中我发现了其实程序题大多数都与数学题有关,所以我认为学好数学是学程序的基础。在学好C的同时也要加强数学基础。然后也要改掉一些小毛病,比如:总是忘记打分号,不读清题意,忘记在定义时分清整点型和浮点型....这些都是可以避免的错误,所以我一定要努力克服这些不必要的小毛病,提高自己的能力,加快做题的时间。
统计图表:
我的评论:
http://www.cnblogs.com/powerZZ/p/9912145.html