
Bài tập về xử lý xâu trong C++: chuyển các ký tự in thường sang in hoa
Bài tập
Cho xâu s
được nhập từ bàn phím. Bạn hãy viết chương trình chuyển các ký tự in thường trong xâu s
thành in hoa và hiển thị xâu s
ra màn hình:
Ví dụ nếu bạn nhập s = "Dumv"
như bên dưới:
Dumv
Thì màn hình sẽ hiển thị ra:
DUMV
Lý thuyết
Về bản chất ký tự cũng chỉ là một số nguyên, việc bạn chuyển 1 ký tự từ in thường sang in hoa thực chất là chuyển đổi từ 1 số nguyên sang 1 số nguyên khác. Như đã được học, để hiển thị giá trị nguyên (mã ASCII) của một ký tự bạn có thể làm như sau:
#include<iostream>
using namespace std;
int main() {
cout << 'a' << " = " << (int)'a' << endl;
cout << 'b' << " = " << (int)'b' << endl;
cout << 'c' << " = " << (int)'c' << endl;
cout << 'd' << " = " << (int)'d' << endl;
cout << endl;
cout << 'A' << " = " << (int)'A' << endl;
cout << 'B' << " = " << (int)'B' << endl;
cout << 'C' << " = " << (int)'C' << endl;
cout << 'D' << " = " << (int)'D' << endl;
return 0;
}
Chương trình này sẽ hiển thị lên màn hình:
a = 97
b = 98
c = 99
d = 100
A = 65
B = 66
C = 67
D = 68
Có thể quan sát thấy giá trị của các ký tự in thường luôn bằng giá trị của các ký tự in hoa cộng với 32. Từ đó bạn có thể chuyển 1 ký tự từ in thường sang in hoa bằng cách trừ đi 32. Ví dụ chương trình:
#include<iostream>
using namespace std;
int main() {
char c = 'd' - 32;
cout << c;
return 0;
}
Sẽ hiển thị ra màn hình
D
Từ đó bạn có thể giải bài này bằng cách duyệt qua các ký tự và nếu ký tự đó là in thường thì trừ đi 32.
Nếu bạn vẫn chưa làm được bài này thì có thể xem hướng dẫn ở bên dưới.
Hướng dẫn
Code mẫu:
#include<iostream>
using namespace std;
int main() {
string s;
cin >> s;
for (int i = 0; i < s.size(); i++) {
if (s[i] >= 'a' && s[i] <= 'z') {
s[i] -= 32;
}
}
cout << s;
return 0;
}
Post Comment