• github链接

  • 作业链接

编写一个程序,要求根据给定的圆的半径求圆的面积,并将求得的结果打印出来。……建立一个工程,将程序写成两个.cpp和一个.h的形式。

这个问题倒是没什么难的,但对于同学们来说是一个上手模块化的好开端。从现在开始,不是只为了AC而写代码,而是要写“有质量的代码”、“让别人看得懂的代码”。在我看来,每行每业都有前人总结的“经验”。那“高内聚低耦合”、“模块化”,这两条就是编程中很重要的两条道理。第一个是问题的粒度,如果问题的规模很大,就应该将其分模块,然后逐个攻破。这样子做代码结构、脉络清晰,使得思路容易分析,然后方便debug、合作编程和迭代。电脑还是挺死板的,你怎么打代码它就按照你的代码做。但如果你只是为了AC写代码,写出来的代码杂乱、命名不规范、格式乱套、没有分模块……让别人想看的欲望都没有,那你就不适应合作编程的要求。巨大的工程很难由一个人单独完成,刷boss也得组几个队友对不对?

我之前的计算器作业中是有分多个文件的。但我在一个 .h 头文件中同时包括了函数声明和定义。这次的作业让我学到了一个只将声明放在 .h 中,而定义全放到新的 .cpp 文件中去。这样子做,如果别人想看你的代码能做到什么功能,只需看 .h 中的所有函数声明即可。

cin输入检测

基于栋哥上课提出的问题:

int a, b;
cin >> a >> b;
cout<< a + b;/* 输入 3a5输出 3 (a = 3,b = 0) */

下面节选自 人民邮电出版社《C++ Primer Plus》 第六版 第755页内容:

不同版本抽取运算符查看输入流的方式是相同的。跳过空白(空格、换行、制表符),直到遇到非空白字符。…… >> 运算符将读取一个指定类型的数据。

在上面这个例子中,输入 3a5 那么 3 赋值给了变量a,输入中的字符a会留在输入流中等待下一条 cin 语句。输入时没有满足程序期望的情况,例如上面的变量b,这种情况下,将不会改变变量b的值(因此,如果b有初始化的话,那么b会保持初始化的值)。cin中有一些状态,会设置为false。这个false的返回值可以让ifwhile语句来判定输入是否满足要求。

C++ 的一个与 C 最大的区别就在于类。C语言中用 %dscanf 的返回值这样的东西来检测输入。而 C++ 将其封装成各种成员函数。详细可以看看这两篇博客:

  • cin.fail() 示例代码简洁易懂。

  • cin.get,cin.clear以及cin.sync 这篇比较详细。

Something else

这个例子(输入3a5)让我想到了我之前的程序。我之前是写了挺多的输入检测方面的函数,比方说输入题目数量时可以检测出输入字符串并报错然后提示用户重新输入一遍。然后我猛地一想到好像类似于 3a5 的我没办法检测出来。

如图所示,在输入题目数量时,输入3a5。程序会认为用户输入的题目数量为3,然后a5留在缓冲区中等待下一条输入,并被检测答案输入的有效性的函数给挡住,并输出错误提示。

这是我之前的检测代码:

    while (scanf_s("%d", &input) != 1)//输入的不是%d{while ((ch = getchar()) != '\n')putchar(ch);//如果用户输入了字符串,就显示这个字符串,并且在显示“不符合要求”}

在这段之后再加上这一条

    while((ch = getchar()) != '\n' && ch != EOF);//清空缓存区

转载于:https://www.cnblogs.com/ZCplayground/p/6774555.html

