int main() {
int m; cin >> m;
long long sum = 0;
for (int i = 1; i <= m; ++i) sum += 1LL * i * i;
cout << sum << endl;
}
注意:i*i 可能溢出 int,用 1LL * i * i 提升至 long long。
int sum = 0;
for (int i = 1; i <= m; i += 2) sum += i;
// 或數學公式:n = (m+1)/2 項,和 = n²
double sum = 0;
for (int i = 1; i <= m; ++i) sum += 1.0 / i; // 1.0 強制浮點除法
cout << fixed << setprecision(6) << sum << endl;
關鍵:1 / i 是整數除法(結果 0),必須用 1.0 / i。
double sum = 0;
int sign = 1;
for (int i = 1; i <= m; ++i) {
sum += sign * (1.0 / i);
sign *= -1; // 符號翻轉
}
long long fact = 1;
for (int i = 1; i <= m; ++i) fact *= i;
cout << m << "! = " << fact << endl;
注意:13! 超過 int,21! 超過 long long。大數階乘需高精度/大整數庫。
萊布尼茨公式:π/4 = 1 - 1/3 + 1/5 - 1/7 + ...
項的絕對值 1/(2n-1),當 < 1e-5 停止。
double pi = 0, term = 1;
int n = 1, sign = 1;
while (fabs(term) > 1e-5) {
pi += sign * term;
n += 2;
term = 1.0 / n;
sign *= -1;
}
pi *= 4;
cout << fixed << setprecision(6) << pi << endl;
| 場景 | 推薦 | 理由 |
|---|---|---|
| 已知迭代次數 | for | 初始化、條件、增量集中,可讀性強 |
| 未知次數,依條件終止 | while | 語義清晰:當條件滿足時繼續 |
| 至少執行一次 | do-while | 先執行後判斷 |
1/2 == 0,必須 1.0/2。long long、double 或大整數。while (term > 1e-5) 應用 fabs(term) > 1e-5。for (int i=0; ...) 變量僅在循環內可見。循環是程序設計基石。掌握:三要素(初始、條件、增量)、類型選擇(整數/浮點/大數)、邊界條件、輸出格式控制。本文五道經典題覆蓋了累加、條件累加、調和級數、交替級數、收敛級數五大基本模式,是循環訓練的完整入門套餐。