【问题标题】:Printing a character multiple times in a for loop [closed]在for循环中多次打印一个字符[关闭]
【发布时间】:2017-01-03 12:15:48
【问题描述】:

我想使用 printf 和 for 循环根据输入每行多次打印一个字符;即如果输入是 3 我想打印:

a
aa
aaa

这是循环,根本不起作用。

for (int i = 0; i < n; i++)
{
    printf("a", i);
    printf("\n");
}

我只是不明白如何在一行上多次打印。

【问题讨论】:

  • 您希望printf("a", i); 做什么以及为什么
  • 你完成了每个字符的行。 \n 与行尾同义。
  • 你必须在那个循环中有另一个循环 (for n = 0; n&lt;i+1; n++ ...) 或者使用一个函数来重复一个字符
  • #include int main(){ int i, j;诠释 n = 3; for (i=0; i
  • 最简单/最清楚的做法是将第一个 printf 更改为函数调用 printCharacters(char,int) 或其他东西,并实现它 void printCharacters(char printedChar, int noOfPrints){ for( int i = 0; i &lt; noOfPrints' ++i ) printf("%c", printedChar); } 注意:调用函数以获取字符,即 @987654328 @

标签: c printf


【解决方案1】:

使用两个嵌套的for 循环:

for (int i = 0; i < n; i++)
{
    for(int j=0;j<=i;j++) {
       printf("a");
    }
    printf("\n");
}

正如此答案中的一个 cmets 中所建议的以及根据此 link 中的讨论,如果您只打印一个字符,putcharprintf 快。因此,如果您可以使用putchar 而不是printf,请尝试以下代码:

char ch = 'a', newLine = '\n';
for (int i = 0; i < n; i++)
{
    for(int j=0;j<=i;j++) {
       putchar(ch);
    }
    putchar(newLine);
}

【讨论】:

  • 更好的是,使用 putchar 代替 printf。
  • 是的,但我认为 OP 已经声明他想使用 forprintf(仅限)。
  • 这可能是因为 OP 不知道有更好的选择。更不用说这个问题的未来读者可能也会欣赏这些建议。
  • 酷。更新了答案以包含 putchar 方式。感谢您的建议。
  • 这工作得非常好,但增加了一点。如果我想做相反的事情,因为在底部的顶部最小值上有最大字符数,我需要在循环中更改什么?我试图将 j 设为我的最大可能输入,即 20,然后将其设为 j-- 而不是 j++,但这似乎创建了一个导致程序崩溃的无限循环。顺便说一句,谢谢您的回答。
【解决方案2】:

除非您需要使用for循环,否则我认为这在许多情况下会更好:

printf("%.*s\n", 5, "aaaaaaaaaaaaaaaaaaaaaaaaa"); 

这将打印字符串的前 5 个字母(恰好足够a's)

放入一个完整的程序:

int main() {
    int i;
    for(i=0; i < 10; ++i)
        printf("%.*s\n", i+1, "aaaaaaaaaaaaaaaaaaa");
    return 0;
}

输出:

a
aa
aaa
aaaa
aaaaa
aaaaaa
aaaaaaa
aaaaaaaa
aaaaaaaaa
aaaaaaaaaa

【讨论】:

  • 我学到了一些东西!我将阅读一两个实现,看看它在字符串较长时的可行性,但非常酷。
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 2014-03-06
  • 2021-01-30
  • 2021-04-25
  • 1970-01-01
  • 1970-01-01
  • 2020-05-22
  • 2014-01-10
相关资源
最近更新 更多