首页 > 解决方案 > 输出一个数是否可​​被 3 整除的 C 程序

问题描述

我是编程新手,我必须在 C 中进行赋值。我必须编写一个程序来读取整数 n 并输出它是否可以被 3 整除。不幸的是,我不允许使用 % 运算符来检查这一点。“一个正整数能被 3 整除当且仅当它的所有数字之和能被 3 整除。” 所以程序必须添加n的数字,如果它大于9,我必须添加这个数字的数字等,直到数字之和等于或小于9。因为那我可以说n 是否能被 3 整除。我还必须每次打印丢失数字的数量。例如:输入:9999-----输出:9999 -> 36 -> 9。是。我做了一个循环:

    while(n>9){
    lastDigit = n%10;
    sumDigits += lastDigit;
    n = (n-lastDigit)/10;
 }
    sumDigits = sumDigits + n; /*this is the sum of the digits*/

现在如果它大于 9,我必须再次在循环中输入这个数字,但我不知道该怎么做。我用 if else 语句做了 3 个其他循环,但是这样我的程序就很长了。我怎样才能使我的程序更短?因为有些数字必须多次循环。

谢谢。

尼克

标签: cloops

解决方案


您在这里需要两个循环 - 一个循环只要n > 9,另一个循环遍历数字n并将它们相加:

int origN = n;
while (n > 9) {
    int sum = 0;
    int tmp = n;
    while (tmp > 0) {
        int lastDigit = n % 10;
        sum += lastDigit;
        tmp /= 10;
    }
    n = sum;
} 

if (n == 3 || n == 6 || n == 9) {
    printf("%d is divisible by 3\n", origN);
} else {
    printf("%d is not divisible by 3\n", origN);
}

推荐阅读