C++设计一个程序,让用户输入一行句子,数出句子中有多少个单词并输出,再让用户输入一串数字表示单词重新排序的顺序(顺序从0开始),最后按用户设定的顺序来输出一行新的句子。要求所有数组都只能用new来定义。 编程要求 根据提示,在右侧编辑器补充代码,用户输入的句子里只包含字母和空格(句子末尾没有空格),以回车完成输入,该句子最多100个字符,句子里最多10个单词。用户输入的一串数字是正常表示单词顺序的,不用考虑异常情况。
时间: 2023-06-11 11:09:33 浏览: 590
以下您需要的程序代码:
```c
#include <iostream>
using namespace std;
int main() {
int *order = new int[10]; // 用new定义一个长度为10的整型数组,存储单词顺序
string sentence; // 存储用户输入的句子
string *words = new string[10]; // 用new定义一个长度为10的字符串数组,存储分割后的单词
int word_count = 0; // 记录单词个数
// 用户输入句子
getline(cin, sentence);
// 将句子分割成单词
for (int i = 0; i < sentence.length(); i++) {
if (sentence[i] == ' ') {
word_count++; // 找到一个空格,单词个数加1
} else {
words[word_count] += sentence[i]; // 将字符加到当前单词中
}
}
word_count++; // 最后一个单词后面没有空格,需要再加1
// 输出单词个数
cout << "There are " << word_count << " words in the sentence." << endl;
// 用户输入单词顺序
for (int i = 0; i < word_count; i++) {
cin >> order[i];
}
// 按用户设定的顺序输出单词
for (int i = 0; i < word_count; i++) {
cout << words[order[i]] << " ";
}
cout << endl;
// 释放动态分配的内存
delete[] order;
delete[] words;
return 0;
}
```
程序思路:
1. 用 `new` 定义一个长度为10的整型数组 `order`,用于存储单词顺序。
2. 用 `new` 定义一个长度为10的字符串数组 `words`,用于存储分割后的单词。
3. 用户输入句子,使用 `getline` 函数将整行输入读入到 `sentence` 变量中。
4. 遍历 `sentence`,将单词存储到 `words` 数组中。
5. 输出单词个数。
6. 用户输入单词顺序,将顺序存储到 `order` 数组中。
7. 按照用户设定的顺序输出单词。
8. 使用 `delete[]` 释放动态分配的内存。
阅读全文