04073 C++程序设计(2019年版)第一章习题程序设计题答案
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(即初始化为第一个字符串为最长和最短的字符串),然后在读入字符串的过程中求和,及比较字符串的长度记录最长及最短字符串的索引。
声明:以上答案是本人自己做的解答,不保证答案的正确性和完整性,内容仅供学习交流参考。