本文介紹一個經典的 C 語言入門題目:給定一位正整數 a (1~9) 與項數 n (1~9),計算數列 a + aa + aaa + ...(共 n 項)的總和。
數列形式如下:
a, aa, aaa, aaaa, ... (共 n 項)
例如:a=2, n=3 時,數列為 2 + 22 + 222 = 246。
x 追蹤當前項的值,初始 x = a。x = x * 10 + a 產生下一項(如 2 → 22 → 222)。Sn。a 與 n 均為一位正整數。#include <stdio.h>
int main(void) {
int a, n, x, Sn, i;
int flag = 1;
while (flag) {
printf("最後一項是幾位數:n=");
scanf("%d", &n);
printf("a=");
scanf("%d", &a);
if (a > 0 && a < 10 && n > 0 && n < 10)
flag = 0;
else
printf("系統提示:a 和 n 都必須是個位正整數,請重試!\n");
}
x = a;
Sn = x;
for (i = 1; i < n; i++) {
x = x * 10 + a;
Sn += x;
}
printf("%d", a);
for (i = 1; i < n; i++) {
// 為了顯示完整數列,這裡需重新產生各項或預存
// 簡化輸出格式
}
printf("...(%d個)=%d\n", n, Sn);
return 0;
}
最後一項是幾位數:n=3 a=2 2+22+222(3個)=246
n 較大,總和可能超出 int 範圍,可改用 long long 或大整數庫。i 項 = a * (10^i - 1) / 9,總和可用等比級數求和公式 O(1) 計算,適合極大 n 場景。