6-6 显示菱形(递归版)请编写函数,显示菱形。void Diamond(int height, char symbol); 说明:参数 height 为菱形的高,symbol 为显示字符。函数将在屏幕上显示高度和底宽为 height 由字符 symbol 组成的菱形。若 height 为偶数,或者小于等于 0,则不输出。 提示:需要利用前面作业中的 Show 函数、IsOdd 函数或 IsEven 函数,此外需要增加自用的内部函数。#include <stdio.h> int IsOdd(int number); int IsEven(int number); void Show(int number, char symbol); void Diamond(int height, char symbol); int main() { int n; char s; scanf("%d %c", &n, &s); Diamond(n, s); return 0; } ...... /* 你提交的代码将被嵌在这里 */输入样例2 5 @ 输出样例2 @ @@@ @@@@@ @@@ @ 要求:不得使用循环语句。
时间: 2024-01-25 14:04:31 浏览: 149
下面是递归实现的代码:
```c
#include <stdio.h>
int IsOdd(int number);
int IsEven(int number);
void Show(int number, char symbol);
void Diamond(int height, char symbol);
int main() {
int n;
char s;
scanf("%d %c", &n, &s);
Diamond(n, s);
return 0;
}
// 判断奇数
int IsOdd(int number) {
if (number % 2 == 1) {
return 1;
} else {
return 0;
}
}
// 判断偶数
int IsEven(int number) {
if (number % 2 == 0) {
return 1;
} else {
return 0;
}
}
// 显示若干个字符
void Show(int number, char symbol) {
if (number <= 0) {
return;
}
printf("%c", symbol);
Show(number - 1, symbol);
}
// 显示菱形
void Diamond(int height, char symbol) {
if (height <= 0 || IsEven(height)) {
return;
}
// 显示上半部分
int half = height / 2 + 1; // 上半部分的高度
int space = half - 1; // 空格数
int star = 1; // 星号数
Diamond(half - 1, symbol); // 递归显示上半部分的菱形
Show(space, ' '); // 显示前空格
Show(star, symbol); // 显示星号
printf("\n");
Diamond(half - 1, symbol); // 递归显示上半部分的菱形
// 显示下半部分
space = 1; // 空格数
star = height - 2; // 星号数
Diamond(half - 1, symbol); // 递归显示下半部分的菱形
Show(space, ' '); // 显示前空格
Show(star, symbol); // 显示星号
printf("\n");
Diamond(half - 1, symbol); // 递归显示下半部分的菱形
}
```
阅读全文