0

假设我有一个值为 42 (*) 的字符。我需要在 n 行中打印此字符,其中 n 由用户定义。但是,对于每行移位,必须打印另一个 *。如果用户输入“6”,那么结果将是这样的:

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

我正在考虑让程序重复打印并跳转一行 n 次,在每个循环结束时将另一个 * 添加到 char 中。是否有任何命令可以将 * 变成 ** 然后变成*等等?

4

3 回答 3

7

您不需要进行任何字符串操作。对于每一行,如果行号是i,只需打印一个星号(带putchar()或类似)i次,然后是换行符。

于 2013-04-13T21:47:38.393 回答
2

为此,您可以使用嵌套的 for 循环...

for(i=0;i<n;i++)     //n is your user value
{
    for(j=0;j<=i;j++)
         {
          printf("%c",your_char);     //print char here
         }
    printf("\n");                    //for going to next line
}

顶部for循环将处理行,而内部for循环将处理列...

于 2013-04-13T21:51:44.650 回答
-1

尝试这个:

 void print_n_chars(char c, size_t count)
 {
     char *buffer;
     size_t i;

     buffer = malloc(count + 1);
     memset(buffer, 0, count + 1);

     for (i = 0; i < count; i++)
     {
         buffer[i] = c;

         printf("%s\n", buffer);
     }

     free(buffer);
 }

该算法具有O(n)性能,优于O(n^2/2)两个循环。

编辑:固定名称错字,添加性能评论

于 2013-04-13T21:55:35.737 回答