测试用例未在C ++中使用while循环传递

时间:2015-09-01 10:39:12

标签: c++ while-loop testcase

我的需要:

使用while循环问候与stdin上可用的名称一样多的名称。当您读取字符串'42'作为名称时停止。

我的编码:

#include<iostream>
using namespace std;
int main()
{
    int input=1;
    int i= 0;
    string name;
    while(input<=i)
    {
        cin>>name;
        if(name=="42")
        {
             break;
        }
        else
        {
           cout<<"Hello "<<name<<"!";
           i++;
        }

    }
    return 0;
}

结果:

对于输入42,传递测试用例。对于其他输入,测试用例失败。请发表你的答案。

约1年后回答:

非常抱歉这个问题。当我对C ++有0知识时,我问这个问题。这可能对新生有用。

5 个答案:

答案 0 :(得分:4)

你的循环存在缺陷

int input=1;
int i= 0;
string name;
while(input<=i)

input大于i,以

开头

认为测试用例适用于42但实际上循环中的逻辑从未执行过。简单的情况是控制台输出是相同的(即没有),但是你的代码永远不会到cin来检查输入是否为42

答案 1 :(得分:2)

您的代码永远不会输入#smalldiv2,因为条件始终为while

只需使用,

false

这将无限期地运行你的循环,并在遇到42时中断。

答案 2 :(得分:1)

当您传递42时,您的代码甚至无法运行,因为input大于i

while(input<=i) // input = 1, i = 0, 1 > 0

你可能想要的是一个无限循环:

while (true)

答案 3 :(得分:0)

您的代码存在以下问题:

  • 它不会进入while循环,因为输入被初始化为1而 i 被初始化为0.同时检查条件* while(输入&lt; = i) *即, while(1&lt; = 0)这是假的,它不会执行下面的陈述。
  •   -

我的解决方案:

 #include<iostream>
using namespace std;
int main()
{
int input=0;
int i= 1;
string name;
while(input<=i)
{
    cin>>name;
    if(name=="42")
    {
         break;
    }
    else
    {
       cout<<"Hello "<<name<<"!";
       i++;
    }

}
return 0;
}
  • 使用0初始化输入,使用1初始化 i 将为您提供所需的输出。

答案 4 :(得分:0)

首先,对不起我的基本问题。循环未启动。因为input<=i为1且CGFloat red = arc4random_uniform(255)/255.0; CGFloat blu = arc4random_uniform(255)/255.0; CGFloat green = arc4random_uniform(255)/255.0; view.backgroundColor = [UIColor colorWithRed:red green:green blue:blu alpha:1.0]; 为0.但我给出的条件是initCheckBox();。由于错误条件,控件不进入循环