Các thao tác cơ bản với mảng kí tự

May cho bạn là kiểu char nó có 1 byte. :smiling_imp:
Lỡ có trình biên dịch nào cho kiểu char có 2 byte thì…

3 Likes

Bài 1:

/*Chuyển tất cả các kí tự trong chuỗi thành dạng in hoa*/
#include<iostream>
#include<cstring>
// #include<string.h>
using namespace std;
int main() {
    char str[50];
//  gets_s(str);
    cin.getline(str,50); 
    cout << "Chuoi ki tu ban vua nhap la: " << endl;
    for (int i = 0; i <= strlen(str)-1; i++) { // Có kí tự kết thúc '\0' cuối cùng
        cout << str[i];
    }
    cout << endl;
    cout << "In hoa chuoi ki tu vua nhap: " << endl;
    for (int i = 0; i <= strlen(str)-1; i++) {
        cout << static_cast<char>(str[i] - 32); //Dung bang ma ASCII
    }
//  _strupr_s(str); // Hàm _strupr_s() được tích hợp trong C++ giúp biến đổi thành chuỗi in hoa nhanh hơn
//  cout << str;
    cout << endl;
    system("pause");
    return 0;
}

Bài 2:

/*Viết chương trình nhập vào một chuỗi kí tự str và một kí tự ch từ bàn phím, đếm trong chuỗi kí tự 
str có bao nhiêu lần xuất hiện kí tự ch mà bạn vừa nhập.*/
#include<iostream>
#include<cstdint>
using namespace std;
int main() {
    char str[50];
    cout << "Nhap chuoi ki tu: ";
    cin.getline(str, 50);
    cout << endl;
    cout << "Chuoi ki tu vua nhap la: ";
    cout << str << endl;
    char ch;
    cout << "Nhap vao ki tu ban muon tim: ";
    cin >> ch;
    int32_t count = 0;
    for (int32_t i = 0; i <= strlen(str) - 1; i++) {
        if (ch == str[i]) count++;
    }
    if (count == 0) cout << "Khong tim thay ki tu " << ch << " trong " << str << endl;
    else cout << "So lan xuat hien cua ki tu " << ch << " : " << count << endl;
    system("pause");
    return 0;
}

Hello bros, lại là mình đây. Các bros cho em ý kiến về code mình cần cải thiện gì với, em thấy chạy đáp án đúng, nhưng chưa phải là tối ưu! Rất cảm ơn bros, cảm ơn daynhauhoc!

1 Like

Chỗ strlen bản chất là phải chạy hết chuỗi mới biết dài bao nhiêu đó.

Thực ra chuỗi (ASCII thường) trong này không có lưu độ dài mà nó kết thúc bằng byte 0, nên ta đọc tới byte 0 rồi kết xuất thôi. Cái này là cơ bản 40 năm nay nên ko sợ nó đổi.

3 Likes
#include<iostream>
#include<cstdint>
#include<cstring>
using namespace std;
int main() {
    char id[] = "[email protected]";
    char pass_word[] = "yourpassword";
    char id1[50];
    char pass_word1[50];
    cout << "Your ID: ";
    cin.getline(id1, 50);
    cout << "\nYour password: ";
    cin.getline(pass_word1, 50);
    cout << endl;
    while (strcmp(id, id1) != 0 || strcmp(pass_word, pass_word1) !=0){
        cout << "Your entered ID or Password is incorrect. Please type again!" << endl;
        cout << "Your ID: ";
        cin.getline(id1, 50);
        cout << "\nYour password: ";
        cin.getline(pass_word1, 50);
        cout << endl;
    }
    cout << "Okey. Your account is correct. Keep going!" << endl;
    system("pause");
    return 0;
}

Code mình cũng ok bạn nhỉ?

Mình phân biệt được strlen() với sizeof().
Cơ mà bài này không nên dùng vòng lặp for mà dùng while kết hợp str[sizeof(str)-1]='\0'; hả bro?

1 Like
#include<iostream>
#include<cstring>
#include<ctime>
using namespace std;
int main() {
	srand(time(NULL));
	char str1[] = "keo";
	char str2[] = "bua";
	char str3[] = "bao";
	char choose[50];
	cout << "Oan tu ti ra cai gi ra cai nay: ";
	cin.getline(choose, 50);
	cout << "Lua chon cua ban la: " << choose << endl;
	int random = rand() % 3 + 1;
	char computer[50];
	switch (random) {
		case 1:
			strncpy_s(computer, str1, strlen(str1));
			cout << "Lua chon cua may tinh la: " << computer << endl;
			if (strcmp(choose, str2) == 0) cout << "Ban da thang may tinh!" << endl;
			else if (strcmp(choose, str3) == 0) cout << "Ban da thua may tinh!" << endl;
			break;
		case 2:
			strncpy_s(computer, str2, strlen(str2));
			cout << "Lua chon cua may tinh la: " << computer << endl;
			if (strcmp(choose, str1) == 0) cout << "Ban da thua may tinh!" << endl;
			else if (strcmp(choose, str3) == 0) cout << "Ban da thang may tinh!" << endl;
			break;
		case 3:
			strncpy_s(computer, str3, strlen(str3));
			cout << "Lua chon cua may tinh la: " << computer << endl;
			if (strcmp(choose, str1) == 0) cout << "Ban da thang may tinh!" << endl;
			else if (strcmp(choose, str2) == 0) cout << "Ban da thua may tinh!" << endl;
			break;
	}
	if (strcmp(choose, computer) == 0) cout << "Ban va may tinh hue nhau!" << endl;
	system("pause");
	return 0;
}

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?