Bài tập chuỗi trong C++

Chuỗi (String) trong C/C++ là một mảng ký tự được kết thúc bởi \0 (ký tự null). Dưới đây là các bài tập C sử dụng hàm và không sử dụng hàm giúp bạn hiểu kiến thức cơ bản nhất về chuỗi. Các chương trình này xử lý các chuỗi dưới dạng như là một mảng các ký tự.

Bài tập chuỗi trong C++

1. Bài 01

Đề bài: Viết chương trình C++ để in một chuỗi ra màn hình.

Dưới đây là chương trình C++ để giải bài in chuỗi trong C++:

#include <iostream>
using namespace std;

int main() {
   char str[] = "Hello World";

   cout << str;
   cout << endl;

   return 0;
}

Chạy chương trình C++ trên cho kết quả như sau:

2. Bài 2

Đề bài: Viết chương trình C++ để in một chuỗi được nhập từ bàn phím ra màn hình.

Dưới đây là chương trình C++ để giải bài in chuỗi trong C:

#include <iostream>
using namespace std;
  
int main() {
    char name[50];
    // doc chuoi tu ban phim
    cout << "Nhap chuoi: "; gets(name);
    // hien thi chuoi
    cout << "Chuoi ban nhap la: " << name << endl;
    return 0;
}

Chạy chương trình C++ trên cho kết quả như sau:

3. Bài 03

Đề bài: Viết chương trình C++ để tìm độ dài của một chuỗi.

Dưới đây là chương trình C++ để giải bài tập tìm độ dài của môt chuỗi:

#include <iostream>
using namespace std;
  
int main() {
   // khoi tao chuoi s1
   char s1[] = "eLib.VN";
   int i = 0;
      
   // su dung vong lap while tinh do dai cua chuoi
   // '\0' la ky tu NULL ket thuc cua mot chuoi
   while(s1[i] != '\0') {
      i++;
   }
     
   cout << "Do dai cua chuoi " << s1 << " la: " << i << endl;
     
   return 0;
}

Lời giải (sử dụng hàm)

Bạn có thể sử dụng hàm strlen(str) để tìm độ dài của một chuỗi trong C.

Dưới đây là chương trình C++ sử dụng hàm để giải bài tập tìm độ dài của môt chuỗi:

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

int main() {
   char str[100];
   int len;
   
   cout << "\nNhap mot chuoi bat ky: ";
   gets(str);
   
   len = strlen(str);
   
   cout << "\nDo dai cua chuoi la: " << len << endl;
   return(0);
}
Chạy chương trình C++ trên cho kết quả như sau:

4. Bài 04

Đề bài: Viết chương trình C++ để sao chép chuỗi.

Cũng giống như sao chép mảng trong C, bạn sử dụng vòng lặp để duyệt qua từng ký tự trong chuỗi, sau đó sao chép vào trong chuỗi đích (chuỗi s2 chẳng hạn). Bạn cần lưu ý là chuỗi đích phải có độ dài bằng chuỗi ban đầu (chuỗi s1).

Lời giải (không sử dụng hàm)

Dưới đây là chương trình C++ để giải bài tập sao chép chuỗi trong C++:

#include <stdio.h>

int main() {
   char s1[] = "eLib.VN";    // khai bao mot chuoi
   char s2[10];                  // bien de luu chuoi sao chep

   int length = 0;

   // sao chep chuoi s1
   while(s1[length] != '\0') {
      s2[length] = s1[length];
      length++;
   }

   s2[length] = '\0';        // gia tri null, ket thuc chuoi

   printf("Chuoi s1 = %s \n", s1);
   printf("Chuoi s2 = %s \n", s2);

   return 0;
}

Lời giải (sử dụng hàm)

Bạn có thể sao chép nội dung từ chuỗi này sang chuỗi khác bởi sử dụng hàm strcpy(str2, str1) trong C. Hàm strcpy(str2, str1) nhận hai chuỗi làm tham số, trong đó: chuỗi str1 là chuỗi ban đầu, chuỗi str2 là chuỗi có nội dung sao chép từ chuỗi str1.

Dưới đây là chương trình C++ sử dụng hàm để giải bài tập sao chép chuỗi trong C:

#include<stdio.h>
#include<string.h>

int main() {
   char str1[100];
   char str2[100];
  
   printf("Nhap chuoi str1: ");
   gets(str1);
  
   strcpy(str2, str1);
   printf("\nChuoi sao chep la: %s", str2);
  
   return (0);
}

Chạy chương trình C++ trên cho kết quả như sau:

5. Bài 5

Đề bài: Viết chương trình C++ để tìm kiếm chuỗi con trong một chuỗi.

Yêu cầu bài tập là tìm kiếm một chuỗi con trong một chuỗi và đếm xem chuỗi con đó xuất hiện bao nhiêu lần.

Để giải bài tập C++ này, chúng ta cần sử dụng các vòng lặp cũng như cần nhớ kiểm tra điều kiện giá trị null (ký tự '\0').

Dưới đây là chương trình C++ để giải bài tập tìm kiếm chuỗi con trong một chuỗi trong C++:

#include <stdio.h>
#include <string.h>
  
int main() {
   char s1[] = "VietTuts hoc lap trinh online, hoc c, hoc c++, hoc java, ...";
   char s2[] = "hoc";
  
   int n = 0;
   int m = 0;
   int times = 0;
   // bien luu giu do dai cua chuoi can tim kiem
   int len = strlen(s2);
  
   while(s1[n] != '\0') {
  
      if(s1[n] == s2[m]) {    // neu ky tu dau tien la giong nhau
  
         // tiep tuc tim kiem
         while(s1[n] == s2[m]  && s1[n] !='\0') {
            n++;
            m++;
         }
  
         // Neu day ky tu nay co do dai bang chuoi tim kiem
         if(m == len && (s1[n] == ' ' || s1[n] == '\0')) {
  
            // Chuc mung ban da tim ra chuoi can tim
            times++;
         }
      } else {   // Neu ky tu dau tien khong giong nhau
         while(s1[n] != ' ') {    //bo qua, tiep tuc tim kiem tu tiep theo
            n++;
            if(s1[n] == '\0')
            break;
         }
      }
          
      n++;
      m=0;  // reset bien dem.
   }

   printf("Chuoi ban dau: %s", s1);
   if(times > 0) {
      printf("\nChuoi '%s' xuat hien %d lan\n", s2, times);
   }else {
      printf("\nChuoi '%s' khong xuat hien trong cau.\n", s2);
   }
  
   return 0;
}

Chạy chương trình C++ trên cho kết quả như sau:

Trên đây là một số bài tập tiêu biểu về chuỗi trong C++ mà eLib tổng hợp được. Hy vọng sẽ giúp bạn đọc củng cố lại kiến thức về chuỗi và vận dụng chúng vào những project lớn hơn. Chúc các bạn thành công.

Ngày:29/10/2020 Chia sẻ bởi:Chương

CÓ THỂ BẠN QUAN TÂM