Hàm so sánh 2 sô c++

Hàm strcmp() trong C được sử dụng để so sánh 2 chuỗi. Nếu hàm strcmp(str1, str2) trả về 0 thì 2 chuỗi bằng nhau, lớn hơn 0 thì chuỗi str1 lớn hơn chuỗi str2 và ngược lại nếu nhỏ hơn 0 thì chuỗi str1 nhỏ hơn str2.

Show

include

include

int main() { char str1[20], str2[20]; printf("Nhap chuoi 1: "); gets(str1); printf("Nhap chuoi 2: "); gets(str2); if (strcmp(str1, str2) == 0) { printf("2 chuoi bang nhau."); } else if (strcmp(str1, str2) > 0) { printf("Chuoi 1 lon hon chuoi 2"); } else { printf("Chuoi 1 nho hon chuoi 2"); } return 0; } Kết quả:

Nhap chuoi 1: HelloC Nhap chuoi 2: HelloC++ Chuoi 1 nho hon chuoi 2



Hàm so sánh 2 sô c++

Trên đây là tổng hợp 5 cách so sánh dữ liệu 2 cột trong excel. Đây đều là những thao tác đơn giản và tối ưu nhất mà Unica đã tổng hợp được nên hãy hãy lưu lại và áp dụng ngay để nhanh chóng tối ưu thời gian làm việc của mình. Để nâng cao kiến thức cũng như kỹ năng thực hành mời bạn đọc tham khảo các khóa tin học văn phòng trên trang Unica của chúng tôi nhé.

Bài viết này mình sẽ hướng dẫn các bạn sử dụng 3 hàm so sánh xâu thông dụng và cách tự xây dựng các hàm này cho riêng mình

NỘI DUNG :

  • Hàm strcmp()
  • Hàm strncmp()
  • Hàm strcmpi()
  • Video tutorial

strcmp

1. Hàm strcmp()

Hàm strcmp()

Để so sánh 2 xâu trong C thì bạn không thể sử dụng các toán tử so sánh mà phải dùng hàm, quy tắc so sánh 2 xâu là xét theo thứ tự từ điển.

Thứ tự từ điển được quyết định bởi mã ASCII, mã ASCII nhỏ hơn sẽ có thứ tự từ điển nhỏ hơn, ví dụ kí tự 'A' thì có thứ tự từ điển nhỏ hơn kí tự 'B'

Khi so sánh 2 xâu theo thứ tự từ điển thì ta lần lượt so sánh 2 kí tự ở cùng vị trí của 2 xâu

Cú pháp :

int strcmp(char *s, char *t)

Tham số : s và t là 2 con trỏ hoặc 2 mảng char[]

Giá trị trả về :

  • < 0 nếu s nhỏ hơn t theo từ điển
  • 0 nếu s giống t
  • \> 0 nếu s lớn hơn t theo từ điển

Trong 1 số trình biên dịch thì khi s < t sẽ trả về -1 và khi s > t sẽ trả về 1.

Ví dụ giá trị trả về khi so sánh 2 xâu bằng hàm strcmp

xâu sxâu tstrcmp(s, t)28tech28tech abc-128tech 28aech zzzz128tech28tech028tech28techabcd-1

Ví dụ :

include "stdio.h"

include "string.h"

include "ctype.h"

int main(){

char s[1000] = "28tech python";  
char t[1000] = "28tech java";  
char c[1000] = "28tech python";  
printf("%d\n", strcmp(s, t));   
if(strcmp(s, c) == 0){  
    printf("Hai xau ky tu giong nhau !\n");  
}  
return 0;  
}

Output :

1 Hai xau ky tu giong nhau !

Xây dựng hàm strcmp() :

Để xây dựng hàm này ta cần xét 2 kí tự ở cùng vị trí của 2 xâu, nếu gặp kí tự đầu tiên khác nhau thì dựa vào thứ tự từ điển của kí tự này để suy ra thứ tự từ điển của 2 xâu ban đầu

Nếu không có kí tự nào khác nhau ta so sánh tới chiều dài, nếu chiều dài cũng giống nhau thì 2 xâu bằng nhau theo thứ tự từ điển

Tôi nghĩ rằng đây là chương trình đơn giản đối với các bạn. Chúng ta so sánh hai biến số nguyên. Chúng ta sẽ nghiên cứu thuật toán trước, sau đó là mã giả và mã nguồn thực thi.

Thuật toán

Trước tiên, chúng ta sẽ nhìn thấy thuật toán từng bước một khi so sánh hai số nguyên.

BẮT ĐẦU

  • Bước 1: Nhập vào hai biến A và B
  • Bước 2: So sánh A có lớn hơn B hay không?
  • Bước 3: Nếu đúng thì in ra "A lớn hơn B"
  • Bước 4: Nếu sai thì in ra "A không lớn hơn B"

KẾT THÚC

Mời bạn xem sơ đồ thuật toán:

Hàm so sánh 2 sô c++

Mã giả

Chúng ta cúng xem mã giả của thuật toán

procedure sosanh(A, B)

IF a lớn hơn b IN RA "A lớn hơn B" ELSE IN RA "A không lớn hơn B" END IF

end procedure

Mã nguồn thực thi

Mã nguồn thực thi của chương trình:

include

int main() { int a, b; // Nhập giá trị a và b printf("Nhap gia tri cua A :"); scanf("%d", &a); printf("Nhap gia tri cua B :"); scanf("%d", &b); if(a > b)

  printf("a lon hon b");
else
  printf("a khong lon hon b");
return 0; }

Giả sử, người dùng nhập dữ liệu đầu vào:

a = 10, b = 5

thì kết quả như sau:

a lon hon b

Kết quả thực thi:

Hàm so sánh 2 sô c++