1. Bài tập so sánh hai chuỗi với nhau bằng ngôn ngữ lập trình C

Bài tập này chúng ta sẽ sử dụng các kiến thức từ ngôn ngữ lập trình C như: cách nhập xuất chuỗi cơ bản trong ngôn ngữ lập trình C và dùng vòng lặp for để duyệt các ký tự trong chuỗi trong ngôn ngữ lập trinh C.

Yêu cầu của bài tập đưa ra cho chúng ta là so sánh hai chuỗi với nhau bằng ngôn ngữ lập trình C.

2. Lời giải

Để thực hiện bài toán này chúng ta cần có kiến thức cơ bản về ngôn ngữ lập trình C, các cách nhập xuất chuỗi cơ bản trong C và dùng vòng lặp for để duyệt các ký tự trong chuỗi trong ngôn ngữ lập trình C.

Các bước thực hiện yêu cầu của bài tập so sánh hai chuỗi với nhau bằng ngôn ngữ lập trình C như sau:

Bước 1: Ta khởi tạo hàm bool Sosanh(char x1[], char x2[]) dùng để so sánh hai chuỗi với nhau. Trong hàm, ta dùng if với điều kiện strlen(x1)!=strlen(x2) (nếu 2 chuỗi có độ dài khác nhau) thì trả về false; ngược lại ta sử dụng vòng lặp for bắt đầu từ int i=0, kết thúc khi i<strlen(x1) và mỗi lần lặp i tăng lên 1. Trong vòng lặp for ta dùng if với điều kiện x1[i]==x2[i] nếu thỏa mãn thì trả về true. Kết thúc lặp ta trả về false.

Bước 2: Trong hàm main khai báo biến char x1[100] và char x2[100] biến chứa ký thự ta sẽ nhập vào (tối đa 100 ký tự).

Bước 3: Nhập dữ liệu từ bàn phím gán vào hai biến x1 và x2. Rồi in biến x1 và x2 ra màn hình.

Bước 4: Ta dùng if với điều kiện nếu Sosanh(x1,x2)==true thì hai chuỗi giống nhau, ngược lại hai chuỗi khác nhau.

Bước 5: Chạy chương trình.

Chương trình giải bài tập so sánh hai chuỗi với nhau bằng ngôn ngữ lập trình C như sau:

#include <stdio.h> 
#include <string.h>
bool sosanh(char x1[], char x2[]){
    if(strlen(x1)!=strlen(x2)){//neu 2 chuoi co do dai khac nahu thì khac nhau
        return false;
    }else{
        for(int i=0; i< strlen(x1);i++){
            if(x1[i]==x2[i]){//neu x1[i]==x2[i] thì 2 chuoi giong nhau
                return true;
            }
        }
    }
    //còn lai 2 chuoi khac nhau
    return false;
}
int main(){ 
    char x1[100];// khai bao chuoi x1 có toi da 100 ky tu
    char x2[100];// khai bao chuoi x2 có toi da 100 ky tu
    printf("Nhap vao chuoi x1: "); 
    gets(x1);
    printf("Nhap vao chuoi x2: "); 
    gets(x2);
    printf("\nChuoi vua nhap la: \nx1 = %s\nx2 = %s", x1,x2);
    if(sosanh(x1,x2)==true){
        printf("\nHai chuoi giong nhau!");
    }else{
        printf("\nHai chuoi khac nhau!");
    }
}

Ví dụ tôi nhập 2 chuỗi x1= VietNam và x2=VietNam

Kết quả:

Nhap vao chuoi x1: VietNam
Nhap vao chuoi x2: VietNam

Chuoi vua nhap la:
x1 = VietNam
x2 = VietNam
Hai chuoi giong nhau!

Ngoài ra, trong ngôn ngữ lập trình C có một hàm có sẵn trong thư viện string.h là strcmp() dùng để so sánh hai chuỗi với nhau.

Chương trình giải bài tập so sánh hai chuỗi với nhau sử dụng hàm có sẵn trong ngôn ngữ lập trình C như sau:

#include <stdio.h> 
#include <string.h>
int main(){ 
    char x1[100];// khai bao chuoi x1 có toi da 100 ky tu
    char x2[100];// khai bao chuoi x2 có toi da 100 ky tu
    printf("Nhap vao chuoi x1: "); 
    gets(x1);
    printf("Nhap vao chuoi x2: "); 
    gets(x2);
    printf("\nChuoi vua nhap la: \nx1 = %s\nx2 = %s", x1,x2);
    if(strcmp(x1,x2)==0){
        printf("\nHai chuoi giong nhau!");
    }else{
        printf("\nHai chuoi khac nhau!");
    }
}

Ví dụ tôi nhập 2 chuỗi x1= HelloWorld và x2=HelloWorld

Kết quả:

Nhap vao chuoi x1: HelloWorld
Nhap vao chuoi x2: HelloWorld

Chuoi vua nhap la:
x1 = HelloWorld
x2 = HelloWorld
Hai chuoi giong nhau!

3. Tổng kết

Sau khi làm bài tập này các bạn cần phải hiểu và nắm được những kiến thức sau:

  • Cách nhập xuất chuỗi cơ bản trong ngôn ngữ lập trình C.
  • Cách sử dụng hàm strlen() trong C.
  • Cách sử dụng vòng lặp để duyệt qua các phần tử của chuỗi.
  • Cách so sánh hai chuỗi với nhau trong C.
  • Cách sử dụng hàm strcmp() trong C.