2 回答
TA贡献3条经验 获得超3个赞
这个回复框很烂,你复制出去格式化下
#include <stdio.h>
// 多次打印函数,参数:行数, 每一行的字符数量, 字符
void multiPrintf(int height, int times, char str)
{
int i;
// 打印空格
for (i = 0; i < (height - times) / 2; i++)
{
printf("%s", " ");
}
// 打印字符
for (i = 0; i < times; i++)
{
printf("%c", str);
}
printf("\n");
}
int printPic(int height)
{
int mid = (height + 1) / 2;
// 画'|',对应奇数位,到中间值最大,启示数量为1,每次+4
int i;
for (i = 1; i <= height; i++)
{
// 奇数位符号为|偶数位为*
char str = (i % 2 != 0) ? '|' : '*';
// 小于中值递增
if (i < mid)
{
multiPrintf(height, 2 * i - 1, str);
}
// 大于中值递减
else
multiPrintf(height, 2 * (height + 1 - i) - 1, str);
}
}
int main(int argc, char const *argv[])
{
/* code */
printPic(21);
return 0;
}
TA贡献7条经验 获得超7个赞
这个应该是非常基础的训练printf的题目吧?
因为我在这个回答框打代码总是格式很乱,所以我就直接说,如果不明白欢迎继续问。
还请见谅。
那么就用最简单的方法:
最长的一行有9个 | 对吧。
那么第一行就相当于printf(" 4个空格+* +\n");
以此类推,第二行printf("3个空格+***+\n");
就这样类似的排下去就行了。
注意---空格要打在printf函数的双引号 "" 内才会被输出,然后一行一行的输出,每次用一个printf。
然后换行需要用换行符“\n”,直接回车让printf函数到下一行是不会在输出的内容里换行的。
- 2 回答
- 0 关注
- 1107 浏览
添加回答
举报