是否可以按照安东·斯普劳尔(Anton Spraul)"Think Like Programmer"书中所述,在没有C++打印空格的情况下打印此形状?
Is it possible to print this shape without printing spaces in C++ as described in the book "Think Like Programmer" by Anton Spraul?
在一本名为"像程序员一样思考;作者Anton Spraul,在第2章练习1,第53页,这是写的:
使用与本章前面的shapes程序相同的规则(只有两个输出语句——一个输出散列标记,另一个输出输出行尾(,编写一个程序以下形状:
######## ###### #### ##
所以我们只能使用cout << "n";
和cout << "#";
,而不能使用cout << " ";
通过打印空格很容易解决这个问题(请参阅下面的代码(但是在C++中不需要打印空间就可以打印这样的形状吗
#include <iostream>
using std::cin;
using std::cout;
int main()
{
int shapeWidth = 8;
for (int row = 0; row < 4; row++) {
for(int spaceNum = 0; spaceNum < row; spaceNum++) {
cout << " ";
}
for(int hashNum = 0; hashNum < shapeWidth-2*row; hashNum++) {
cout << "#";
}
cout << "n";
}
}
通过打印空格来解决这个问题很容易(请参阅上面的代码(但是在C++中不需要打印空间就可以打印这样的形状吗
在我读到的其中一个答案中,可以去掉for (int spaceNum. . .
循环,而只是放cout << setw(row+1);
来实现这一点。
澄清:作者从未使用过一个形状作为必须打印如上所述的空格或缩进的例子。从字面上解释上面的练习,他希望我们通过打印"#"以及";\n〃;只有仅通过打印"空白"来打印空白或压痕#"以及";\n〃;对我来说似乎不可能,所以我想也许他写练习时不小心。或者有办法做到这一点,但只有我自己不知道。这就是我问这个问题的原因。
是的,这是可能的
将流width设置为行的长度
将流格式设置为右对齐。
在你的书或其他C++参考文献中查找流操纵器。
可能!但这是一个关于你运行的系统的问题,而不是关于C++的问题。就语言而言,它只是输出字符。输出一个"空格"字符会将光标移到屏幕上的右侧,甚至是屏幕的存在,这取决于操作系统和运行在其上的软件如何解释输出的字符。
最值得注意的是,在大多数文本控制台上,可以使用ANSI转义序列来移动光标。没有什么特别的理由这样做,除非你正在编写一个全屏文本模式的用户界面。
- 如何循环打印顶点结构
- 为什么在popback()操作之后,它仍然打印完整的矢量
- 如何在c++中打印目录
- 有一个打印语句的函数是一种糟糕的编程实践吗
- 在线编译器中的分段C++没有打印消息
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 这个指针和内存代码打印是什么?我不知道是打印垃圾还是如何打印我需要的值
- 如何将结构插入到集合中并打印集合的成员
- 在循环C++中指定字符串之后,不会打印该字符串
- 以螺旋方式打印矩阵的程序.(工作不好)
- 从控制台中删除最后打印的元素
- 如何使用Crypto++并为RSA返回可打印的字节/字符数组
- 如何仅使用对象名称打印特定于对象的成员
- 回溯C++不打印函数,因此文件
- 在一定长度后从数组中打印时缺少整数
- 为什么这个 c++ 代码打印出长度 5,当我打印出字符串时,程序会自动终止?
- 在gem5中打印文件中的所有cache_blocks
- 打印数字图案
- Log4cpp:以UTC/GMT时区打印日期
- 如何使用gdb制作一个可以漂亮地打印每个对象的C++函数