第二次作业

作业要求: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

posted @ 2018-11-05 20:50  s_silence  阅读(2268)  评论(10编辑  收藏  举报