第4次作业(条件)比较大小。第3次作业(条件)计算火车运行时间。

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

#include <stdio.h>
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;
}

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

<font size=3 face=“微软雅黑">流程图:

<font size=4 face=”微软雅黑">3.本题调试过程碰到问题及解决办法

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

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

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

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

下面是第三次作业。

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

#include <stdio.h>
#include <math.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;
}

<font size=4 face=“微软雅黑">2.设计思路
第一步:通过同学的帮助,认识了“/100”与“%100”分别是取余和取整。
第二步:通过减法和取余取整算出了时间差。
第三步:当分钟出现负数时需要向小时数借一位。既是if语句。

<font size=3 face=“微软雅黑">流程图:

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

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

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

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

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

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

学习情况

折线图:

评价:李浩正
范纯铭
王炬皓

posted @ 2018-10-24 19:42  十魇  阅读(611)  评论(10编辑  收藏  举报
GenerateContentList