在 C++ 中创建形状

Create a shape in C++

我想创建这样的形状:

ccccccc
cccccc
ccccc
cccc
ccc
cc
c

我的代码是:

#include <iostream>

using namespace std;

int main(){
    int i, j;
    for(i = 0; i < 7; i++){
        for(j = 7; j > 7; j--){
            cout << 'c';
        }
        cout << endl;
    }
    return 0;
}

但是在终端中我得到的输出是一些空行。

我做错了什么?

for(j = 7; j > 7; j--){ 这个表达式总是假的。

你需要写for(j = 7; j > i; j--){

你想要这个:

#include <iostream>

using namespace std;

int main(){
    int i, j;
    for(i = 7; i > 0; --i){
        for(j = i; j > 0 ; j--){
            cout << 'c';
        }
        cout << endl;
    }
    return 0;
}

live example

您的原始代码在内循环中存在逻辑错误

for(j = 7; j > 7; j--){

这里的 j 是 7 但 j 永远不会大于 7 所以它永远不会执行,但即使它被固定为

for(j = 7; j > 0; j--){

这只会 cout 7 'c' 7 次,所以我修改的是更改您的内部循环起始值,以便它随后正确递减。

for(i = 7; i > 0; --i){
            for(j = i; j > 0 ; j--){
                    ^ now initialised by outer loop

所以会发生什么情况是内部循环从未执行过但你执行了 cout << endl; 7 次因此空行

循环条件

for(j = 7; j > 7; j--){

错了。也就是说它总是等于 false 因为最初 i 被设置为 7 并且它不能大于 7。:)

我想你的意思是

for(j = 7 - i; j > 0; j--){

程序可以写得更简单

#include <iostream>
#include <iomanip>

int main() 
{
    while ( true )
    {
        std::cout << "Enter a non-negative number (0-exit): ";

        size_t n = 0;
        std::cin >> n;

        if ( !n ) break;

        const char c = 'c';

        std::cout << std::setfill( c );

        while ( n ) std::cout << std::setw( n-- ) << c << std::endl;
    }

    return 0;
}

程序输出为

Enter a non-negative number (0-exit): 7
ccccccc
cccccc
ccccc
cccc
ccc
cc
c
Enter a non-negative number (0-exit): 0