Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Tính thể tích và diện tích cầu (sphere) trong C

Công thức toán học

Cầu (sphere) với bán kính r:

  • Thể tích: V = (4/3) × π × r³
  • Diện tích bề mặt: A = 4 × π × r²

Trong C: π ≈ 3.14159 hoặc M_PI từ <math.h>

Chương trình 1: Tính thể tích (bán kính cố định)

#include <stdio.h>

int main() {
    float theTich;
    int banKinh = 20;
    
    // Lưu ý: 4.0/3.0 để chia thực, không phải chia nguyên
    theTich = (4.0f / 3.0f) * 3.14159f * banKinh * banKinh * banKinh;
    
    printf("Ban kinh: %d\n", banKinh);
    printf("The tich cau: %.5f\n", theTich);
    
    return 0;
}

Kết quả

Ban kinh: 20
The tich cau: 33510.32164

Chương trình 2: Nhập bán kính, tính cả thể tích và diện tích

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

int main() {
    float r;
    float dienTich, theTich;
    
    printf("Nhap ban kinh cau: ");
    scanf("%f", &r);
    
    // Sử dụng M_PI từ math.h (cần compile với -lm)
    dienTich = 4.0f * M_PI * r * r;
    theTich  = (4.0f / 3.0f) * M_PI * r * r * r;
    
    printf("Dien tich be mat: %.3f\n", dienTich);
    printf("The tich:         %.3f\n", theTich);
    
    return 0;
}

Kết quả

Nhap ban kinh cau: 4
Dien tich be mat: 201.062
The tich:         268.083

Lưu ý quan trọng khi compile

// GCC
gcc ten_file.c -o ten_file -lm

// -lm: link thư viện math (libm) cho M_PI, pow(), sqrt()...

Bảng giá trị tham chiếu (π = 3.14159)

Bán kính (r) Diện tích (4πr²) Thể tích (4/3 πr³)
112.574.19
250.2733.51
5314.16523.60
101256.644188.79
205026.5533510.32

Các lỗi thường gặp

  • Chia nguyên: 4/3 = 1 (sai) → Dùng 4.0/3.0 hoặc 4.0f/3.0f
  • Thiếu -lm: Lỗi undefined reference to M_PI
  • Kiểu dữ liệu: Dùng float hoặc double, tránh int cho bán kính
  • pow(r, 3) thay cho r*r*r (chậm hơn, nhưng dễ đọc)

Mở rộng: Struct hình cầu

struct Cau {
    float banKinh;
    float dienTich;
    float theTich;
};

void tinhCau(struct Cau *c) {
    c->dienTich = 4 * M_PI * c->banKinh * c->banKinh;
    c->theTich  = (4.0/3.0) * M_PI * c->banKinh * c->banKinh * c->banKinh;
}

Bài toán hình học cơ bản này rèn luyện: ép kiểu, độ ưu tiên toán tử, thư viện math, và tư duy đối tượng (struct).