假设我有一个值为 42 (*) 的字符。我需要在 n 行中打印此字符,其中 n 由用户定义。但是,对于每行移位,必须打印另一个 *。如果用户输入“6”,那么结果将是这样的:
*
**
***
****
*****
******
我正在考虑让程序重复打印并跳转一行 n 次,在每个循环结束时将另一个 * 添加到 char 中。是否有任何命令可以将 * 变成 ** 然后变成*等等?
假设我有一个值为 42 (*) 的字符。我需要在 n 行中打印此字符,其中 n 由用户定义。但是,对于每行移位,必须打印另一个 *。如果用户输入“6”,那么结果将是这样的:
*
**
***
****
*****
******
我正在考虑让程序重复打印并跳转一行 n 次,在每个循环结束时将另一个 * 添加到 char 中。是否有任何命令可以将 * 变成 ** 然后变成*等等?
您不需要进行任何字符串操作。对于每一行,如果行号是i
,只需打印一个星号(带putchar()
或类似)i
次,然后是换行符。
为此,您可以使用嵌套的 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
循环将处理列...
尝试这个:
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)
两个循环。
编辑:固定名称错字,添加性能评论