C语言写一个函数,从P行(n是奇数)打印沙漏,使用奇数时间字符,使用奇数字符串字符。奇数行+,偶数行-
时间: 2024-03-17 15:42:48 浏览: 13
以下是实现沙漏打印的C语言函数:
```c
void printHourglass(int n, char oddTimeChar, char oddStringChar) {
int i, j; // 循环变量
int spaceCount = 0; // 空格数
int lineCount; // 每行字符数
int middleLine = (n + 1) / 2; // 中间行
// 打印上半部分
for (i = 1; i <= middleLine; i++) {
// 计算空格数和每行字符数
spaceCount = i - 1;
lineCount = n - 2 * spaceCount;
// 打印空格
for (j = 1; j <= spaceCount; j++) {
printf(" ");
}
// 打印字符
for (j = 1; j <= lineCount; j++) {
if (i % 2 == 1) {
printf("%c", oddTimeChar);
} else {
printf("%c", oddStringChar);
}
}
// 换行
printf("\n");
}
// 打印下半部分
for (i = middleLine + 1; i <= n; i++) {
// 计算空格数和每行字符数
spaceCount = n - i;
lineCount = n - 2 * spaceCount;
// 打印空格
for (j = 1; j <= spaceCount; j++) {
printf(" ");
}
// 打印字符
for (j = 1; j <= lineCount; j++) {
if (i % 2 == 1) {
printf("%c", oddTimeChar);
} else {
printf("%c", oddStringChar);
}
}
// 换行
printf("\n");
}
}
```
该函数接收三个参数:n表示沙漏的大小,oddTimeChar表示奇数行使用的字符,oddStringChar表示偶数行使用的字符。
该函数先计算出每行的空格数和字符数,然后分别打印空格和字符。奇数行使用oddTimeChar,偶数行使用oddStringChar。上半部分从第1行打印到中间行,下半部分从中间行+1行打印到第n行。