c++ - 验证以下条件的输入

标签 c++ c floating-point conditional-statements floating-point-precision

我遇到了一个将 float 作为输入的问题,并检查输入是否介于 10 和 100 之间,否则再次输入。剩下的问题遵循这个 k 的值,这很容易解决。但我遇到的真正问题是验证。

   scanf("%f",&k);   
   if(k>10.0 && k<100.0)
   scanf("%f",&k);
   else
   {
   ......//my code
   }

但是当我提交的时候,它给出了错误的答案,真正的问题是在

      #Input-10.@
      #Input-@

因为对于这个输入,它不是转到 else 部分,而是通过像

这样的输入转到 if 部分
       #Input-10 

很满意。

谁能给我解决这个问题的解决方案,这个范围内的 float 和 integer 类型的输入只满足否则不满足。

最佳答案

您混淆了比较运算符(似乎您仅在获得有效输入而不是无效输入时才重试)。另外,您只重试一次,但我怀疑您想一直重试,直到获得有效输入。这是你可以做到的:

#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
  double k;
  do{
    cin>>k;
  }while(k<=10||k>=100);

  //the rest of your code goes here
  return 0;
}

关于c++ - 验证以下条件的输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18301220/

相关文章:

c - 如何在 C 中打印最大可能的 float 和 double ?

c - 固定大小的 float / double 以方便携带

c++ - 在 C++ 中读取所有字符的 2 个字符串之间输出不同字符(不是公共(public)字符)的程序

c++ - 调用 get 后将 shared_ptr 分配给另一个

c++ - Windows 套接字发送字符串流

c++ - QImage(或一般图像)转换为 RGB 的 3 个一维数组

c - 重现 strcpy 的行为

c - 估计代码在本地linux系统上的执行时间

c++ - IVdsPack::创建卷

c - 如何在C中自动缩放浮点值?