• 第二次作业


    作业要求:https://edu.cnblogs.com/campus/hljkj/CS201802/homework/2292

    PTA第3次作业(条件)7-7 计算火车运行时间 (15 分)

    本题要求根据火车的出发时间和达到时间,编写程序计算整个旅途所用的时间。输入格式:输入在一行中给出2个4位正整数,其间以空格分隔,分别表示火车的出发时间和到达时间。每个时间的格式为2位小时数(00-23)和2位分钟数(00-59),假设出发和到达在同一天内。

    输出格式:在一行输出该旅途所用的时间,格式为“hh:mm”,其中hh为2位小时数、mm为2位分钟数。

    输入样例:1201 1530

    输出样例:03:29

    一.实验代码

    #include<stdio.h>
    int main()
    {
      int a,b,c,d;
      scanf("%d %d",&a,&b);
      c=b/100-a/100;
      d=b%100-a%100;
      if(d<0){d=60+d;
      c=c-1;
      }
      printf("%02d:%02d",c,d);
      return 0;
    }

    二.解题思路:

    1.步骤

    1).先输入四个整数变量a,b,c,d,因为需要输入数据所以用scanf()将输入的部分的代码打出来。

    #include<stdio.h>
    int main()
    {
      int a,b,c,d;
      scanf("%d %d",&a,&b);
    View Code

    2).计算输入了两个四位数,小时和分钟连在一起所以需要先缩小100倍,这样小时在小数点前分钟在后,到达减去出发就是经过的时间,所以c算出的就是小时。

      c=b/100-a/100;
    View Code

    3).分钟d则需要用%来取余得出。

      d=b%100-a%100;
    View Code

    4).分钟有时会得出来负数,所以需要加上条件,来确保正确的输出,在分钟上加60,小时则减去1。

      if(d<0){d=60+d;
      c=c-1;
      }
    View Code

    5).最后是输出的格式要按照题目来写代码。

     printf("%02d:%02d",c,d);
      return 0;
    }
    View Code

    运行后的结果:

     2.流程图

    三.调试过程碰到的问题及解决办法

    最开始的时候犯了个低级的错误一个是用scanf函数没有在变量前面加“&”,提交的时候出现了错误。

    另外就是只考虑到了,用缩小后100倍后的表示到达时间的数减去出发时间的数先求出小时,再用取余求分钟,但是在格式输入正确的情况下运行不出来,然后我想到了借位,用if语句,加了一个限定的条件最后可以运行处正确结果

    然后又进行了调试

    PTA第4次作业(条件)7-2 高速公路超速处罚 (15 分)

    按照规定,在高速公路上行使的机动车,达到或超出本车道限速的10%则处200元罚款;若达到或超出50%,就要吊销驾驶证。请编写程序根据车速和限速自动判别对该机动车的处理。

    输入格式:输入在一行中给出2个正整数,分别对应车速和限速,其间以空格分隔。

    输出格式:在一行中输出处理意见:若属于正常行驶,则输出“OK”;若应处罚款,则输出“Exceed x%. Ticket 200”;若应吊销驾驶证,则输出“Exceed x%. License Revoked”。其中x是超速的百分比,精确到整数。

    输入样例1:65 60输出样例1:OK

    输入样例2:110 100输出样例2:Exceed 10%. Ticket 200

    输入样例3:200 120输出样例3:Exceed 67%. License Revoked

    一.实验代码

    #include<stdio.h>
    #include<math.h>
    int main()
    {
      int speed,limspeed,a;
      scanf("%d %d",&speed,&limspeed);
      a=100.0*(speed-limspeed)/limspeed+0.50;
      if (a<10){
        printf("OK");
      }
      else if(10<=a&&a<50){
        printf("Exceed %d%%. Ticket 200",a);
      }
      else if(a>=50){
        printf("Exceed %d%%. License Revoked",a);
      }
        return 0;
    }

     二.解题思路

    1.步骤

    1).先定义变量(都是整型变量)speed,limspeed,a分别为车速,限速和百分比的整数部分。

    #include<stdio.h>
    #include<math.h>
    int main()
    {
      int speed,limspeed,a;
    View Code

    2).调用scanf函数输入speed和limspeed。

      scanf("%d %d",&speed,&limspeed);
    View Code

     3).根据题目的意思写出计算的式子。

      a=100.0*(speed-limspeed)/limspeed+0.50;
    View Code

     4).根据题意调用if,else if来输出三种情况的结果,但要注意给出的输出格式。

      if (a<10){
        printf("OK");
      }
      else if(10<=a&&a<50){
        printf("Exceed %d%%. Ticket 200",a);
      }
      else if(a>=50){
        printf("Exceed %d%%. License Revoked",a);
      }
        return 0;
    }
    View Code

     三种情况的输出结果:

    2.流程图

     三.调试过程碰到的问题及解决办法

     最开始还是犯了和上一个题一样的问题,就是scanf函数和if else用来表示并且的“&”没有写。导致无法运行出结果。

    另外一个问题是输出a在第三步的条件下输出的是66,后来想到了应该是取整时的问题,然后加上0.50输出结果就为67了。

    最后一个问题是不知道怎么才能让输出的结果里有%,查了一下之后才知道需要以这种形式写才会有“%d%%”。

    然后进行了调试

    speed=200,limspeed=100

     speed=110,limspeed=100

     

    speed=65,limspeed=60

     

    个人总结

    1.通过本周的学习我学会了if else语句的用法, 知道了借位,还有如何四舍五入的取整。

    2.在学习时也遇到了忘记打“&”的情况,还有一些不会的东西,比如输出时如何含有“%”,在遇到不会的东西时,问了别人,也在网上查找了有关的的东西,最后弄懂了。

     作业点评:

    1.http://www.cnblogs.com/chumengGTRlhz/p/9885207.html

    2.http://www.cnblogs.com/0224ming/p/9859207.html

    3.http://www.cnblogs.com/xiaofengqaq/p/9845665.html

  • 相关阅读:
    Static Linking versus Dynamic Linking
    C keywords are overloaded with serveral meanings
    深圳立体地图查查吧http://sz.chachaba.com/api.html
    What's a Declaration? What's a Definition?
    jQuery Template and Data Linking
    XPath
    singleton及多线程验证,所有线程完成才继续运行WaitHandle
    jquery文本框只输入数字插件
    UVA 993 Product of digits
    HDU 1879 继续畅通工程
  • 原文地址:https://www.cnblogs.com/freedomjdp/p/9845635.html
Copyright © 2020-2023  润新知