Xử lý hiển thị ký tự cơ bản
Để bắt đầu với ngôn ngữ C, chúng ta thường làm quen với hàm printf để xuất dữ liệu ra màn hình. Dưới đây là ví dụ về việc sử dụng các ký tự đơn giản để tạo hình khối cơ bản:
#include <stdio.h>
int main() {
printf(" O \n");
printf(" <H> \n");
printf(" I I \n");
return 0;
}
Kiểm tra điều kiện hình thành tam giác
Một bài toán phổ biến là xác định xem ba độ dài nhập vào có thể tạo thành một tam giác hay không. Điều kiện cần và đủ là tổng của hai cạnh bất kỳ phải luôn lớn hơn cạnh còn lại.
#include <stdio.h>
int main() {
float canh1, canh2, canh3;
printf("Nhap ba canh của tam giac: ");
scanf("%f %f %f", &canh1, &canh2, &canh3);
if (canh1 + canh2 > canh3 && canh1 + canh3 > canh2 && canh2 + canh3 > canh1) {
printf("Hop le: Co the tao thanh tam giac.\n");
} else {
printf("Khong hop le: Khong the tao thanh tam giac.\n");
}
return 0;
}
Xử lý bộ đệm bàn phím với getchar()
Khi sử dụng các hàm nhập ký tự liên tiếp, ký tự xuống dòng (Enter) thường bị sót lại trong bộ đệm. Việc sử dụng một hàm getchar() trung gian giúp loại bỏ ký tự dư thừa này.
#include <stdio.h>
#include <ctype.h>
int main() {
char confirm1, confirm2;
printf("Ban da on tap ly thuyet chua? (y/n): ");
confirm1 = getchar();
// Loai bo ky tu xuong dong con sot lai trong bo dem
getchar();
printf("Ban da thuc hanh code chua? (y/n): ");
confirm2 = getchar();
if ((confirm1 == 'y' || confirm1 == 'Y') && (confirm2 == 'y' || confirm2 == 'Y')) {
printf("\nRat tot, hay tiep tuc phat huy!\n");
} else {
printf("\nBan can no luc hon nua.\n");
}
return 0;
}
Định dạng nhập liệu phức hợp
Hàm scanf cho phép đọc nhiều loại dữ liệu cùng lúc. Tuy nhiên, lập trình viên cần lưu ý cách phân tách các giá trị (khoảng trắng, dấu phẩy) trong chuỗi định dạng.
#include <stdio.h>
int main() {
int n1, n2, n3;
char s1, s2, s3;
double d1, d2;
// Nhap so nguyen
scanf("%d%d%d", &n1, &n2, &n3);
printf("So nguyen: %d, %d, %d\n", n1, n2, n3);
// Xoa bo dem truoc khi nhap ky tu
while(getchar() != '\n');
// Nhap ky tu lien nhau
scanf("%c%c%c", &s1, &s2, &s3);
printf("Ky tu: %c, %c, %c\n", s1, s2, s3);
// Nhap so thuc phan tach boi dau phay
scanf("%lf,%lf", &d1, &d2);
printf("So thuc: %.2f, %.2f\n", d1, d2);
return 0;
}
Tính toán thời gian và lũy thừa
Chương trình dưới đây minh họa cách đổi đơn vị giây sang năm và sử dụng thư viện math.h để tính toán lũy thừa.
#include <stdio.h>
#include <math.h>
int main() {
// Tinh 1 ty giay sang nam
double giay = 1e9;
int nam = (int)(giay / (365 * 24 * 3600));
printf("1 ty giay xap xi bang %d nam.\n", nam);
// Tinh luy thua voi vong lap nhap lieu
double co_so, ket_qua;
printf("Nhap co so de tinh luy thua 365: ");
while (scanf("%lf", &co_so) != EOF) {
ket_qua = pow(co_so, 365);
printf("%.2f mu 365 = %.2f\n\n", co_so, ket_qua);
}
return 0;
}
Chuyển đổi nhiệt độ và diện tích tam giác
Ví dụ cuối cùng thực hiện chuyển đổi thang đo nhiệt độ từ Celsius sang Fahrenheit và tính diện tích tam giác bằng công thức Heron.
#include <stdio.h>
#include <math.h>
int main() {
// Chuyen doi do C sang do F
float celsius, fahrenheit;
printf("Nhap do C: ");
if (scanf("%f", &celsius) != EOF) {
fahrenheit = (celsius * 9 / 5) + 32;
printf("%.2f do C tuong ung voi %.2f do F\n", celsius, fahrenheit);
}
// Tinh dien tich tam giac (Heron)
int a, b, c;
double p, area;
printf("\nNhap 3 canh tam giac: ");
if (scanf("%d %d %d", &a, &b, &c) != EOF) {
p = (a + b + c) / 2.0;
area = sqrt(p * (p - a) * (p - b) * (p - c));
printf("Dien tich tam giac: %.3f\n", area);
}
return 0;
}