C++设计一个程序,让用户输入一行句子,数出句子中有多少个单词并输出,再让用户输入一串数字表示单词重新排序的顺序,最后按用户设定的顺序来输出一行新的句子。要求所有数组都只能用new来定义。
时间: 2023-06-14 17:03:23 浏览: 245
下面是您需要的程序,它实现了输入句子、数出单词数、重新排序单词并输出新句子的功能:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
// 输入句子
cout << "请输入一个句子:";
string sentence;
getline(cin, sentence);
// 数出单词数
int wordCount = 0;
for (int i = 0; i < sentence.length(); i++) {
if (sentence[i] == ' ') {
wordCount++;
}
}
wordCount++; // 最后一个单词没有空格,需要额外计算
cout << "该句子中共有 " << wordCount << " 个单词。" << endl;
// 输入单词排序顺序
cout << "请输入单词的排序顺序(用空格分隔):";
int* order = new int[wordCount];
for (int i = 0; i < wordCount; i++) {
cin >> order[i];
}
// 按顺序输出单词
int start = 0;
for (int i = 0; i < wordCount; i++) {
int end = sentence.find(' ', start);
if (end == string::npos) {
end = sentence.length();
}
string word = sentence.substr(start, end - start);
start = end + 1;
cout << word << " ";
}
cout << endl;
delete[] order; // 释放内存
return 0;
}
```
这个程序使用了 `string` 类型来存储用户输入的句子,使用 `new` 运算符来动态分配一个 `int` 数组来存储单词重新排序的顺序。程序先数出句子中单词的数量,然后让用户输入单词排序的顺序。最后按照用户输入的顺序输出单词。注意,输出单词的过程中,需要用 `substr` 函数来截取出每个单词。
阅读全文