NỘI DUNG:
Ôn tập các kiến thức liên quan đến xử lý chuỗi trong C
Nên tìm hiểu
lý thuyết trước khi xem phần này
Bài 1:
Viết chương trình dạng hàm với các yêu cầu:
Viết chương trình dạng hàm với các yêu cầu:
Input: Nhập vào chuỗi bất kỳ từ bàn phím
Output:
71.1 Đếm các ký tự là các chữ cái a-z, A-Z trong chuỗi vừa nhập
71.2 Đếm các ký tự số 0-9 trong chuỗi vừa nhập
71.3 Đếm có bao nhiêu ký tự 'h' trong chuỗi (không phân biệt hoa thường)
71.4 Tìm ký tự 'a' trong chuỗi, nếu có trả về trị trí ký đầu tiên tìm
thấy
Bài 2:
Xây dựng chương trình đăng nhập bằng username và password
Input: Nhập username và password (gợi ý: tạo chuỗi userSys và passSys để
so sánh chuỗi vừa nhập)
Output:
72.1 Hiển thị thông báo đăng nhập thành công nếu thông tin đăng nhập
đúng ngược yêu cầu nhập lại cho đến khi đúng
72.2
- Hiển thị thông báo đăng nhập thành công nếu thông tin đăng nhập đúng
- Ngược lại thông báo đăng nhập KHÔNG thành công nếu như nhập sai 3 lần.
THỰC HIỆN:
Bài 1:
Viết chương trình dạng hàm với các yêu cầu:
Xong!
Bài 1:
Viết chương trình dạng hàm với các yêu cầu:
Input: Nhập vào chuỗi bất kỳ từ bàn phím
Output:
- Bài 71.1
- Bài 71.2
- Bài 71.3 Cách-Xử lý ký tự
- Bài 71.3 Cách-Xử lý chuỗi trước
- Bài 71.4
Đếm các ký tự là các chữ cái a-z, A-Z trong chuỗi vừa nhập
#include<stdio.h>
// Đếm các ký tự là các chữ cái a-z, A-Z trong chuỗi vừa nhập
int chuCai(char c){
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') ) return 1;
else return 0;
}
int demChuCai_aZ(char s[]){
int i = 0;
int dem = 0;
while (s[i] != '\0'){
if (chuCai(s[i])) dem ++;
i++;
}
return dem;
}
int main(){
char a[100];
printf("\nNhap vao chuoi: ");
fflush(stdin);
gets(a);
printf("\nCo '%d' CHU CAI trong chuoi '%s'", demChuCai_aZ(a), a);
}
Đếm các ký tự số 0-9 trong chuỗi vừa nhập
#include<stdio.h>
// Đếm các ký tự số 0-9 trong chuỗi vừa nhập
int kyTuSo(char c){
if ((c >= '0' && c <= '9') ) return 1;
else return 0;
}
int demKyTu_09(char s[]){
int i = 0;
int dem = 0;
while (s[i] != '\0'){
if (kyTuSo(s[i])) dem ++;
i++;
}
return dem;
}
int main(){
char a[100];
printf("\nNhap vao chuoi: ");
fflush(stdin);
gets(a);
printf("\nCo '%d' KY TU SO trong chuoi '%s'", demKyTu_09(a), a);
}
Đếm có bao nhiêu ký tự 'h' trong chuỗi (không phân biệt hoa
thường)
#include<stdio.h>
// Đếm có bao nhiêu ký tự 'h' trong chuỗi (không phân biệt hoa thường)
char inHoaKyTu(char c){
if (c >= 'a' && c <= 'z') c -= 32;
return c;
}
char inThuongKyTu(char c){
if (c >= 'A' && c <= 'Z') c += 32;
return c;
}
int demKyTu(char s[], char c){
int i = 0;
int dem = 0;
while (s[i] != '\0'){
if ( inHoaKyTu(s[i]) == inHoaKyTu(c)) dem ++;
// if ( inThuongKyTu(s[i]) == inThuongKyTu(c)) dem ++;
i++;
}
return dem;
}
int main(){
char c;
c = 'h'; // thay ký tự cần tìm vào chổ này
char a[100];
printf("\nNhap vao chuoi: ");
fflush(stdin);
gets(a);
printf("\nCo '%d' KY TU '%c' trong chuoi '%s'", demKyTu(a, c), c, a);
}
Cách-Xử lý chuỗi trước
#include<stdio.h>
#include<string.h>
char inHoaKyTu(char c){
if (c >= 'a' && c <= 'z') c -= 32;
return c;
}
char* inHoaChuoi(char s[]){
int i = 0;
while (s[i] != '\0'){
s[i] = inHoaKyTu(s[i]);
i++;
}
return s;
}
char inThuongKyTu(char c){
if (c >= 'A' && c <= 'Z') c += 32;
return c;
}
char* inThuongChuoi(char s[]){
int i = 0;
while (s[i] != '\0'){
s[i] = inThuongKyTu(s[i]);
i++;
}
return s;
}
int demKyTu(char s[], char c){
// xử lý chuỗi trước sau đó mới so sanh
int i = 0;
int dem = 0;
/*
Hàm tự định nghĩa
*/
s = inHoaChuoi(s); c = inHoaKyTu(c);
// s = inThuongChuoi(s); c = inThuongKyTu(c);
/*
sử dụng hàm đã xây dựng trong thư viện string.h
*/
// s = strlwr(s); c = inThuongKyTu(c);
while (s[i] != '\0'){
if ( s[i] == c) dem ++;
i++;
}
return dem;
}
int main(){
char c;
c = 'h'; // thay ký tự cần tìm vào chổ này
char a[100];
printf("\nNhap vao chuoi: ");
fflush(stdin);
gets(a);
printf("\nCo '%d' KY TU '%c' trong chuoi '%s'", demKyTu(a, c), c, a);
}
Tìm kiếm ký tự trong chuỗi, nếu có trả về trị trí ký đầu tiên
tìm thấy
#include<stdio.h>
// tìm kiếm ký tự trong chuỗi, nếu có trả về trị trí ký đầu tiên tìm thấy
char inHoaKyTu(char c){
if (c >= 'a' && c <= 'z') c -= 32;
return c;
}
char inThuongKyTu(char c){
if (c >= 'A' && c <= 'Z') c += 32;
return c;
}
int timViTriKyTu(char s[], char c){
int i = 0;
int dem = 0;
while (s[i] != '\0'){
if ( inHoaKyTu(s[i]) == inHoaKyTu(c)) return i;
i++;
}
return dem;
}
int main(){
char c;
c = 'a'; // thay ký tự cần tìm
char a[100];
printf("\nNhap vao chuoi: ");
fflush(stdin);
gets(a);
if (timViTriKyTu(a, c)) {
printf("\nKy tu '%c' nam vi tri '%d' trong chuoi '%s'", c, timViTriKyTu(a, c), a);
} else {
printf("\nKhong tim thay '%c' trong chuoi '%s'", c, a);
}
}
Bài 2:
Xây dựng chương trình đăng nhập bằng username và password
Input: Nhập username và password (gợi ý: tạo chuỗi userSys và
passSys để so sánh chuỗi vừa nhập)
Output:
- Bài 72.1
- Bài 72.2
Hiển thị thông báo đăng nhập thành công nếu thông tin đăng nhập
đúng ngược yêu cầu nhập lại cho đến khi đúng
#include<stdio.h>
#include<string.h>
// Hiển thị thông báo đăng nhập thành công nếu thông tin đăng nhập đúng ngược yêu cầu nhập lại cho đến khi đúng
int main(){
char user[100], pass[100];
char userSys[] = "admin";
char passSys[] = "123";
int dem = 0;
do {
printf ("Nhap vao user: "); gets(user);fflush(stdin);
printf ("Nhap vao pass: "); gets(pass);
}while (strcmp(user, userSys) != 0 || strcmp(pass, passSys) != 0 );
printf("\nDang nhap THANH CONG!");
}
- Hiển thị thông báo đăng nhập thành công nếu thông tin đăng
nhập đúng
- Ngược lại thông báo đăng nhập KHÔNG thành công nếu như nhập
sai 3 lần
#include<stdio.h>
#include<string.h>
int main(){
/*
- Hiển thị thông báo đăng nhập thành công nếu thông tin đăng nhập đúng
- Ngược lại thông báo đăng nhập KHÔNG thành công nếu như nhập sai 3 lần
*/
char user[100], pass[100];
char userSys[] = "admin";
char passSys[] = "123";
int dem = 0;
int trangThai = 1;
do {
printf ("Nhap vao user: "); gets(user);fflush(stdin);
printf ("Nhap vao pass: "); gets(pass);
dem ++;
if ((strcmp(user, userSys) != 0 || strcmp(pass, passSys) != 0) && dem < 3 ){
printf("\nBan da dang nhap sai -> NHAP LAI!\n");
}
if (dem == 3) { // cho phép đăng nhập sai 3 lần
trangThai = 0;
printf("\nBan da dang nhap sai %d lan!", dem);
break;
}
}while (strcmp(user, userSys) != 0 || strcmp(pass, passSys) != 0 );
if (trangThai == 1) printf("\nDang nhap THANH CONG!");
else printf("\nDang nhap THAT BAI!");
}
Xong!