重复显示字符(增强递归版)分数 10 全屏浏览题目 作者 李祥 单位 湖北经济学院 请编写递归函数,重复显示字符。 函数原型 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-22 11:39:25 浏览: 90
好的,我理解了你的要求。以下是对应的C++代码:
```c++
#include<iostream>
using namespace std;
void ShowHollow(int number, char symbol, int hollow);
int main() {
int n, h;
char s;
cin >> n >> s >> h;
ShowHollow(n, s, h);
cout << endl;
return 0;
}
void ShowHollow(int number, char symbol, int hollow) {
if (number <= 0) {
return;
}
if (number == 1) {
cout << symbol;
return;
}
if (hollow) {
if (number == 2) {
cout << symbol << symbol;
return;
}
cout << symbol;
ShowHollow(number - 2, ' ', hollow);
cout << symbol;
}
else {
cout << symbol;
ShowHollow(number - 1, symbol, hollow);
}
}
```
函数ShowHollow中,首先判断number是否小于等于0,如果是,则直接返回。如果number等于1,则输出一个symbol字符,返回。如果hollow为真,则递归输出首字符、中间的空格、末字符;如果hollow为假,则递归输出number - 1个symbol字符。
阅读全文