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

C語言數列求和:S = a + aa + aaa + aaaa + ... (n 項) 完整實作與數學推導

     編輯:關於C

數列定義

給定單一數字 a (1~9) 與項數 n,求和:
S = a + aa + aaa + ... (共 n 項)
例如 a=3, n=4:3 + 33 + 333 + 3333 = 3702

遞推關係

第 k 項 T_k = T_{k-1} × 10 + a,T_1 = a
迴圈中累加即可:


int term = 0, sum = 0;
for (int i = 0; i < n; i++) {
    term = term * 10 + a;  // 產生下一項
    sum += term;           // 累加
}

完整程式碼(含輸入驗證)

#include <stdio.h>

int main()
{
    int a, n;
    printf("請輸入數字 a (1-9): ");
    scanf("%d", &a);
    printf("請輸入項數 n: ");
    scanf("%d", &n);

    if (a <= 0 || a >= 10 || n <= 0) {
        printf("輸入錯誤!\n");
        return 1;
    }

    int term = 0, sum = 0;
    for (int i = 0; i < n; i++) {
        term = term * 10 + a;
        sum += term;
    }
    printf("S = %d\n", sum);
    return 0;
}

執行範例

請輸入數字 a (1-9): 5
請輸入項數 n: 3
S = 615  (5 + 55 + 555)

數學閉式公式(選修)

第 k 項 = a × (10^k - 1) / 9
總和 S_n = a/9 × [ (10 + 10² + ... + 10^n) - n ]
      = a/81 × [ 10^(n+1) - 9n - 10 ]

可用 pow() 直接計算,但注意大數溢位(int 只能到 ~9 位數)。

常見錯誤

  • 忘記 term 歸零初始化
  • 項數 n 與迴圈次數對應錯誤
  • 未檢查 a 範圍,導致多位數字輸入邏輯錯誤
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved