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

C語言數學計算實例:累加數列求和與 1-100 中 9 的個數統計

     編輯:關於C

兩道經典 C 語言基礎練習:累加數列求和(a + aa + aaa + aaaa + aaaaa)與 1-100 中數字 9 出現次數統計。通過簡單循環與數學技巧高效求解,適合初學者鞏固循環、取模、整除運算。

例 1:累加數列求和

題目

輸入數字 a(0-9)和項數 n,求 Sn = a + aa + aaa + ... (n項)。
例:a=2, n=5 → 2 + 22 + 222 + 2222 + 22222。

代碼

#include 

int main() {
    int a, n;
    scanf("%d %d", &a, &n);

    int sum = 0;
    int term = 0;
    for (int i = 0; i < n; ++i) {
        term = term * 10 + a;  // 遞推生成當前項:2 → 22 → 222...
        sum += term;
    }
    printf("%d\n", sum);
    return 0;
}

遞推邏輯

輸入 2 5 輸出 24690。

例 2:1-100 中 9 的個數

題目

統計 1 到 100(含)中,數字 9 在十位和個位共出現多少次。

代碼

#include 

int main() {
    int count = 0;
    for (int i = 1; i <= 100; ++i) {
        if (i % 10 == 9)   // 個位是 9
            ++count;
        if (i / 10 == 9)   // 十位是 9
            ++count;
    }
    printf("%d\n", count);
    return 0;
}

邏輯解析

  • i % 10 == 9:個位為 9 的數:9, 19, 29, ..., 99 → 10 個。
  • i / 10 == 9:十位為 9 的數:90, 91, ..., 99 → 10 個。
  • 99 同時滿足兩條件,被計數兩次,正確(99 有兩個 9)。
  • 總計 20 次。

運行結果

20

擴展思考

  1. 通用化統計函數:
    int countDigit(int start, int end, int digit) {
        int count = 0;
        for (int i = start; i <= end; ++i) {
            int x = i;
            while (x > 0) {
                if (x % 10 == digit) ++count;
                x /= 10;
            }
        }
        return count;
    }
  2. 數學公式優化:1-100 中 9 的個數 = 10(個位)+ 10(十位)= 20,O(1) 計算。
  3. 邊界處理:0 包含 0 個 9;負數取絕對值統計。

總結

兩例展示了 C 語言處理數字規律問題的核心技巧:

  • 遞推構造項:term = term * 10 + digit。
  • 取模/整除拆解位:%10 取個位,/10 右移一位。
  • 循環邊界精確:i <= 100 含邊界,i < n 滿 n 項。

掌握這兩套模板,可輕鬆應對「數字統計、數列求和、位運算」類基礎算法題。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved
iterm 計算term 值sum 累加
00*10+222
12*10+22224
222*10+2222246
3222*10+222222468
42222*10+22222224690