首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言基礎練習:計算圓的周長與面積完整指南

     編輯:關於C語言

C語言基礎練習:計算圓的周長與面積完整指南

在C語言學習的初期,計算幾何圖形的基本屬性是掌握輸入輸出、數據類型與數學運算的經典切入點。本文將從最基礎的單一主函數實現,逐步延伸至模組化函數設計、常量定義最佳實踐,以及精度控制等進階技巧,幫助你建立扎實的編程思維。

核心知識點速覽

  • #define 預處理指令定義常量(如圓周率 π)
  • 浮點數類型(float、double)的選擇與格式化輸出(%.2f 保留兩位小數)
  • scanf 格式化輸入讀取半徑數值
  • 數學公式應用:周長 C = 2πr、面積 S = πr²

版本一:最精簡的單一函數實現

適合初學者理解基本 I/O 流程,直接在 main 中完成計算與輸出:

#include <stdio.h>
#define PI 3.1415

int main() {
    float radius;
    scanf("%f", &radius);
    printf("%.2f\n%.2f\n", 2 * PI * radius, PI * radius * radius);
    return 0;
}

關鍵細節: 使用 #define PI 3.1415 避免魔術數字;%.2f 確保輸出符合「保留兩位小數」的題目要求;換行符 \n 實現分行輸出。

版本二:引入函數封裝提升可維護性

將周長與面積計算拆分為獨立函數,符合「高內聚、低耦合」原則,便於後續擴展與測試:

#include <stdio.h>
#define PHI 3.14

float circumference(float r);
float area(float r);

int main() {
    float r, c, s;
    printf("input r= ");
    scanf("%f", &r);
    c = circumference(r);
    s = area(r);
    printf("\nc=%5.2f s=%5.2f", c, s);
    return 0;
}

float circumference(float r) {
    return 2 * PHI * r;
}

float area(float r) {
    return PHI * r * r;
}

進階點: 函數原型聲明置於 main 之前;%5.2f 指定寬度為 5 字符(含小數點),輸出對齊更美觀。

版本三:雙精度與更精確的圓周率常量

針對精度要求較高的場景,採用 double 類型與更精確的 π 值:

#include <stdio.h>
#define PI 3.1415926

double circumference(double r) {
    return 2 * PI * r;
}

double area(double r) {
    return PI * r * r;
}

int main() {
    double r, c, s;
    printf("請輸入圓的半徑: ");
    scanf("%lf", &r);
    c = circumference(r);
    s = area(r);
    printf("圓的周長是%lf, 面積是%lf\n", c, s);
    return 0;
}

避坑指南: scanf 讀取 double 必須用 %lf;printf 中 %f 與 %lf 通用,但建議統一用 %lf 語義更清晰。

常見錯誤與最佳實踐總結

錯誤類型錯誤示例正確寫法說明
整型除法截斷2 * 3.14 * r 中 2 為 int2.0 * PI * r 或常量定義為浮點確保參與運算的字面量為浮點類型
格式符不匹配scanf("%d", &r) 讀取 floatscanf("%f", &r)%d 對應 int,%f 對應 float,%lf 對應 double
精度丟失用 float 存儲大數值運算結果優先使用 doubledouble 佔 8 字節,有效位數 15~16 位,遠高於 float 的 6~7 位
魔術數字代碼中直接出現 3.14#define PI 3.14159集中管理常量,便於修改與語義閱讀

延伸練習建議

  1. 修改程序:接受多組測試數據(直到 EOF),每組輸出周長與面積
  2. 增加輸入合法性檢查:半徑必須 > 0
  3. 嘗試使用 M_PI(需 #define _USE_MATH_DEFINES 並包含 math.h)獲取系統提供的高精度 π
  4. 將計算邏輯封裝到獨立 .c/.h 文件,練習多文件編譯

掌握這個看似簡單的題目,實則串聯了 C 語言「輸入→處理→輸出」的核心閉環,也是後續學習結構體、指針、文件操作等進階主題的基石。建議動手敲碼、對比不同版本輸出,體會「同一邏輯,不同表達」的工程權衡之美。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved