金字塔的星星

时间:2014-10-29 14:33:13

标签: c

你的工作是使用for循环来打印出明星金字塔。你的程序应该使用整数作为参数,并打印出一个带有所提供大小的基数的星号金字塔。例如,如果用户输入为3,则应打印出您的程序:

*
**
***

这就是我所做的。该程序没有任何错误,但它不打印出金字塔并按预期返回。一旦我开始工作,我将添加更多的if语句来解释更大的金字塔。

#include <stdio.h>

void main(int size){
if (size == 0)
{return;
};
if (size == 1)
{printf("*\n");
};
if (size == 2)
{printf("**\n");
};
if (size == 3)
{printf("***\n");
};
if (size = 4)
{printf("****\n");
};
if (size == 5)
{printf("*****\n");
};
if (size ==6)
{printf("******\n");
};

 main(size-1);}

3 个答案:

答案 0 :(得分:0)

这不是很好,但应该有效

#include <stdio.h>

void main(){
    int size = 3,i;      //you can't just pass a value into main like that so I've initialised size here
    while (size){        //loop controlling line output
        i = 0;
        while (i++<size){//loop controlling * output within line
            putchar('*');//output a *
        }
        putchar('\n');   //output a newline (go to next line)
        size--;
    }
}

如果你检查for循环的语法,你应该能够翻译它以便很容易地使用它们(我很好,但我仍然不会在盘子上给你完整的任务)

答案 1 :(得分:0)

颠倒是因为主要电话的位置是持续的。

#include <stdio.h>

int main(int argc, char **argv){
    if(argc){
        int i;
        (void)main(argc-1, argv);
        for(i=0;i<argc;++i)
            putchar('*');
        putchar('\n');
    }
    return 0;
}

答案 2 :(得分:0)

打印行列“图形”是一个二维问题,因此您需要一个2D解决方案:两个循环,一个嵌套在另一个中。您可以使用一个循环 - 在一行中打印星号(星号),并在尝试时重新调用程序 - 除了每次结果都会变小。要变大,您需要两个程序参数:max size和current row。在这种情况下,您无法摆脱对两个数据的需求。

请尝试使用其他人在评论中建议的循环。

我会将所需的结果称为“三角形”,因为对我来说,“金字塔”必须从左到右对称,所以只能有奇数行。