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

题目

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

代码

#include <iostream>
#include <array>

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);
}

运行截图

在这里插入图片描述

题目

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

代码

#include <iostream>
#include <string>

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);
}

运行截图

在这里插入图片描述


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

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值