zoukankan      html  css  js  c++  java
  • 对课程第二次作业的补充与反馈

    课程第二次作业的补充

    github地址:Github传送门

    前言

    往往在别人的身上,总有许多值得自己学习的地方。这句话一点没错,尤其当你看向那些优秀的同学时,你会发觉他们之于你之间,差距的不仅仅是写出的代码质量,还有对待平常每个事物的拓展、钻研能力等等,所以,你的不优秀是脱不开自己懒惰的干系。

    补充 1. 关于输入流的清空问题

    用户的输入错误有时候是在所难免的,所以如何处理这些错误,如何有效的引导用户正确的输入?我们就有必要去学习输入流的清空问题。以下就作出我自己的学习总结:

    当用户输入的数据类型无法和你设定的数据类型匹配时,常见的,在cin当中有这样一个检测错误的办法 —— cin.fail()。

    cin.fail()初置0,一旦输入不符合,其值置为1,说明此时发生非致命错误即ios::failbit,因上次输入的不符合数据依旧在输入缓冲区里,所以导致输入流无法正常工作,这也就导致以下的输出会传出不确定值。

    要想重新使得用户的输入流回归正常运转,我们有必要使得输入流的状态回到最初可执行的模样,所以cin.clear()就用于状态的恢复,去除内部的错误标识符,而要使得输入缓冲流真正的清空,就要依赖cin.sync()或cin.ignore()来清空一下原有的垃圾。

    这里还得说一下有必要使用

    cin.ignore(numeric_limits<streamsize>::max(), '
    '); 
    

    它能够实现对输入流整行的清空,把回车' '(包括回车)之前的所有字符从输入缓冲(流)中清除出去.

    其中一长串的

    numeric_limits<std::streamsize>::max()
    

    是函数,返回编译器允许的double型数的最大值。不过是climits头文件定义的流使用的最大值,我们其实也可以用一个足够大的整数来代替它。

    存在的一个小困惑

    这里要抛出一个我遇到的问题,查了很久但还是不知道出错在哪,也希望懂得人能够给我指点一番。在编写代码的过程中,我也试用了一下cin.sync(),但是在清空的过程中出现了死循环的情况,
    我让输出r的值,给出的结果竟让是-9.25596e+61,所以也希望有谁能够帮帮忙解答一下我遇到的困惑,附上我一直执行死循环的代码。

        cin >> r;
        while ( cin.fail() || r < 0 )
        {
            cout << endl;
            cout << "您的输入有误,请重新输入你所想要的半径值"<<endl;
            cin.clear();       //恢复原始状态
            cin.sync();
            // cout << r << endl;
            cout << "请输入您需要的圆半径 r =  ";
            cin >> r;
            cout << endl;
    	}
    

    错误的输出结果如下

    补充 2. 关于规范程序员应该做到几步注意

    1. cin、cout的放置应当置于main的主函数里,而不能放置在其他的cpp文件中;
    2. 在.h中对文件进行声明,在.cpp文件中对函数进行定义;
    3. " #define "等需放置在.h的头文件里;

    .h文件其实算是一个大纲的存在,可提供给他人直观的查看代码内部的整体构型,.cpp文件有时候并没有提供给他人的必要,而只需给他人.h与自我编译好的文件就可以。

    这些注意点算是对以后自己编写代码的一个警示,在这先声明一番。

    以上就是我对这次作业的总结与反馈,谢谢观赏!

    菜鸡小豪的程序员之路还在持续进行中......

  • 相关阅读:
    迭代器、生成器
    函数(函数基础、装饰器、递归、匿名函数)
    文件处理
    python对象、引用
    字符编码
    流程控制if、while、for
    编程与编程语言
    Java源码阅读(五)—— AbstractQueuedSynchronizer
    Java并发编程(二) —— volatile
    Java源码阅读(七)—— ReentrantReadWriteLock
  • 原文地址:https://www.cnblogs.com/S031602219/p/6784197.html
Copyright © 2011-2022 走看看