在c++中使用while循环测试用例未通过
Test case not passed using while loop in C++
My Need:
使用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++一无所知时的问题。这可能对新生有用。
你的循环有缺陷
int input=1;
int i= 0;
string name;
while(input<=i)
作为input
大于i
以
您认为测试用例适用于42,但实际上循环中的逻辑从未执行。这是简单的情况下,控制台输出是相同的(即没有),但你的代码永远不会得到cin
远检查输入是42
您的代码从未进入while
,因为条件始终是false
。
只使用,
....
while(1)
{
....
这将无限地运行循环,并在遇到42时中断。
当您传递42时,您的代码甚至无法运行,因为input
大于i
。
while(input<=i) // input = 1, i = 0, 1 > 0
你可能想要的是一个无限循环:
while (true)
你的代码有这些问题:
- 它不会进入while循环,因为input初始化为1,i初始化为0。当检查条件时* While (input<=i)*即, while(1<=0)如果为false,则不会执行下面的语句。 -
我的解决方案:
#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;
}
- 将input初始化为0,将i初始化为1,将得到您想要的输出。
首先,抱歉我的基本问题。环路未初始化。因为input
是1,i
是0。但我给出的条件是input<=i
。由于条件为false,控件没有进入循环
相关文章:
- 如何使用重载的相等(==)运算符向测试用例添加描述
- 从父数组测试用例构造二叉树失败
- 在Raspbian上编译pybind11测试用例时出现致命错误
- 我遇到了黑客排名中的问题"TWO STRINGS"的三个测试用例的分段错误。原因是什么?
- 某些测试用例未通过
- 如何在多个 Catch2 测试用例中检查相同的条件
- 谷歌启动2018,测试用例中的整数错误
- 用于查找连续子数组的最大总和的代码使测试用例失败
- 查找不适用于 c++ 中特定测试用例的最长子字符串
- 测试用例状态为失败,但返回的值为 true
- kill syscommand 在 Catch2 测试用例中失败
- 大型测试用例中C++ dfs 问题中的小错误
- 为什么在输入的第一行输入测试用例数量后得到垃圾值?
- C++ Catch 是否有类似 NUnit 的测试用例的东西,具有多个参数/输入选项
- 如何修复此代码对几个测试用例的错误答案?
- 所有测试用例都将小数点转换为二进制数
- C++回文检查解决方案被一个测试用例跳闸
- 测试用例大小为 10 的向量失败
- 将 argc 和 argv 传递给 QApplication 到单元测试用例方法中
- 在c++中使用while循环测试用例未通过