《面向对象程序设计》课程作业二相关推荐

  1. java 正确的表达式_JAVA程序设计课程作业,二、多选题1.指出正确的表达式A.double a=1.0B.Double a=new Dou...

    JAVA程序设计课程作业,二.多选题1.指出正确的表达式A.double a=1.0B.Double a=new Dou JAVA程序设计课程作业, 二.多选题 1.指出正确的表达式 A.double ...

  2. C#面向对象程序设计课程实验二: 实验名称:Windows 窗体程序

    C#面向对象程序设计课程实验二: 实验名称:Windows 窗体程序 实验内容:Windows 窗体程序 一.实验目的及要求 二.实验环境 三.实验内容与步骤 一.设计简单的计算器 3.1.实验内容 ...

  3. 2017福州大学面向对象程序设计课程作业八

    作业链接 课程第七次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...

  4. 2017福州大学面向对象程序设计课程作业七

    作业链接 课程第七次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...

  5. 2017福州大学面向对象程序设计课程作业六

    作业链接 课程第六次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...

  6. 2017福州大学面向对象程序设计课程作业五

    作业链接 课程第五次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...

  7. 2017福州大学面向对象程序设计课程作业四

    作业链接 课程第四次作业统计完成,本次作业满分100分,统计结果如下: 学号 姓名 作业地址 分数 111500206 赵畅 http://www.cnblogs.com/ZCplayground/p ...

  8. 兰州大学C语言程序设计课程作业,【兰州大学|兰州大学C语言程序设计课程作业( 五 )】语言程序设计|课程|作业-傻大方...

    『易坊知识库摘要_兰州大学|兰州大学C语言程序设计课程作业( 五 )』34.用户未作答标准答案exp04. 以下叙述中正确的是 在程序的一行上可以出现多个有效的预处理命令行使用带参的宏时,参数的类型应 ...

  9. 兰州大学C语言程序设计课程作业,兰州大学C语言程序设计课程作业1附答案.doc...

    兰州大学C语言程序设计课程作业1附答案.doc C 语言程序设计课程作业语言程序设计课程作业_A 历次成绩 完成时间 查看详情 1.0.0 2015-11-21 091531 2.0.0 2015-1 ...

  10. 面向对象程序设计课程进度条

    面向对象程序设计课程进度条 周次 (阅读/编写)代码行数 发布微博量/博客评论数量 课堂/课余学习时间(小时) 最满意的编程任务 第一周 42/25 1/0 4/3 乘法表实验 第二周 150/100 ...

最新文章

  1. 第五章 常用Lua开发库2-JSON库、编码转换、字符串处理
  2. ASP.Net Core Razor 部署AdminLTE框架
  3. .NET Core 3.0 linux 部署小贴士
  4. 教材订购模块java代码实现_java教材征订系统
  5. java接口的叙述正确的_下列关于接口的描述中,正确的是:
  6. RESTful Web Services in Spring 3(上)转载
  7. 房屋建筑结构安全自动在线监测系统解决方案
  8. font-style字体设置
  9. Proxifier全局代理软件,其提供了跨平台的端口转发和代理功能
  10. YUV与RGB格式转换
  11. 国家语言代码大全【方便翻译查询】
  12. 华硕飞行堡垒笔记本电脑驱动程序不能使用如何解决
  13. linux系统双显示器怎么设置复制,linux系统双显示器设置
  14. python处理txt文件的常用操作
  15. 2020-10-06
  16. 我们是如何走到今天的?
  17. 宝塔绑定域名访问不了_千字长文教你使用 宝塔面板 快速搭建网站
  18. HTML利用posotion属性定位 小技巧
  19. 什么是python大数据研发,它有什么特点吗
  20. 计算机三级知识点总结

热门文章

  1. 删除一行下方单元格上移_快速删除Excel工作表多余空单元格
  2. Webpack的代码分包Vue3中定义异步组件分包refs的使用
  3. LeetCode 2104. 子数组范围和(单调栈)
  4. LeetCode 1779. 找到最近的有相同 X 或 Y 坐标的点
  5. LeetCode 1684. 统计一致字符串的数目(哈希)
  6. LeetCode 1311. 获取你好友已观看的视频(BFS+哈希map+vector排序)
  7. LeetCode 第 187 场周赛(1336/3107,前43.0%)
  8. 数据结构--树--线段树(Segment Tree)
  9. LeetCode 146. LRU缓存机制(哈希链表)
  10. 数据结构--队列Queue--链式队列、顺序队列