阿摩線上測驗 登入

申論題資訊

試卷:96年 - 096年高等三級暨普通資訊處理(普考)#32451
科目:程式設計
年份:96年
排序:0

申論題內容

一、試寫一函式(function):int SumOfDigits(int n)。若 n 為正整數,則該函式傳回 n 以十進位表示法的所有位數中數字的總和。(30 分)
 例如:若 int n = 1236;int k=SumOfDigits(n);則 k 的值為 1+2+3+6 也就是等於 12。 若 int n = 58;int k=SumOfDigits(n);則 k 的值為 5+8 也就是等於 13。

詳解 (共 1 筆)

詳解 提供者:hchungw
可以透過循環或遞迴的方式來分解數字n的每一位數字,並將它們加起來。這裡我將使用循環的方法來解釋並實現這個函式。基本思路是對數字n進行模10操作以獲得其最後一位的數字,然後將n除以10以移除最後一位的數字。重複這個過程,直到n等於0為止。每次獲得的最後一位數字都加到總和中。
c
Copy code
#include <stdio.h>
int SumOfDigits(int n) {
    int sum = 0;
    while (n > 0) {
        sum += n % 10;  // 取得 n 的最後一位數字並加到 sum 上
        n /= 10;        // 移除 n 的最後一位數字
    }
    return sum;
}
int main() {
    int n = 1236;
    int k = SumOfDigits(n);
    printf("Sum of digits of %d is %d\n", n, k);
    n = 58;
    k = SumOfDigits(n);
    printf("Sum of digits of %d is %d\n", n, k);
    return 0;
}
這段代碼定義了SumOfDigits函式,它接受一個整數n作為參數,並返回n的所有位數之和。main函式中有兩個範例調用了SumOfDigits函式,並打印出結果,符合題目要求。