for (n = 1; n <= num1, n++)
{
num2 = num1 - n;
printf("%*s%*cn", num2, "", n, '#');
}
我正在尝试获取主题标签的半金字塔,左下角左对齐,高度 x 宽度由单个输入 (num1) 确定。喜欢这个:
num1 = 4
Output:
#
##
###
####
相反,我得到了这个(输入为 4):
#
#
#
#
有许多方法可以做到这一点。这是一个最喜欢的。它将宽度作为程序的第一个参数(默认为 5):
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main (int argc, char **argv) {
int width = argc > 1 ? atoi (argv[1]) : 5;
if (width < 0) width = -width;
char *hash = "################################################";
size_t max = strlen (hash);
char *p = hash + max;
int i = width > max ? max : width;
while (i--)
printf ("%*sn", width, p -width + i);
return 0;
}
输出
$ ./bin/padstr_hash
#
##
###
####
#####
$ ./bin/padstr_hash 6
#
##
###
####
#####
######
%*c
是字段宽度或精度的说明符。 您不是在打印n
字符,而只是打印一个填充n
空格的字符。
如果要多次打印一个字符,请使用for
循环。