用scanf_s判断输入数据是否合法

对用户输入的整数进行求和。当用户输入任意字符时,结束程序并打印结果。

A. 用户可以输入整数和浮点数

B. 用户可以在同一行输入多个数字,数字之间可以是任意一个分隔符(如下图)

C. 结果保留两位小数

答:要求 A 不难实现,统一将用户输入的数转换为浮点型即可(整数到浮点型的转换是无损的);要求 B 则需要我们检测用户是输入了数字之后是否按下了回车(检测是否存在换行符)。因此,我们需要嵌套一个内循环来处理那些一行包含多组数字的情况。

代码实现:

#include<iostream>
#include<cstdio>
using namespace std;
int main()
{
float num = 0;
double sum = 0;
int status;
do
{
cout << "请输入合法的数字:";
do
{
sum += num;
status = scanf_s("%f", &num);
}
while (getchar() != '\n'&& status == 1);
}
while (status == 1);
cout << "结果是:" << sum << endl; system("pause");
return 0;
}

scanf_s函数会返回成功接收字符的个数,所以我们只需检查每次调用 scanf_s函数的返回值是否为 1 即可。

最新文章

  1. 隐马尔科夫模型python实现简单拼音输入法
  2. swift---不同字体大小不同颜色label富文本设置
  3. ACM 找球号(一)
  4. NOIp 2013 #2 花匠 Label:爆0的Water
  5. OpenStack 二次开发环境和开发工具的选择
  6. [安卓]应用程序资源(App Resources)
  7. docker RESTful API
  8. js 定位到某个锚点
  9. VS2010开发环境最佳字体及配色[转]
  10. cloudstack安装篇2-主机名配置
  11. java数组遍历——iterator和for方法
  12. 外观模式之C++实现
  13. Mod_Python中文文档
  14. Android Matrix(坐标矩阵)
  15. mysql配置主从数据库
  16. .net程序实现给机器加域,添加域账号到本地管理员
  17. Android官方技术文档翻译——Gradle 插件用户指南(6)
  18. 基于E-R模型的关系型数据库设计方法
  19. Oracle设置主键自增
  20. SPOJ DIVCNT2

热门文章

  1. API管理工具
  2. Mysql之索引选择及优化
  3. Android Studio 之 ImageView 学习笔记
  4. 面试高频题:说一说对Spring和SpringMvc父子容器的理解?
  5. java面试-生产环境出现CPU占用过高,谈谈你的分析思路和定位
  6. BUAA_OS lab2 难点梳理
  7. HTML5与CSS3新增特性笔记
  8. ubuntu16.04 安装opencv3.4.0
  9. (十七)VMware Harbor 垃圾清理
  10. Java多线程编程(同步、死锁、生产消费者问题)