C++大学教程(第九版)7.30 打印array对象 7.31 逆序打印字符串(递归练习题)

文章目录

  • 题目
  • 代码
  • 运行截图
  • 题目
  • 代码
  • 运行截图

题目

(打印array对象)编写一个递归函数printArray它以一个array对象一个开始下标和一个结束下标作为实参,不返回任何值并打印这个array对象。当开始下标和结束下标相等时,这个函数应该停止处理并返回。

代码

#include 
#include 

using namespace std;

const int arraySize = 15;
void printArray(array<int, arraySize>, int, int);

int main()
{
    array<int, arraySize> items = {1, 2, 3, 4, 5, 6, 7, 8, 5, 6};
    int begin, end;
    cout << "该array对象的数组长度为" << arraySize << endl;
    cout << "请输入需要打印的array对象的开始下标和结束下标:";
    cin >> begin >> end;
    printArray(items, begin, end);
    return 0;
}

void printArray(array<int, arraySize> arr, int a, int b)
{
    if (a < 0 || a > arraySize || b < a || b > arraySize)
    {
        return;
    }
    cout << arr[a] << " ";
    printArray(arr, a + 1, b);
}

运行截图

C++大学教程(第九版)7.30 打印array对象 7.31 逆序打印字符串(递归练习题)_第1张图片

题目

(逆序打印字符串)编写一个递归函数stringReverse,该函数以一个string对象和一个开始下标作为实参,逆序打印这个字符串且不返回任何值。当到达这个字符串的末尾时,函数应当停止处理并返回。请注意,像array对象一样,方括号运算符([])可用来迭代遍历一个字符串中的所有字符。

代码

#include 
#include 

using namespace std;

void stringReverse(string, int);

int main()
{
    string str;
    cout << "请输入需要逆序的字符串:";
    getline(cin, str);
    cout << "该字符串的长度是" << str.size() << endl;
    int begin;
    cout << "请输入从哪个下标开始逆序:";
    cin >> begin;

    stringReverse(str, begin);
    return 0;
}

void stringReverse(string str, int begin)
{ // 逆序字符串
    if (begin < 0 || begin >= str.size())
    {
        return;
    }
    cout << str[begin];
    stringReverse(str, begin - 1);
}

运行截图

C++大学教程(第九版)7.30 打印array对象 7.31 逆序打印字符串(递归练习题)_第2张图片


中间有几道题做了很久,暂时还没做出来,后续学习的更加完善后,会完善这些习题。

你可能感兴趣的:(C++大学教程,c++,开发语言)