热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

输入输出问题?急!!!望高手们快!!!!

floata;cin>>a;我现在输入的是jjjj,不是浮点型,程序就会出错,那么我怎么控制用户输入的一定是浮点型,而不是其他类型的?
float a;
cin>>a;
我现在输入的是jjjj,不是浮点型,程序就会出错,
那么我怎么控制用户输入的一定是浮点型,而不是其他类型的?

21 个解决方案

#1


用char[]接受,然后转换

#2


加一个判断语句,判断输入是否是一个数字

#3


float a;
cout<<"请输入一个浮点型的数: ";
cin>>a;
最简单:)

#4


float a;
cout<<"请输入一个浮点型的数: ";
cin>>a;
最简单:)
————————————————————————————————————————————
ft,这样防止不了输入中的错误。
还是要做判断才行

#5


不懂说什么?

#6


先用字符串方式读入再判断是否数字

#7


char a[]

#8


可以这样限制

#include 
#include 

void main()
{
char chtof[10];
char ch;
cout<<"请输入一个浮点数: ";
cin>>chtof;
cout<
while (atof(chtof)==0)
{
cout<<"输入的不是浮点数,要重新输入吗?(Y Or N): ";
cin>>ch;
if (ch=='y' || ch=='Y')
cin>>chtof;
else if (ch=='n' || ch=='N')
break;
}
if (atof(chtof)!=0)
cout<<"输入的浮点数为"< }

#9


你既然定义了是float
为什么要输入字符串呢
如果要输入字符串用指针或者数组

#10


楼上的

你说的不对

你不能防止客户不出现错误的输入

在软件测试阶段

这也是"破坏性测试"的一个环节

 lionhu2003(我为编程狂) 的程序很漂亮

我就不写了

楼主对编程的严格要求是我们要学习的

#11


try:
 float fff;
   cout<<"fff=";
   while(!(cin>>fff) )

   {
   cin.clear();//
   cin.ignore();//
   cout<<"error!input again: ";
   }
   cout<

#12


楼上的,强!!!!

#13


lionhu2003(我为编程狂)的程序有问题:
输入0时判别不是浮点数
确认“输入的不是浮点数,要重新输入吗?(Y Or N):”时若连续输入几个字符就出问题
输入字母和数字的混合时有问题

说到底还是没有解决健壮性问题。

#14


我来健壮一下!嘿嘿!
#include 
#include 

bool check(char* p)
{ int count=0;
for (int i=0;p[i]!='\0';i++)
{
if ((p[i]<'0'||p[i]>'9')&&p[i]!='.') /*输入的字符串包含0-9
                             return false;             和小数点(.)以外的字符*/

if (p[i]=='.')
count++;
if (count>1)  //两个以上的小数点
return false;
}
return true;
}
void main()
{
char a[50];
char ch;
cout<<"Enter a float number:"< cin>>a;
while (!check(a))
{
cout<<"输入不正确,继续吗?(y/n)"< cin>>ch;
if(ch=='y'||ch=='Y')
cin>>a;
else
exit(0);
}
cout<<"输入的浮点数为:"<
}


#15


对楼上的 lemon520(大母猪)  小小改进:
bool check(char* p)
{ int count=0;
for (int i=0;p[i]!='\0';i++)
{
if ((p[i]<'0'||p[i]>'9')&&p[i]!='.') /*输入的字符串包含0-9
                             return false;             和小数点(.)以外的字符*/

if (p[i]=='.')
                  {
                          if(i==0)    return false;
                
        else count++;
                   }
if (count>1)  //两个以上的小数点
return false;
}
return true;
}

#16


对了,还要判断符号的问题,才足够健壮吧?
例如:
-111-233.200

#17


终于发现 Regular Expression 的用途了,呵呵。

#18


我觉得没有必要去做这么复杂的判断(而且要把所有的情况都考虑近去,也不容易),把输入读入一个字符串,然后用atof来转换,如果输入格式正确,返回的就是有效的浮点数,如果不正确,msdn上说返回值不确定。但在vc6中,这种情况的返回值是0。所以我们可以有一个很简单的实现:

#include 
#include 

using namespace std;

void main()
{
float fff;
string a;
   while(true)
   {
   cin>>a;
   fff=atof(a.c_str());
   if(fff==0)
   {
   if(a[0]!='0')   //这里考虑输入为0 的情况
   {
   cout<<"error!input again:";
   continue;
   }
   }
   cout<    }

}


     另外,point_to(一 指)的方法也是可行的,但是如果是非法输入的话,比如jjjjj,那么“error!input again:”这句话就会重复输出五次,跟你输入的字符的数目相同。不过这种小问题很容易解决,就不多说了。

    ps:个人认为point_to(一 指)兄的写法要更好一些,因为atof这种函数的行为在不同的编译器上实现可能是不一样的,所以这种方法也就没有什么通用性。

#19


程序有问题,改一下:

#include 
#include 

using namespace std;

void main()
{
float fff;
string a;
   while(true)
   {
   cin>>a;
   fff=atof(a.c_str());
   if(fff==0)
   {
                 for(int i=0;i                  {
   if(a[i]!='0')   //这里考虑输入为0 的情况
   {
   cout<<"error!input again:";
   continue;
   }
                 }
   }
   cout<    }

}

#20


还是有问题,算了,不改了,睡觉去,困的脑子都糊涂了。

#21


#include 
#include 

int main()
{
     std::string s;
     float f = 0;
     std::cout << "Input a floating-point value: ";
     std::cin >> s;
     std::istringstream(s) >> f;
     std::cout << f << '\n';
}

输入 0 或错误字符,输出都为 0,其它一切正常。
这个难题就留给大家来解决吧!比如能够区别 0.000.... 
个人认为如果习惯用 atof ,以后应该改用 strtod,要来的好。

推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文介绍了P1651题目的描述和要求,以及计算能搭建的塔的最大高度的方法。通过动态规划和状压技术,将问题转化为求解差值的问题,并定义了相应的状态。最终得出了计算最大高度的解法。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文介绍了UVALive6575题目Odd and Even Zeroes的解法,使用了数位dp和找规律的方法。阶乘的定义和性质被介绍,并给出了一些例子。其中,部分阶乘的尾零个数为奇数,部分为偶数。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 深入理解Kafka服务端请求队列中请求的处理
    本文深入分析了Kafka服务端请求队列中请求的处理过程,详细介绍了请求的封装和放入请求队列的过程,以及处理请求的线程池的创建和容量设置。通过场景分析、图示说明和源码分析,帮助读者更好地理解Kafka服务端的工作原理。 ... [详细]
author-avatar
ZhuJiongJiongnu_441
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有