/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

[Tự Học Lập Trình C - Qua Các Bài Tập] COM108_Nhập Môn Lập Trình - Bài 7 - Chuỗi (String) Trong C - P2 - Ôn Tập

NỘI DUNG:
Ôn tập các kiến thức liên quan đến xử lý chuỗi trong C

YÊU CẦU:


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:
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:
Input: Nhập vào chuỗi bất kỳ từ bàn phím
Output:
Đế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:

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!

No comments:

Post a Comment

/*header slide*/