Các Bài Tập Lập Trình C và Giải Thích

Bài Tập 1: Vẽ Hình Người

Chương trình C này thực hiện in ra các ký tự để tạo thành hình người đơn giản.


#include <stdio.h>

int main() {
    printf("  O  \n");
    printf("<H>\n");
    printf(" I I \n");
    printf("  O  \n");
    printf("<H>\n");
    printf(" I I \n");
    return 0;
}
  

Chương trình C này thực hiện in ra hai hình người đơn giản.


#include <stdio.h>

int main() {
    printf("  O       O  \n");
    printf("<H>     <H>\n");
    printf(" I I     I I \n");
    return 0;
}
  

Bài Tập 2: Kiểm Tra Tam Giác

Chương trình này nhận ba độ dài cạnh từ người dùng và xác định xem chúng có thể tạo thành một tam giác hay không, dựa trên bất đẳng thức tam giác.


#include <stdio.h>

int main() {
    double sideA, sideB, sideC;

    scanf("%lf%lf%lf", &sideA, &sideB, &sideC);

    if (sideA + sideC > sideB && sideA + sideB > sideC && sideB + sideC > sideA) {
        printf("Co the tao thanh tam giac\n");
    } else {
        printf("Khong the tao thanh tam giac\n");
    }

    return 0;
}
  

Bài Tập 3: Khảo Sát Thói Quen Học Tập

Chương trình này hỏi người dùng về thói quen học tập của họ và đưa ra phản hồi tương ứng.


#include <stdio.h>

int main() {
    char prepared_class, practiced_code;

    printf("Ban da chuan bi bai truoc, on bai sau moi buoi hoc chua? (y/n): ");
    prepared_class = getchar();
    // Xoa ky tu xuong dong con lai trong bo dem
    while (getchar() != '\n'); 

    printf("\nBan da thuc hanh code chua? (y/n): ");
    practiced_code = getchar();
    // Xoa ky tu xuong dong con lai trong bo dem
    while (getchar() != '\n');

    if ((prepared_class == 'y' || prepared_class == 'Y') && (practiced_code == 'y' || practiced_code == 'Y')) {
        printf("\nThanh cong roi, tiep tuc duy tri nhe:)\n");
    } else {
        printf("\nHay bat dau xay dung no nao\n");
    }

    return 0;
}
  

Giải thích dòng 9 (`while (getchar() != '\n');`): Khi người dùng nhập một ký tự (ví dụ: 'y') và nhấn Enter, ký tự xuống dòng (`\n`) cũng được đưa vào bộ đệm đầu vào. Nếu không xử lý ký tự xuống dòng này, lệnh `getchar()` tiếp theo sẽ đọc ngay ký tự xuống dòng đó thay vì chờ người dùng nhập liệu mới, dẫn đến việc biến `practiced_code` không nhận được giá trị mong muốn.

Bài Tập 4: Đọc Dữ Liệu Đầu Vào Đa Kiểu

Chương trình này minh họa cách đọc các loại dữ liệu khác nhau (số nguyên, ký tự, số thực) từ đầu vào chuẩn, bao gồm cả việc xử lý các ký tự thừa.


#include <stdio.h>

int main() {
    int int1, int2, int3;
    char char1, char2, char3;
    double double1, double2;

    // Doc ba so nguyen
    scanf("%d%d%d", &int1, &int2, &int3);
    printf("int1 = %d, int2 = %d, int3 = %d\n", int1, int2, int3);

    // Xoa ky tu xuong dong sau khi nhap so nguyen
    while (getchar() != '\n'); 

    // Doc ba ky tu
    scanf("%c%c%c", &char1, &char2, &char3);
    printf("char1 = %c, char2 = %c, char3 = %c\n", char1, char2, char3);

    // Xoa ky tu xuong dong sau khi nhap ky tu
    while (getchar() != '\n'); 

    // Doc hai so thuc voi dau phay phan cach
    scanf("%lf,%lf", &double1, &double2);
    printf("double1 = %f, double2 = %lf\n", double1, double2);

    return 0;
}
  

Bài Tập 5: Ước Lượng Số Năm Của 1 Tỷ Giây

Chương trình tính toán và hiển thị số năm tương ứng với 1 tỷ giây.


#include <stdio.h>
#include <math.h>

int main() {
    int years;
    // 1 ty giay / (60 giay/phut * 60 phut/gio * 24 gio/ngay * 365 ngay/nam)
    years = round(1000000000.0 / (60.0 * 60.0 * 24.0 * 365.0));
    printf("1 ty giay xap xi bang %d nam\n", years);
    return 0;
}
  

Bài Tập 6: Tính Lũy Thừa

Chương trình nhận một số thực và tính lũy thừa của nó với số mũ 365, hiển thị kết quả với hai chữ số thập phân.


#include <stdio.h>
#include <math.h>

int main() {
    double base_value, result;

    // Doc du lieu cho den khi ket thuc file hoac loi nhap
    while (scanf("%lf", &base_value) != EOF) {
        result = pow(base_value, 365.0);
        printf("%.2f mu 365: %.2f\n", base_value, result);
        printf("\n");
    }

    return 0;
}
  

Bài Tập 7: Chuyển Đổi Nhiệt Độ C sang F

Chương trình này chuyển đổi nhiệt độ từ độ C sang độ F.


#include <stdio.h>

int main() {
    double celsius, fahrenheit;

    // Doc du lieu nhiet do C cho den khi ket thuc file
    while (scanf("%lf", &celsius) != EOF) {
        fahrenheit = (9.0 / 5.0) * celsius + 32.0;
        printf("Do C = %.2f, Do F = %.2f\n", celsius, fahrenheit);
    }

    return 0;
}
  

Bài Tập 8: Tính Diện Tích Tam Giác Heron

Chương trình này tính diện tích của một tam giác sử dụng công thức Heron khi biết độ dài ba cạnh.


#include <stdio.h>
#include <math.h>

int main() {
    double sideA, sideB, sideC;
    double semi_perimeter, area;

    // Doc du lieu do dai ba canh cho den khi ket thuc file
    while (scanf("%lf%lf%lf", &sideA, &sideB, &sideC) != EOF) {
        semi_perimeter = (sideA + sideB + sideC) / 2.0;
        area = sqrt(semi_perimeter * (semi_perimeter - sideA) * (semi_perimeter - sideB) * (semi_perimeter - sideC));
        // In ket qua, lam tron do dai canh va dinh kem 3 chu so thap phan cho dien tich
        printf("Canh a = %.0f, Canh b = %.0f, Canh c = %.0f, Dien tich = %.3f\n", sideA, sideB, sideC, area);
    }

    return 0;
}
  

Thẻ: C lập trình bài tập C scanf printf

Đăng vào ngày 11 tháng 10 lúc 02:34