【问题标题】:How to create an upward triangle with repeat function如何创建具有重复功能的向上三角形
【发布时间】:2019-07-25 12:31:27
【问题描述】:

我正在尝试创建一个向上三角形函数,该函数利用我已经完成的一个函数,该函数获取一个字符并按你想要的次数打印它。

我想先澄清一下,这是作业。我遇到了一些障碍,需要一些指导。

向上三角形示例:

*
**
***
****

我知道如何在没有其他函数的情况下创建一个向上的三角形函数:

void utri( int tricount )
{
    int uptri, x;
    char star;
    star = '*';
    for ( uptri = 1; uptri <= tricount; uptri++ )
    {
        for ( x = 0; x < uptri; x++ )
        {
                printf ("%c", star);
        }
        printf("\n");
    }
}

但我无法想出一个合乎逻辑的方法。我正在尝试创建一个向上的三角形,它将利用下面的重复功能。

这是我想用来创建向上三角形函数的重复函数:

void rept( int alot, char sym )
{
    int z;

    for ( z = 0; z < alot; z++ )
        printf("%c", sym);

    printf("\n");
}

在测试输出时,这是我要使用的调用:

utri(4);

【问题讨论】:

  • rept(uptri , star);替换内部for循环

标签: c arrays string function character


【解决方案1】:

您所要做的就是用您必须使用的新函数替换内部的for 循环,并通过将它们相应地放入函数调用中来将正确的变量传递给函数,例如:rept(uptri, star);

uptri 被传递给rept() 并且是该范围内名为int alot 的变量(循环将运行的次数),star 是将在@987654328 中打印的字符char @ and 是 rept 范围内名为 char sym 的变量。如果您不熟悉计算机编程,“范围”只是指可以看到该变量的程序的哪个部分。因此,rept 无法看到变量 uptristar,直到使用函数调用 rept(uptri, star); 将它们的值传递给它。一旦发生这种情况,rept 将使用这些变量并将它们的值分配给它自己范围内的变量:alotsym

代码

void utri( int tricount )
{
    int uptri, x;
    char star;
    star = '*';
    for ( uptri = 1; uptri <= tricount; uptri++ )
    {
        rept(uptri, star);
    }
}

【讨论】:

  • 非常感谢。我想既然我还在习惯数组和函数,我可能会让它们变得比我应该做的更难。
  • @RobotSpirits 没问题!我记得当我第一次学习使用 C 编码时,出于某种原因,变量如何传递给函数的概念也让我感到困惑。如果您将我的答案标记为最佳答案或其他答案之一,如果它以更好的方式回答您的问题,我将不胜感激。干杯。
  • 你明白了!是的,它仍然让我感到困惑。不幸的是,我很快就要完成另一项具有多种功能的任务了,我完全迷失了:/我希望有更多的选择。
  • 再次总结一下,要在函数中使用变量,您必须通过函数调用将它们传递给函数。在这种情况下,它是rept(uptri, star)uptri 必须是 int 变量类型,star 必须是 char 类型,因为函数声明为 void rept(int alot, char sym)。当rept()运行时,alotsym分别保存uptristar的数据。函数中的代码运行,当它到达末尾时,程序从函数调用后停止的地方开始。在您的情况下,rept(uptri, star) 每次在 utri() 函数中循环时都会运行。
【解决方案2】:

恭喜。您的解决方案在分离中完美运行。您只需将它们合并在一起即可使事情正常进行。所以你的rept函数打印字符symalot次,你需要打印star第1行1次,第2行2次等等。如果我们调用rept传递行号为alotstar 作为 sym

**稍微思考问题后,请参阅下面的代码。

void utri( int tricount )
{
        int uptri, x;
        char star;
        star = '*';
        for ( uptri = 1; uptri <= tricount; uptri++ )
        {
                rept(uptri, star);
        }
}

【讨论】:

  • 感谢您的建议,它派上了用场,而且很容易理解。
猜你喜欢
  • 1970-01-01
  • 2015-03-07
  • 2023-03-08
  • 1970-01-01
  • 2015-05-14
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多