C语言请编写递归函数,重复显示字符。 函数原型 void ShowHollow(int number, char symbol, int hollow); 说明:参数 number 为重复次数,symbol 为显示字符,hollow 为空心标记。若 hollow 为 0(假),函数将在屏幕上重复显示 number 个 symbol 字符。若 hollow 为 1(真),则输出的 number 个字符中,只有首字符和末字符为 symbol 字符,中间的字符均为空格(即空心)。若 number 小于等于 0,则不输出。 要求:不要使用循环语句。 提示:可增加自用的内部函数。 裁判程序 #include <stdio.h> void ShowHollow(int number, char symbol, int hollow); int main() { int n, h; char s; scanf("%d %c %d", &n, &s, &h); ShowHollow(n, s, h); putchar('\n'); return 0; }
时间: 2024-03-26 14:34:18 浏览: 81
以下是递归函数的实现:
```
#include <stdio.h>
// 声明内部递归函数
void ShowHollowInternal(int current, int number, char symbol, int hollow);
void ShowHollow(int number, char symbol, int hollow) {
// 如果 number 不大于 0,则不输出
if (number <= 0) {
return;
}
// 输出第一个字符
putchar(symbol);
// 如果 number 大于 1,则需要输出空心部分
if (number > 1) {
// 如果是空心,则输出空格
if (hollow) {
ShowHollowInternal(2, number - 1, ' ', 0);
}
// 如果不是空心,则输出相同的字符
else {
ShowHollowInternal(2, number - 1, symbol, 0);
}
}
// 如果 number 大于 1,则再输出最后一个字符
if (number > 1) {
putchar(symbol);
}
// 最后换行
putchar('\n');
}
void ShowHollowInternal(int current, int number, char symbol, int hollow) {
if (current > number) {
return;
}
// 如果是空心,则只有首尾字符为 symbol,其他为 ' '
if (hollow && current > 2 && current < number) {
putchar(' ');
}
else {
putchar(symbol);
}
ShowHollowInternal(current + 1, number, symbol, hollow);
}
```
这样,程序就可以根据输入的参数重复显示字符了。
阅读全文