阶段复习

2024/2/23

# 1. 编写一个函数 isPalindrome,接受一个字符串作为参数,并判断该字符串是否为回文字符串(即正着读和反着读都一样)。然后在 main() 函数中输入一个字符串,调用 isPalindrome 函数判断是否为回文字符串,并输出相应的提示信息

请输入字符串:
// 输入
main
// 输出
输入的不是回文字符串
// 输入
mainniam
// 输出
输入的是回文字符串
  • 历史解析
    • 题解思路正确,本题主要想让考生使用遍历的方式对string类型进行字符反转,不过直接调用algorithm也可以,总体没有问题💯

 





























// 不使用 algorithm 手动遍历参考
#include <iostream>
#include <string>
using namespace std;
// 自定义函数 reverseString,用于反转字符串
string reverseString(const string& str) {
    string reversed;
    for (int i = str.length() - 1; i >= 0; --i) {
        reversed += str[i];
    }
    return reversed;
}
// isPalindrome 函数用于判断字符串是否为回文字符串
bool isPalindrome(const string& str) {
    string reversed = reverseString(str);
    return str == reversed;
}
int main() {
    string input;
    cout << "请输入字符串: ";
    getline(cin, input);
    if (isPalindrome(input)) {
        cout << "输入的是回文字符串" << endl;
    } else {
        cout << "输入的不是回文字符串" << endl;
    }
    return 0;
}

# 2. 编写一个程序,生成一个包含 10 个随机整数的数组,然后使用冒泡排序算法对数组进行排序。最后输出排序后的数组

小提示:如果忘记如何生成随机数,可以使用文档查找功能早期的随机数生成案例

  • 历史解析
    • 题解思路正确,本题主要考查使用冒泡排序算法对数组进行排序,没有问题💯

# 3. 编写一个程序,读取一个文本文件(例如 input.txt),统计读取的文件中每个单词出现的次数,并将结果写入另一个文本文件(例如 output.txt)。要求忽略单词的大小写,并且输出按单词出现次数降序排列

//  input.txt 内容: 随机单词,且每个单词都会单独占用一行,具体求解时自定义 input.txt 满足其条件即可
// 假设 input 内容:
smile
resume
Resume
// 则输出 output 内容:
resume
smile
  • 历史解析
    • 题解思路正确,本题主要考查文件操作以及数组排序,没有问题💯

 























































































// 简化版:去除了部分库引用参考
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
using namespace std;

// 将字符串转换为小写
string toLowerCase(const string& str) {
    string result = str;
    for (char& c : result) {
        if (c >= 'A' && c <= 'Z') {
            c = c - 'A' + 'a'; // 转换为小写
        }
    }
    return result;
}

// 自定义比较函数,用于排序
bool compare(const string& a, const string& b) {
    return a > b; // 按照单词从小到大排序
}

// 自定义排序函数
void mySort(vector<string>& vec) {
    for (size_t i = 0; i < vec.size() - 1; ++i) {
        for (size_t j = 0; j < vec.size() - i - 1; ++j) {
            if (compare(vec[j], vec[j + 1])) {
                string temp = vec[j];
                vec[j] = vec[j + 1];
                vec[j + 1] = temp;
            }
        }
    }
}


// 统计单词出现次数
void countWords(const string& filename, vector<string>& wordList) {
    ifstream infile(filename);
    if (!infile.is_open()) {
        cerr << "Unable to open file: " << filename << endl;
        return;
    }
    string word;
    while (infile >> word) {
        string lowerCaseWord = toLowerCase(word);
        bool found = false;
        for (const auto& w : wordList) {
            if (w == lowerCaseWord) {
                found = true;
                break;
            }
        }
        if (!found) {
            wordList.push_back(lowerCaseWord);
        }
    }
    infile.close();
}

// 写入单词到文件
void writeWords(const vector<string>& wordList, const string& filename) {
    ofstream outfile(filename);
    if (!outfile.is_open()) {
        cerr << "Unable to open file: " << filename << endl;
        return;
    }
    // 自定义排序函数
    vector<string> sortedWordList = wordList;
    mySort(sortedWordList);
    // 写入文件
    for (const auto& w : sortedWordList) {
        outfile << w << endl;
    }
    outfile.close();
}

int main() {
    vector<string> wordList;
    // 统计单词出现次数
    countWords("input.txt", wordList);
    // 写入单词到文件
    writeWords(wordList, "output.txt");
    return 0;
}
上次更新: 2024-10-19 10:01:51