阿摩線上測驗 登入

申論題資訊

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

申論題內容

二、請利用第一題的 SumOfDigits(n) 函式,撰寫一程式解決以下問題:輸入兩個正整數 A 和 B,已知 A 不大於 B,找出所有大於等於 A 且小於等於 B 的正整數 n 中,可 以被 SumOfDigits(n) 傳回值整除者。 
例如:若 n=100;int k=SumOfDigits(n);則 k 的值為 1,k 可以整除 n。 請撰寫一程式將所有符合上述條件的正整數一一在螢幕上印出,一行恰好印一個。 (15 分)

詳解 (共 1 筆)

詳解 提供者:hchungw
重用先前提到的SumOfDigits函式。程序的基本思路是,對於給定的範圍A到B(包含A和B),我們遍歷這個範圍內的每個數字n,對於每個數字,我們計算其數字之和SumOfDigits(n),然後檢查n是否可以被SumOfDigits(n)整除。如果可以,則打印該數字。
這裡是一個如何實現的示例:
c
Copy code
#include <stdio.h>
int SumOfDigits(int n) {
    int sum = 0;
    while (n > 0) {
        sum += n % 10;
        n /= 10;
    }
    return sum;
}
int main() {
    int A, B;
    printf("Enter two positive integers A and B (A <= B): ");
    scanf("%d %d", &A, &B);
    for (int n = A; n <= B; n++) {
        int k = SumOfDigits(n);
        if (n % k == 0) {  // 檢查 n 是否可以被其位數之和整除
            printf("%d\n", n);
        }
    }
    return 0;
}
在這段代碼中,首先提示用戶輸入兩個正整數A和B,然後遍歷從A到B的每個數字。對於每個數字,它計算該數字的位數之和SumOfDigits(n),然後檢查這個數字是否可以被其位數之和整除。如果滿足條件,則將該數字打印出來。每個符合條件的數字都單獨印在一行上,這正好符合題目的要求。