C++中的Hackerrank楼梯
Hackerrank Staircase in C++
我正试图使用std::cout
和setw
以及setfill
在C++中解决这个问题
我最初的代码是:
void staircase(int n) {
for(int i = 0; i < n; i++) {
cout << setfill(' ') << setw(n-(i+1));
cout << setfill('#') << setw(i+1) << '#'<< endl;
}
}
这不会打印出与#
字符右对齐的空格。我将其添加到输出缓冲区cout << setfill(' ') << setw(n-(i+1)) << ' ';
中,它打印空格字符,但对于最后一行,它打印一个空格字符。
setw
中有什么东西我遗漏了吗?
您需要打印出一些东西,或者第二个setfill
和setw
替换第一个。例如:
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
void staircase(int n) {
for(int i = 0; i < n; i++) {
cout << setfill(' ') << setw(n-(i+1)) << '|';
cout << setfill('#') << setw(i+1) << '#'<< endl;
}
}
int main(void)
{
staircase(4);
}
打印
|#
|##
|###
|####
你所需要做的就是打印出比|更有用的东西,比如#,并修复你的对齐数学。
这个问题的一个好的解决方案是使用字符串类的默认构造函数,如下所示:
for (int i = 0; i < n; i++)
{
int j = i+1;
string spaces(n-j, ' ');
string hashes(j, '#');
cout << spaces + hashes << endl;
}
相关文章:
- 数到第n个楼梯的路(顺序无关紧要)
- 请发现它在 dev 中工作的错误,但在 hackerrank 中不起作用
- 寻找最小楼梯成本的动态规划问题的错误答案
- C++中的Hackerrank楼梯
- 递归楼梯中的基本情况
- 我的代码在创建楼梯图案时出了什么问题
- 代码在我的系统上运行良好,但在 HackerRank 提交时出现分段错误
- HackerRank说~对标准输出没有回应~.C++
- Array Manipulation of HackerRank 背后的逻辑
- hourglass in c++, hackerrank
- 楼梯孩子总是得到0
- c++爬楼梯递归问题
- 不可分割的子集- Hackerrank
- 没有指针的c++分段错误(HackerRank)
- 这是HackerRank的错误解决方案
- C /c++ hackerrank,我的代码是工作的,但我得到0.38 /10分(不知道为什么)代码工作