5.1编写一个程序,将从键盘输入的n个字符串保存在一个一维数组A中。在输入字符串之前,先输入n的值。要求,数组A需要动态申请空间,程序运行结束前再释放掉。

#include <iostream>

using namespace std;

int main() {
    int n;
    cin >> n;
    string *A = new string[n];
    for (int i = 0; i < n; ++i) {
        cin >> A[i];
    }
    delete []A;

}

本题目主要考察使用new动态申请内存,以及使用 delete[] 释放数组内存。

5.2 在题目1的基础上,输出n个字符中最长的和最短的串,计算n个串的平均长度并输出结果。

#include <iostream>

using namespace std;

int main() {

    int n, sum = 0;
    int lIndex = 0, sIndex = 0;
    double avg;
    cin >> n;
    string *A = new string[n];
    for (int i = 0; i < n; i++) {
        cin >> A[i];
        if (A[i].length() > A[lIndex].length()) lIndex = i; // 记录最长的字符串的索引
        if (A[i].length() < A[sIndex].length()) sIndex = i; // 记录最短的字符串的索引
        sum = sum + A[i].length();
    }
    avg = sum / (double) n;
    cout << avg << endl;
    cout << A[lIndex] << endl;
    cout << A[sIndex] << endl;
    delete []A;

}

解题思路:声明字符串长度的和sum,最长字符串的索引lIndex及最短字符串的索引sIndex,并设其值均为0(即初始化为第一个字符串为最长和最短的字符串),然后在读入字符串的过程中求和,及比较字符串的长度记录最长及最短字符串的索引。

声明:以上答案是本人自己做的解答,不保证答案的正确性和完整性,内容仅供学习交流参考。

标签: none

添加新评论