[CPP] Bài tập cơ bản về string

by | Aug 5, 2024 | C/C++, Ngôn ngữ lập trình | 0 comments

Dưới đây là 10 bài tập lập trình xử lý chuỗi (string) trong C++ dành cho học sinh THCS:

Bài tập 1: Đếm số ký tự trong chuỗi

Viết chương trình nhập vào một chuỗi và đếm số ký tự trong chuỗi đó.

Bài tập 2: Đảo ngược chuỗi

Viết chương trình nhập vào một chuỗi và in ra chuỗi đó theo thứ tự ngược lại.

Bài tập 3: Đếm số lần xuất hiện của ký tự

Viết chương trình nhập vào một chuỗi và một ký tự, đếm số lần xuất hiện của ký tự đó trong chuỗi.

Bài tập 4: Kiểm tra chuỗi đối xứng

Viết chương trình kiểm tra xem một chuỗi có phải là chuỗi đối xứng (palindrome) hay không.

Bài tập 5: Chuyển đổi chữ hoa và chữ thường

Viết chương trình nhập vào một chuỗi và chuyển đổi tất cả các ký tự chữ hoa thành chữ thường và ngược lại.

Bài tập 6: Đếm số từ trong chuỗi

Viết chương trình đếm số từ trong một chuỗi. Một từ được định nghĩa là một dãy ký tự không có khoảng trắng.

Bài tập 7: Tìm và thay thế ký tự

Viết chương trình nhập vào một chuỗi, một ký tự cần tìm và một ký tự thay thế. Thay thế tất cả các ký tự tìm thấy trong chuỗi bằng ký tự thay thế.

Bài tập 8: Tìm chuỗi con

Viết chương trình nhập vào hai chuỗi. Kiểm tra xem chuỗi thứ hai có phải là chuỗi con của chuỗi thứ nhất hay không.

Bài tập 9: Nối hai chuỗi

Viết chương trình nhập vào hai chuỗi và nối chúng lại thành một chuỗi duy nhất.

Bài tập 10: Tách chuỗi thành từ

Viết chương trình nhập vào một chuỗi và tách chuỗi đó thành các từ riêng lẻ, sau đó in ra từng từ trên một dòng mới.

Gợi ý mẫu cho một vài bài tập

Những bài tập trên giúp học sinh nắm vững cách xử lý chuỗi trong C++ và phát triển kỹ năng lập trình của mình.

Dưới đây là lời giải cho 10 bài tập xử lý chuỗi (string) trong C++:

Bài tập 1: Đếm số ký tự trong chuỗi

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    cout << "Nhap chuoi: ";
    getline(cin, str);

    cout << "So ky tu trong chuoi: " << str.length() << endl;
    return 0;
}

Bài tập 2: Đảo ngược chuỗi

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    cout << "Nhap chuoi: ";
    getline(cin, str);

    string reversedStr = "";
    for (int i = str.length() - 1; i >= 0; i--) {
        reversedStr += str[i];
    }

    cout << "Chuoi dao nguoc: " << reversedStr << endl;
    return 0;
}

Bài tập 3: Đếm số lần xuất hiện của ký tự

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    char ch;
    cout << "Nhap chuoi: ";
    getline(cin, str);
    cout << "Nhap ky tu can dem: ";
    cin >> ch;

    int count = 0;
    for (char c : str) {
        if (c == ch) count++;
    }

    cout << "So lan xuat hien cua ky tu '" << ch << "': " << count << endl;
    return 0;
}

Bài tập 4: Kiểm tra chuỗi đối xứng

#include <iostream>
#include <string>
using namespace std;

bool isPalindrome(string str) {
    int left = 0, right = str.length() - 1;
    while (left < right) {
        if (str[left] != str[right]) return false;
        left++;
        right--;
    }
    return true;
}

int main() {
    string str;
    cout << "Nhap chuoi: ";
    getline(cin, str);

    if (isPalindrome(str)) {
        cout << "Chuoi la chuoi doi xung" << endl;
    } else {
        cout << "Chuoi khong phai la chuoi doi xung" << endl;
    }
    return 0;
}

Bài tập 5: Chuyển đổi chữ hoa và chữ thường

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    cout << "Nhap chuoi: ";
    getline(cin, str);

    for (char &c : str) {
        if (isupper(c)) c = tolower(c);
        else if (islower(c)) c = toupper(c);
    }

    cout << "Chuoi sau khi chuyen doi: " << str << endl;
    return 0;
}

Bài tập 6: Đếm số từ trong chuỗi

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main() {
    string str;
    cout << "Nhap chuoi: ";
    getline(cin, str);

    istringstream iss(str);
    string word;
    int count = 0;
    while (iss >> word) {
        count++;
    }

    cout << "So tu trong chuoi: " << count << endl;
    return 0;
}

Bài tập 7: Tìm và thay thế ký tự

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str;
    char findChar, replaceChar;
    cout << "Nhap chuoi: ";
    getline(cin, str);
    cout << "Nhap ky tu can tim: ";
    cin >> findChar;
    cout << "Nhap ky tu thay the: ";
    cin >> replaceChar;

    for (char &c : str) {
        if (c == findChar) c = replaceChar;
    }

    cout << "Chuoi sau khi thay the: " << str << endl;
    return 0;
}

Bài tập 8: Tìm chuỗi con

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str, subStr;
    cout << "Nhap chuoi chinh: ";
    getline(cin, str);
    cout << "Nhap chuoi con: ";
    getline(cin, subStr);

    if (str.find(subStr) != string::npos) {
        cout << "Chuoi con nam trong chuoi chinh" << endl;
    } else {
        cout << "Chuoi con khong nam trong chuoi chinh" << endl;
    }
    return 0;
}

Bài tập 9: Nối hai chuỗi

#include <iostream>
#include <string>
using namespace std;

int main() {
    string str1, str2;
    cout << "Nhap chuoi thu nhat: ";
    getline(cin, str1);
    cout << "Nhap chuoi thu hai: ";
    getline(cin, str2);

    string concatenatedStr = str1 + " " + str2;
    cout << "Chuoi sau khi noi: " << concatenatedStr << endl;
    return 0;
}

Bài tập 10: Tách chuỗi thành từ

#include <iostream>
#include <string>
#include <sstream>
using namespace std;

int main() {
    string str;
    cout << "Nhap chuoi: ";
    getline(cin, str);

    istringstream iss(str);
    string word;
    while (iss >> word) {
        cout << word << endl;
    }

    return 0;
}

Những bài giải trên giúp học sinh nắm vững cách xử lý chuỗi trong C++ thông qua các bài tập thực tế và dễ hiểu.