C++ C++;:显示字符

C++ C++;:显示字符,c++,C++,我正在从《像程序员一样思考》一书中学习和提高我的编程技能,我被要求展示这种金字塔 ######## ###### #### ## 我用这个代码做的 for(int i = 0; i < 4; i++){ for(int k = 0; k < i; k++) cout << ' '; for(int j = 0; j < 8 - i * 2; j++) cout << '#'; c

我正在从《像程序员一样思考》一书中学习和提高我的编程技能,我被要求展示这种金字塔

########
 ######
  ####
   ##
我用这个代码做的

for(int i = 0; i < 4; i++){

    for(int k = 0; k < i; k++)
        cout << ' ';

    for(int j = 0; j < 8 - i * 2; j++)
        cout << '#';

    cout << '\n';
}
for(int i=0;i<4;i++){
对于(int k=0;kcout您可以检查每一行在循环中的位置。这与一个3操作数运算符相结合,可以用两个输出语句解决这个问题

for(int i = 0; i < 4; i++){

    for(int k = 0; k <= 8-i; k++)
        cout << k<i ? ' ' : '#';

    cout << endl;
}
for(int i=0;i<4;i++){

对于(int k=0;k我不知道这是否与不使用
cout的“艺术”有关不幸的是,这个问题的答案要简单得多:作者错误。前几个问题的措辞也应该允许使用单个空格输出(您是否需要找到一种隐式输出空格的方法。甚至可以使用一个
cout
语句来输出空格、哈希和行尾。;)换句话说,您只需要外部循环(
i
)如果每行创建一个字符串,那么只需使用一个输出语句
#include int main(){while(std::cin){};}
如果没有某种I/O操纵器(如
setw
),我想不出任何方法来实现这一点或者显式地写空格。有一些其他的方法,但它们归结为同一件事…这本书显然是针对一个编程级别,你不应该被要求做任何模糊的事情。谢谢,但我不确定这是我想知道的。我编辑这个问题是为了消除困惑。这完全取决于这本书的作者。作者可能是想鼓励人们查看底层的ASCII代码。此外,我无法想象,
setw
例如,在其代码中的某个地方没有明确使用
'
。我的意思是,在ASCII上做数学运算以获得
'
的代码是不正确的,直接使用该代码吧!这对我来说并不好笑r这就是原因。这是我的观点。它明确地说你可以使用
,这并不意味着有趣,也没有比使用
setw
更错误,它必须具有与
完全相同的功能,谢谢,这可以清除所有内容。然而,我仍然对同一章中的练习2.3感到困惑。它要求显示某种类似星星的对象,但是再说一次,一个cout可能吗
for(int i = 0; i < 4; i++){

    for(int k = 0; k <= 8-i; k++)
        cout << k<i ? ' ' : '#';

    cout << endl;
}