第二次作业

作业要求:【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\n",c);
}    
else if(50<=c){
    printf("Exceed %.0lf%%. License Revoked\n",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

www.cnblogs.com/wu1263344154/p/9915201.html

http://www.cnblogs.com/wangxiangbo/p/9903569.html

 

posted on 2018-11-06 18:40  1班~吴迪  阅读(172)  评论(8编辑  收藏  举报