計算球體積 V = (4/3)πR³,半徑 R 從 1 開始到 100 結束,步長為 2。要求分別使用 for 循環和 while 循環兩種方式實現,並輸出半徑與對應體積。
M_PI (需 #define _USE_MATH_DEFINES 並在 math.h 前) 或自定義常量 3.14159265358979323846,精度優於 3.14。pow(R, 3) 或直接 R*R*R (整數運算更精確高效)。for 循環結構緊湊,初始化、條件判斷、迭代增量一行完成,適合已知循環次數場景。
#include <stdio.h>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
int main(void) {
int r;
double v;
printf("Radius | Volume\n");
printf("-------|----------------\n");
for (r = 1; r <= 100; r += 2) {
v = (4.0 / 3.0) * M_PI * r * r * r; // 或 pow(r, 3)
printf("%3d | %12.4f\n", r, v);
}
return 0;
}
while 循環將初始化與迭代分離,條件判斷在循環體前,邏輯更顯式,適合複雜終止條件。
#include <stdio.h>
#include <math.h>
#ifndef M_PI
#define M_PI 3.14159265358979323846
#endif
int main(void) {
int r = 1;
double v;
printf("Radius | Volume\n");
printf("-------|----------------\n");
while (r <= 100) {
v = (4.0 / 3.0) * M_PI * r * r * r;
printf("%3d | %12.4f\n", r, v);
r += 2;
}
return 0;
}
錯誤寫法:v = 4/3 * M_PI * r*r*r; → 4/3 整數除法結果為 1,導致體積偏小 25%。
正確寫法:v = 4.0/3.0 * M_PI * r*r*r; 或 v = (4.0/3.0) * M_PI * r*r*r; 強制浮點運算。
常量宏建議大寫:#define PI 3.14159,語句結尾不加分號,避免副作用。
標準 C 要求 int main(void) 或 int main(int argc, char *argv[]),返回 return 0; 表示成功。
r += 2 而非 r+=2Radius | Volume
-------|----------------
1 | 4.1888
3 | 113.0973
5 | 523.5988
...
99 | 4064376.6391
兩種循環在本題中等價,for 循環更簡潔,while 循環結構更清晰。關鍵在於掌握浮點運算精度、格式化輸出與規範編程習慣。實際開發中,優先選擇語義最清晰的循環結構,並嚴格遵循編碼規範。