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);
}
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).
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.