【问题标题】:Extra line is coming as output in c++额外的行作为 C++ 中的输出出现
【发布时间】:2020-12-17 19:41:55
【问题描述】:
int main() {
string n;
int number_of_test_cases;
cin>>number_of_test_cases;
for (int i = 0; i <= number_of_test_cases; i++) {
    getline(cin,n);
    for (int p = 0; p < n.size(); p++)
    {
        if (p%2==0){
            cout<<n[p];
        }
    }cout<<" ";
    for (int p = 0; p < n.size(); p++)
    {
        if (p%2!=0){
            cout<<n[p];
        }
    }cout<<endl;
}return 0;}

此代码首先将测试用例的数量作为输入 number_of_test_cases ,然后运行循环 n 次,其中首先获取输入字符串,然后运行循环以打印偶数索引字符,然后是空格,然后再次运行循环以打印奇数索引字符然后它打印一个结束线。

现在的问题是,在给出 number_of_test_cases 作为输入后,它正在打印不需要的行。所以现在我想摆脱那条额外的线。

这个问题来自hackerrank:https://www.hackerrank.com/challenges/30-review-loop/problem

用于输入 2 黑客 秩 它的输出


Hce akr
Rn ak

而不是

Hce akr
Rn ak

【问题讨论】:

  • 请在问题中包含期望的和实际的输出
  • 你说n 是测试用例的数量,但它被声明为string?
  • 您的变量命名方案令人困惑(显然对于您和其他人)。使用有意义的名称是迈向可读代码的第一步。例如j 可能是number_of_test_cases
  • 你认为这个循环运行了多少次for (int i = 0; i &lt;= j; i++) {?如果j 为零则运行一次,如果j 为一则运行两次,如果j 为二则运行三次。我相信你能看到问题。

标签: c++


【解决方案1】:

在使用 getline 函数之前扫描整数后使用cin.ignore()。此外,for 循环中的条件应该是 i &lt; j

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    相关资源
    最近更新 更多