计算火车运行时间 c语言编程,第4次作业(条件)比较大小。第3次作业(条件)计算火车运行时间。...

作业要求(请点击!!) 题目7-4 比较大小 1.实验代码

#include

int main()

{

int a,b,c,t;

scanf("%d %d %d",&a,&b,&c);

if(a>b){

t=a;

a=b;

b=t;

}

if(a>c){

t=a;

a=c;

c=t;

}

if(b>c){

t=b;

b=c;

c=t;

}

printf("%d->%d->%d",a,b,c);

return 0;

}

2.设计思路 第一步:通过if条件,将a变成输入的三个数中最大的那一个,b为第二大,c为最小。 第二步:首先用if语句设定比较a与b、a与c的大小。 第三步:将a通过赋值方法变成题目要求的最小值,即a=2. 注:赋值法需要一个变量存储a的值,所以这里引入了来做存储a的变量。然后经过一个循环等于,即t=a,a=b,b=t,将a的值变为三者最小。 流程图:

d9ff31415a512b1dd1ad3718ae5d3142.png

3.本题调试过程碰到问题及解决办法

刚开始看到比较大小时的第一个想法是:C语言里应该有两个“函数”,一个来表示取这组数据中的最大值(Max),一个来表示去这组数据中的最小值(min)。但是经过查找资料,耗费了很长时间,到最后依然没有找到心中想象的那个“函数”,所以就想到一个一个的可能都写出来,毕竟只有三个输入的数据,各种可能加在一起也可以数的过来,但是在程序输到一半的时候我放弃了,因为感觉这样输入的代码太过繁琐,并且没有实际的作用,潜意识的认为这种情况就算是写对了,也没有达到这道题目想要自己学习的“点”,因此我放弃了一种一种可能全输上去的方法,开始寻找第三种,也就是If 赋值法,最开始我将题目完整的复制到百度搜索,看到了if条件赋值的方法,最开始我是不理解这种方法的实际应用的,因此我将网上找到的源代码完整的复制到了我的电脑中的“dev c++”中,自己进行编译输入了一些数据,并用口算跟着代码的编写去进行了一次计算,懂得了if赋值方法的应用,因此开始自己尝试编写代码来验证自己对代码的认识。刚开始的输入因为不理解"->"符号的意思而频繁出错。

d780b0a52e3d7dd11e45d4c376b86956.png事实证明不动脑思考动动手指问别人是不可靠而且没有用处的,经过仔细的查看题目,我发现了"2->4->8"的字样,因此知道了"->"不是自己认知上的">"而是"

6d1b53eb8fa634e602890d5d787db47f.png 因此我开始调试程序。

a9aa01c30e99faa7f5ad3e7b0cf50d36.png

发现a和b先互换,b和c再互换,这时由于a和b无法再次比较,所以不能进行互换了,如图

13036101f1c8318f4bdc412170280834.png

所以应该对a与b、a与c先进行比较,才能使程序正确运行。

对于之前提到的循环等于:初次使用我认为这是一个“循环”,即是循环等于,毫无疑问这种想法是错误的,它不会一次又一次的循环而是仅仅只执行一步。

下面是第三次作业。

题目7-7 计算火车运行时间 1.实验代码

#include

#include

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;

}

2.设计思路 第一步:通过同学的帮助,认识了“/100”与“%100”分别是取余和取整。 第二步:通过减法和取余取整算出了时间差。 第三步:当分钟出现负数时需要向小时数借一位。既是if语句。 流程图:

91b445b5c94ad359a05d6110df0f8af8.png

3.本题调试过程碰到问题及解决办法 起初看到这个题,我并没有想到取余取整的方法,而是想到了上一次的作业中int断点取整。当时的代码由于时间问题已经找不到了,只能找到一张没有完善代码的截图,截图如下。

3cb2d0491154d08d8c3d382e99c63c37.png

当时还写了if语句使它为负数时可以向小时借位,如果分钟位大于60,也向小时位进位,计算和结果都没有错误,但是提交一直不通过显示格式错误,所以现在也不知道这段代码的正确性,这是我没有想到取余取整时所能想到全部了,所以花了很长时间去完善它,但是结果依然不尽人意,因此我向同学询问了这个的做题方法,得到了取余取整的方法,接着因为忽略的进位和借位,导致了错误,通过调试,发现了错误并进行了改正。

ffbeae5c3a9f7c918e8dd05d45def193.png 最后顺利完成了此次作业。

总结 本周所得 1.学习了if语句,else if语句 ,程序运行的方法,调试的方法,取余,取整,分段函数的表示方法,double\float的用法和保留小数位数的方法,以及char的使用。

遇到的问题 1.if语句连续使用和if与else if使用不一样,一开始对这两个函数混淆,导致程序出错。 2.调试必须使用断点,会在断点区间内进行否则不会开始。 3.float不是只能取小数点后一位,作为单精度浮点数有效数位为七位,而双精度浮点数double是十六位。

解决问题的方法 1.百度 百度查找后自己进行计算解读,特殊的运算符不懂问同学或者继续百度。 2.问同学. 面对面问会的同学会比查找百度更加容易理解和深刻, 4.问学生群. 但大多数情况下没有用,网络的便捷性导致了获得知识真假性难以辨别。 3.问老师. 不到万不得已我一般不会选择问老师,老师自身的繁忙导致了不能快速的回答问的问题,一般问题都可以通过前两种方法快速解决。

学习情况

edc8284d587066f771645a63bcbeebdf.png折线图:

f95366474f6f8f0d3edd53d0dff7c51e.png

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值