【问题标题】:Create a triangle [duplicate]创建一个三角形[重复]
【发布时间】:2013-10-04 11:44:03
【问题描述】:

我需要像这样创建一个三角形

 *
 **
 ***
 ****
 *****

我已经做到了。但是我的三角形看起来不是这样的:

#include <stdio.h>

int main()
{
    int  k, l;

    for(k=1; k<=5; k++)
    {
        for(l=k; l<=5; l++)
            printf(" ");

        for(l=0; l<=k-1; l++) printf("*");
        printf("\n");
    }
    return 0;
}

你能告诉我我的错误在哪里吗?

【问题讨论】:

  • 许多重复项,例如Drawing triangle using AsterisksPrinting a “triangle” of asterisks - 这似乎是一个常见的家庭作业问题,每年都会出现。
  • @PaulR 每年大约在新学期开始的时候10次,更准确地说。
  • 他仍然在代码中表现出他的努力并要求出错。与那些只是要求他人完成任务的人相比,投票表示赞赏。
  • @Navnath 这是错误的语言标签,我们不应将 C 问题标记为 python 问题的副本。
  • @JensGustedt 仅基于怀疑它是来自其他地方的代码投反对票,除非您收到一条评论告诉您开发人员对此一无所知,这对我来说听起来不对。关于另一个重复的东西,因为这是 C 代码,所以不能将 python 标记为重复。 SO主要是关于代码,所以语言确实很重要恕我直言。

标签: c


【解决方案1】:

您不需要 3 个循环 - 这是不必要的:

int  k, l;
for(k=1; k<=5; k++)  // outer loop
{
    for(l=0; l<k; l++) // inner loop
        printf("*");
    printf("\n");

}

这个想法很简单,只要l 小于k,就在内部循环中保持打印星号。因此,随着行数的增加(由k 跟踪),星数也会增加。您的固定代码:

for(k=1; k<=5; k++)
    {
        for(l=0; l<=k-1; l++) printf("*");
        printf("\n");
    }

【讨论】:

  • 您可以抽象出内部循环:void printn(int n, char* s) { while (0 &lt; n--) { printf(s); } } 并像 printn(k, "*") 一样调用它
  • +1 用于解释代码......我会去掉简单这个词,因为这是一个主观的,如果这些问题对每个人来说都很简单,那么他们就不会被问到
【解决方案2】:

只需删除循环打印空间。其余的代码看起来不错

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-21
    • 1970-01-01
    • 2015-03-07
    • 2018-07-23
    • 2015-01-13
    • 2013-08-30
    相关资源
    最近更新 更多