c++ - C++ 中的 Hackerrank 楼梯
问题描述
我正在尝试在 C++ 中使用和使用和解决这个问题std::cout
setw
setfill
我原来的代码是这样的:
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);
}
打印出来
|#
|##
|###
|####
你需要做的就是打印出比 | 更有用的东西,比如 #,并修正你的对齐数学。
推荐阅读
- html - 我的孩子 Div 无法滚动到底部
- java - @Transactional 不提交(Spring Mybatis)
- vue.js - 在其他组件中侦听后无法识别通过发射的Vue对象
- java - 如何从 Vaadin 8 中的子线程访问 UI 线程
- html - 我的 imageContainer div 的高度比它包含的元素略大,这使得它看起来好像顶部和底部 div 之间有一个空间
- sql - 如何解析 JSON 属性而不显式引用它们?
- bash - sed 在两个模式之间,其中结果包含第三个模式
- c# - 根据位置和长度创建文本文件
- android - 如何在 Android Studio (MacOS High Sierra) 中增加字体大小?
- html - Flexbox 不随内容扩展