【问题标题】:While loops expressionWhile 循环表达式
【发布时间】:2014-10-06 19:38:13
【问题描述】:

我正在尝试编写一个程序,要求用户输入 0 到 1000000 之间的数字,并输出某个数字的出现(用户也输入)

我已经编写了这个程序,我相信它运行良好,但是我有一个问题,如果 while 表达式不正确,我想输出某个消息,但我不知道将它放在哪里。

这是我的程序:

#include <iostream> 
using namespace std;
int main()
{ 
 int n,j=0,key; 
 cout << "Pleaser enter digits\n";
 cin >> n;
 cout << "please enter key number\n";
 cin >> key;

 while (n>0 && n<1000000)
 {
   if(n%10==key)j++; 
      n= n/10;
 }

 cout << "The number " << key << " was found " << j << " time(s)" << endl;
 return 0;  
}

提前致谢!

【问题讨论】:

  • 你可以将 while 循环包装在 if else 条件块中,所以 if (n &lt;=0 || n &gt;= 1000000) cout &lt;&lt; "invalid params"; else { while...}
  • 如果 while 条件不成立,你 cout 某个消息。您的意思是“如果 while 表达式 第一次不为真”?
  • @TobiMcNamobi 是的,他的意思是当用户输入的 n 值不在范围 (0, 1000000) 内时

标签: c++ while-loop control-structure


【解决方案1】:

使用

if(n>0 && n<1000000)
{
    while(n)
    {
       if(n%10==key)
       j++; 
       n= n/10;
    } 
}
else 
cout<<"n is supposed to be between 0 and 1000000";

【讨论】:

    【解决方案2】:

    由于 bucle 内部没有中断(或没有其他可以跳转的代码段),因此执行 while 结构之后的所有内容,因为表达式返回 false。

    while (n>0 && n<1000000)
    {
       if(n%10==key)j++; 
       n= n/10;
    }
    cout << "While expression not anymore true" << endl;
    cout << "The number " << key << " was found " << j << " time(s)" << endl;
    return 0;  
    }
    

    更新

    根据 cmets,您似乎想检查输入的数字是否有效。简单地说,在while之前检查一下:

    if(not (n>0 and n<1000000)) cout << "Number must be between 0 and 1000000" << endl;
    else {
        while (n)
        {
            if(n%10==key)j++; 
            n= n/10;
        }
    }
    cout << "The number " << key << " was found " << j << " time(s)" << endl;
    return 0;  
    }
    

    【讨论】:

      【解决方案3】:

      在while循环之前写一个if语句。

           if(!(n>0 && n<1000000))
              {
                 cout << "....";
                 return -1;
              }
      
            while(..)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-05
        • 2020-08-19
        • 1970-01-01
        • 1970-01-01
        • 2018-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多