作业要求:https://edu.cnblogs.com/campus/hljkj/CS201801/homework/2293
第三次作业:计算火车运行时间
#include<stdio.h>
int main(void)
{
int x=0,y=0,h=0,m=0;
scanf("%d %d",&x,&y);
h=y/100-x/100;
m=y%100-x%100;
if(m>=0){
printf("%02d:%02d",h,m);
}
else{
h=h-1;
m=m+60;
printf("%02d:%02d",h,m);
}
return 0;
}
解题思路:
1.定义4个变量x,y,h,m;
2.获取用户输入,x,y都是四位数;
3.计算h=y/100-x/100,m=y%100-x%100,h为小时数,m为分钟数,由于h被定义成整型,所以用除法运算可以计算前两位小时数,取余运算可以得到后两位分钟位;
4.判断m是否>=0,若结果为‘是’则运行if语句块中的语句,否则运行else中的语句;
5.输出结果。
流程图:
运行结果:
一开始我的代码是这样的,通过计算我发现3前面无法补0,因此在printf语句中人为补上了0;
最开始我没有考虑分钟借位问题,后来在跟同学交流的过程中我改了我的初始代码,并进行借位的单步调试。
在获取用户输入后计算机计算了h和m的值,并储存在物理内存中等待调用,并在判断m后直接跳转到了符合条件的else语句块。
然后输出了正确的结果
第4次作业:高速公路超速处罚
1.实验代码:
#include<stdio.h>
int main(void)
{
double exceed_rate,velocity,velocity_limit;
scanf("%lf %lf",&velocity,&velocity_limit);
exceed_rate=(velocity-velocity_limit)*100/velocity_limit;
if(exceed_rate<=10){
printf("OK");
}
else if(exceed_rate>=10&&exceed_rate<50){
printf("Exceed %.0f%%. Ticket 200",exceed_rate);
}
else if(exceed_rate>=50){
printf("Exceed %.0f%%. License Revoked",exceed_rate);
}
return 0;
}
2.解题思路:
1.定义变量velocity,velocity_limit;
2.获取用户输入;
3.计算超速比率exceed_rate;
4.用if——else语句判断exceed_rate是否满足相应的条件,进入否个语句块;
5.执行语句块内容并输出。
流程图:
我的初始代码是这样的,在pta上运行时报了错。
通过理解代码我发现,满足3条件的语句同时会满足条件2语句,而语句2总是在语句3的前面,因此要用&&或进行约束,通过调整代码我进行了单步调试。
类似还可以改变velocity和velocity_limit的数值来执行if——else语句中的其他语句。
本周总结:这两周主要学习了条件语句以及条件语句中的一些思维方法,以及定义条件时的一些技巧。在实际做题的过程中,提高了
对题目和代码的理解能力,收获了一些书本上没有的内容,比如在printf语句中输出%,以及用0补位。老师还在课堂上讲解
了switch-case语句,加上在晚自习的练习,我修正了一些原本代码的误区,如switch判断数值时case 后加的是相应数值
而字符型时则要加‘ ’。
问题和难点:在理解题意过程中出现了一些偏差导致程序运行不对,有一些输出格式在书本上还没有看到,因此要上网查询。有些语句需要反复练习才能真正掌握。
表格:
博客字数、代码行数统计:
作业点评:http://www.cnblogs.com/asdwadsxc/p/9892297.html
http://www.cnblogs.com/zcybky/p/9853307.html
http://www.cnblogs.com/abcefg123/p/9898650.html