用C ++创建一个形状

时间:2015-04-24 14:17:16

标签: c++ shapes

我想创建一个这样的形状:

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;
}

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

我做错了什么?

enter image description here

3 个答案:

答案 0 :(得分:18)

for(j = 7; j > 7; j--){此表达式始终为false。

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

答案 1 :(得分:4)

你想要这个:

#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次因此空行

答案 2 :(得分:0)

循环的条件

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

错了。也就是说它始终等于false,因为最初我设置为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