假设我有一个值为42(*)的char。我需要在n行中打印这个字符,用户定义n。但是,对于每个换班,必须打印另一个*。如果用户输入“6”,则结果如下:
*
**
***
****
*****
******
我正在考虑让程序重复打印并跳转一行n次,在每个循环结束时向char添加另一个*。是否有任何命令会将*转换为**然后转换为 * 等等?
答案 0 :(得分:7)
您不需要进行任何字符串操作。对于每一行,如果行号为i
,则只打印一个星号(使用putchar()
等)i
次,然后换行。
答案 1 :(得分: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
循环将处理该列...
答案 2 :(得分:-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)
两个循环。
编辑:固定名称拼写错误,添加了效果评论