【发布时间】: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 <= j; i++) {?如果j为零则运行一次,如果j为一则运行两次,如果j为二则运行三次。我相信你能看到问题。
标签: c++