Buổi 4: Nhập/Xuất Dữ Liệu với cin và cout¶
I. Lý Thuyết¶
1. Luồng Dữ Liệu Vào/Ra Trong C++¶
Trong C++, dữ liệu di chuyển theo hai chiều:
- Xuất (Output): Chương trình → Màn hình → Dùng
cout << - Nhập (Input): Bàn phím → Chương trình → Dùng
cin >>
2. Lệnh Nhập Dữ Liệu với cin¶
Ví dụ:
Lưu ý:
cinđọc đến khoảng trắng đầu tiên. Nếu nhập"Nguyen Van An", chỉ lưu được"Nguyen". Để nhập cả dòng, dùnggetline(cin, tenBien).
3. Lệnh Xuất Dữ Liệu với cout Nâng Cao¶
Định dạng số thực (dùng thư viện <iomanip>):
#include <iomanip>
float x = 3.14159f;
cout << fixed << setprecision(2) << x << endl; // In: 3.14
cout << fixed << setprecision(4) << x << endl; // In: 3.1416
Căn lề cột với setw:
cout << setw(10) << "Ten" << setw(8) << "Diem" << endl;
cout << setw(10) << "An" << setw(8) << 9.5 << endl;
cout << setw(10) << "Binh" << setw(8) << 7.0 << endl;
4. Mẫu Chương Trình Nhập — Xử Lý — Xuất¶
Mọi bài toán lập trình đều theo 3 bước:
1. NHẬP → cin >> (đọc dữ liệu từ người dùng)
2. XỬ LÝ → Tính toán bằng các toán tử
3. XUẤT → cout << (in kết quả ra màn hình)
// Ví dụ: Tính diện tích hình chữ nhật
int dai, rong;
// 1. NHẬP
cout << "Nhap chieu dai: "; cin >> dai;
cout << "Nhap chieu rong: "; cin >> rong;
// 2. XỬ LÝ
int dienTich = dai * rong;
// 3. XUẤT
cout << "Dien tich: " << dienTich << endl;
5. Nhập Nhiều Biến¶
// Cách 1: Nhập từng biến
int a, b;
cout << "Nhap a: "; cin >> a;
cout << "Nhap b: "; cin >> b;
// Cách 2: Nhập cùng một lúc (cách nhau bằng dấu cách hoặc Enter)
int x, y;
cout << "Nhap x va y: ";
cin >> x >> y;
II. Ví Dụ Minh Họa¶
Ví dụ 1: Nhập tên và tuổi¶
#include <iostream>
#include <string>
using namespace std;
int main() {
string ten;
int tuoi;
cout << "Nhap ten cua ban: ";
cin >> ten;
cout << "Nhap tuoi cua ban: ";
cin >> tuoi;
cout << "Xin chao, " << ten << "!" << endl;
cout << "Ban " << tuoi << " tuoi." << endl;
return 0;
}
Ví dụ 2: Tính chu vi và diện tích hình chữ nhật¶
#include <iostream>
using namespace std;
int main() {
float dai, rong;
cout << "Nhap chieu dai: "; cin >> dai;
cout << "Nhap chieu rong: "; cin >> rong;
float chuVi = 2 * (dai + rong);
float dienTich = dai * rong;
cout << "--- Ket qua ---" << endl;
cout << "Chu vi : " << chuVi << endl;
cout << "Dien tich: " << dienTich << endl;
return 0;
}
✅ Kết quả (nhập: 8, 5)
Ví dụ 3: Tính điểm trung bình và xếp loại¶
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
float toan, van, anh;
cout << "Nhap diem Toan: "; cin >> toan;
cout << "Nhap diem Van : "; cin >> van;
cout << "Nhap diem Anh : "; cin >> anh;
float diemTB = (toan + van + anh) / 3.0f;
cout << fixed << setprecision(2);
cout << "Diem trung binh: " << diemTB << endl;
return 0;
}
✅ Kết quả (nhập: 8.5, 7.5, 9.0)
Ví dụ 4: Nhập họ tên đầy đủ bằng getline¶
#include <iostream>
#include <string>
using namespace std;
int main() {
string hoTen;
cout << "Nhap ho ten day du: ";
getline(cin, hoTen); // Đọc cả dòng kể cả khoảng trắng
cout << "Xin chao, " << hoTen << "!" << endl;
return 0;
}
Lưu ý: Nếu trước
getlinecó dùngcin >>, cần thêmcin.ignore()để bỏ ký tự\ncòn thừa trong buffer, tránhgetlinebị bỏ qua.
III. Bài Tập Thực Hành Tại Lớp¶
Bài 1: Nhập và in thông tin học sinh¶
Đề bài: Viết chương trình nhập tên (1 từ), tuổi, điểm từ bàn phím rồi in ra thẻ thông tin.
Phân tích đề
Các biến cần khai báo:
-
string ten— tên học sinh -
int tuoi— tuổi -
float diem— điểm số
Quy trình: Nhập lần lượt từng biến với lời nhắc rõ ràng → In ra thẻ
Output mẫu:
Gợi ý code
#include <iostream>
using namespace std;
int main() {
string ten;
int tuoi;
float diem;
cout << "Nhap ten : "; cin >> ten;
cout << "Nhap tuoi: "; cin >> tuoi;
cout << "Nhap diem: "; cin >> diem;
cout << "=== THONG TIN ===" << endl;
cout << "Ten : " << ten << endl;
cout << "Tuoi: " << tuoi << endl;
cout << "Diem: " << diem << endl;
cout << "=================" << endl;
return 0;
}
Bài 2: Tính chu vi và diện tích hình tròn¶
Đề bài: Nhập bán kính từ bàn phím, tính và in chu vi, diện tích hình tròn (PI = 3.14159). Kết quả hiển thị 2 chữ số thập phân.
Phân tích đề
Công thức:
-
Chu vi = 2 × PI × r
-
Diện tích = PI × r × r
Cần dùng: fixed << setprecision(2) từ thư viện <iomanip>
Output mẫu:
Gợi ý code
#include <iostream>
#include <iomanip>
using namespace std;
int main() {
const float PI = 3.14159f;
float r;
cout << "Nhap ban kinh: "; cin >> r;
float chuVi = 2 * PI * r;
float dienTich = PI * r * r;
cout << fixed << setprecision(2);
cout << "Chu vi : " << chuVi << endl;
cout << "Dien tich: " << dienTich << endl;
return 0;
}
Bài 3: Đổi nhiệt độ Celsius ↔ Fahrenheit¶
Đề bài: Nhập nhiệt độ Celsius từ bàn phím, chuyển đổi và in ra Fahrenheit. Công thức: F = C * 9/5 + 32.
Phân tích đề
Lưu ý: 9/5 = 1 (chia số nguyên!). Phải viết 9.0/5 hoặc 9.0f/5 để ra 1.8.
Output mẫu:
Gợi ý code
Bài 4: Tính tiền điện¶
Đề bài: Nhập số điện tiêu thụ (kWh). Giá điện 2.000 đồng/kWh. Tính tiền điện trước và sau thuế VAT 10%.
Phân tích đề
Công thức:
-
Tiền điện = số kWh × 2000
-
Thuế VAT = Tiền điện × 10%
-
Tổng = Tiền điện + Thuế VAT
Output mẫu:
Gợi ý code
#include <iostream>
using namespace std;
int main() {
int kWh;
cout << "Nhap so kWh tieu thu: "; cin >> kWh;
float tienDien = kWh * 2000.0f;
float vat = tienDien * 0.1f;
float tongTien = tienDien + vat;
cout << "Tien dien truoc thue: " << tienDien << endl;
cout << "Thue VAT (10%) : " << vat << endl;
cout << "Tong tien phai tra : " << tongTien << endl;
return 0;
}
IV. Bài Tập Về Nhà¶
Bài 1: Tính chu vi và diện tích tam giác đều¶
Đề bài: Nhập cạnh của tam giác đều. Tính và in chu vi. Tính diện tích theo công thức: S = (sqrt(3) / 4) * a * a (dùng sqrt từ thư viện <cmath>).
Phân tích đề
Cần thêm thư viện: #include <cmath> để dùng hàm sqrt()
Công thức:
-
Chu vi = 3 × cạnh
-
Diện tích = (√3 / 4) × cạnh²
Output mẫu:
Bài 2: Máy tính đơn giản¶
Đề bài: Nhập 2 số nguyên a, b từ bàn phím. In ra kết quả 5 phép tính: cộng, trừ, nhân, chia (số thực), chia lấy dư.
Phân tích đề
Các bước thực hiện:
-
Nhập
avàb -
Tính và in 5 phép toán
-
Với phép chia: dùng
(float)a / bđể ra số thực
Output mẫu:
Bài 3: Tính BMI¶
Đề bài: Nhập cân nặng (kg) và chiều cao (m). Tính và in chỉ số BMI. Công thức: BMI = canNang / (chieuCao * chieuCao). Hiển thị kết quả 2 chữ số thập phân.
Bài 4: Tính tiền gửi tiết kiệm¶
Đề bài: Nhập số tiền gốc (VND) và lãi suất (%/năm). Tính tiền lãi và tổng tiền sau 1 năm.
Phân tích đề
Công thức:
-
Tiền lãi = Tiền gốc × (lãi suất / 100)
-
Tổng tiền = Tiền gốc + Tiền lãi
Output mẫu:
V. Ghi Chú Quan Trọng¶
Lỗi hay gặp¶
| Lỗi | Nguyên nhân | Cách sửa |
|---|---|---|
Nhập số thực nhưng biến là int |
int x; cin >> x; nhap 3.5 → x = 3 |
Khai báo float x nếu cần số thực |
cin chỉ lấy 1 từ đầu tiên |
cin >> ten với input "Nguyen Van An" → ten = "Nguyen" |
Dùng getline(cin, ten) để lấy cả dòng |
Quên #include <iomanip> |
setprecision hoặc setw không hoạt động |
Thêm #include <iomanip> |
setprecision không hoạt động đúng |
Chưa có fixed trước |
Dùng cout << fixed << setprecision(2) |
Cú Pháp Quan Trọng¶
// Nhập dữ liệu
cin >> bien;
cin >> bien1 >> bien2 >> bien3;
// Xuất định dạng đặc biệt
#include <iomanip>
cout << fixed << setprecision(2) << soThuc; // 2 chữ số thập phân
cout << setw(10) << "Ten"; // Căn phải, độ rộng 10
// Nhập cả dòng (có khoảng trắng)
string hoTen;
getline(cin, hoTen);
VI. Ôn Tập Trắc Nghiệm¶
Kiểm tra kiến thức buổi học qua 15 câu trắc nghiệm: