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個贊
這個應該是非?;A的訓練printf的題目吧?
因為我在這個回答框打代碼總是格式很亂,所以我就直接說,如果不明白歡迎繼續問。
還請見諒。
那么就用最簡單的方法:
最長的一行有9個 | 對吧。
那么第一行就相當于printf(" 4個空格+* +\n");
以此類推,第二行printf("3個空格+***+\n");
就這樣類似的排下去就行了。
注意---空格要打在printf函數的雙引號 "" 內才會被輸出,然后一行一行的輸出,每次用一個printf。
然后換行需要用換行符“\n”,直接回車讓printf函數到下一行是不會在輸出的內容里換行的。
- 2 回答
- 0 關注
- 1201 瀏覽
添加回答
舉報
