首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言提取字符串中數字並求和:處理連續數字與前導零

     編輯:程式設計疑難解答

輸入:sjflas1234lafjdsl3532sldfjsl3lskadjfl90 → 提取數字 1234、3532、3、90 → 和 = 4859。

算法邏輯

  1. 遍歷字符串,遇到數字字符('0'~'9')累積構建當前數值:num = num * 10 + (c - '0')。
  2. 遇到非數字字符,將累積的 num 加入總和 sum,歸零 num。
  3. 循環結束後,別忘記加上最後一個 num(若字符串以數字結尾)。

完整代碼

#include <stdio.h>
#include <string.h>

int main() {
    char input[] = "sjflas1234lafjdsl3532sldfjsl3lskadjfl90";
    long long sum = 0;
    long long num = 0;

    for (int i = 0; i < strlen(input); i++) {
        char c = input[i];
        if (c >= '0' && c <= '9') {
            num = num * 10 + (c - '0');
        } else {
            sum += num;
            num = 0;
        }
    }
    sum += num; // 最後一段數字
    printf("sum = %lld\n", sum); // 4859
    return 0;
}

注意

  • 用 long long 防止溢出(題目提示 unsigned long long 可能不夠)。
  • 前導零自動被忽略(0012 累積為 12)。
  • 多組輸入用 while (scanf("%s", s) != EOF) 循環處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved