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

C 語言基礎演算法:求「a、aa、aaa...」數列之和

     編輯:關於C語言

C 語言基礎演算法:求「a、aa、aaa...」數列之和

本文介紹一個經典的 C 語言入門題目:給定一位正整數 a (1~9) 與項數 n (1~9),計算數列 a + aa + aaa + ...(共 n 項)的總和。

題目描述

數列形式如下:

a, aa, aaa, aaaa, ... (共 n 項)

例如:a=2, n=3 時,數列為 2 + 22 + 222 = 246。

解題思路

  1. 使用變數 x 追蹤當前項的值,初始 x = a。
  2. 每一輪迴圈:x = x * 10 + a 產生下一項(如 2 → 22 → 222)。
  3. 累加至總和變數 Sn。
  4. 輸入驗證:確保 a 與 n 均為一位正整數。

完整 C 程式碼

#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 場景。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved