【问题标题】:Running first Instance of while运行while的第一个实例
【发布时间】:2011-12-29 11:56:49
【问题描述】:

任务:

编写一个无限循环的程序。在循环的每次迭代中,读取用户输入的整数 N(声明为 int),如果 N 为非负且可被 5 整除,则显示 N/5,否则显示 -1。使用三元运算符 (?:) 来完成此操作。 (提示:模运算符可能有用。)

我的解决方案:

#include<iostream>
using namespace std;
int main(){
     int x;
     cin>>x;
     while(1) {
         cin>>x;
         int result;
         cout<<"             "<<endl;
         result = (x>0 & (x%5==0)) ? int(x/5) : -1;
         cout<<result;
     }
}

我可以做这个问题 但是程序的第一次运行没有给出输出

【问题讨论】:

  • 这仍然被称为家庭作业:-)
  • 为什么需要这个cin>>x;在 while(1) 之前?
  • @RahulRa:作业标签的想法是人们给出有助于学习的答案,而不是解决问题的答案。我本可以告诉你删除 cin&gt;&gt;x,但这对你没有帮助。
  • 哦,我的粗心大意,版主请删除此问题

标签: c++ while-loop ternary-operator


【解决方案1】:

逐行浏览程序。使用cin&gt;&gt;x,您将一个数字读入 x。第 6 行是 while (1),1 是真的,所以你进入循环。下一个cin&gt;&gt;x 将一个数字读入 x,覆盖之前的内容。

【讨论】:

    【解决方案2】:
    (x>0 && (x%5==0)) ? int(x/5) : -1; 
         ^^
    

    我认为您打算使用逻辑 &amp;&amp; 运算符而不是按位 &amp; 运算符。

    此外,您正在读取x 两次并覆盖第一个读取值。

    【讨论】:

    • 是的,但是在 TERNARY 运算符中,我们可以使用 & 并且它会起作用!!{用于评估}
    【解决方案3】:

    好的。先说第一件事。您应该知道 C++ 逻辑 AND 运算符是“&&”而不是“&”(您使用的那个)。看看这里:http://www.cplusplus.com/doc/tutorial/operators/

    【讨论】:

      【解决方案4】:

      提示 1:你真的需要 while 循环上方的单例 cin 吗?

      提示 2:您要在结果上方打印带有换行符的空行吗?

      提示 3:您是否需要在没有换行符的情况下打印结果?

      提示 4:您是否打算使用按位 &amp; 而不是逻辑 &amp;&amp;.?

      可选

      提示1:您需要将5 的除法大小写成int吗?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-06-15
        相关资源
        最近更新 更多