年号中每个数之和是20的是特殊年号,例如2099。编写程序输出1000~5000之间所有的特殊年号,要求每行显示五个特殊年号

年号中每个数之和是20的是特殊年号,例如2099。编写程序输出1000~5000之间所有的特殊年号,要求每行显示五个特殊年号

直接看代码:

#include <stdio.h>

int sum_of_digits(int num);

int main() {
    int year;
    int count = 0; // 计数器,每行显示五个特殊年号

    printf("1000~5000之间的特殊年号如下:\n");

    for (year = 1000; year <= 5000; year++) {
        if (sum_of_digits(year) == 20) { // 判断是否是特殊年号
            printf("%d\t", year);
            count++;

            if (count % 5 == 0) { // 每行显示五个特殊年号
                printf("\n");
            }
        }
    }

    return 0;
}

// 计算一个整数的各个数字之和
int sum_of_digits(int num) {
    int sum = 0;

    while (num > 0) {
        sum += num % 10;
        num /= 10;
    }

    return sum;
}


这个程序定义了一个名为sum_of_digits的函数,该函数接受一个整数作为输入,计算该整数的各个数字之和,并返回结果。

在主函数中,我们使用了一个for循环,遍历1000~5000之间的每一个年号。对于每个年号,我们调用sum_of_digits函数计算它的各个数字之和,判断是否等于20,如果是,就输出这个年号,并将计数器加1。当计数器达到5时,我们就输出一个换行符,以实现每行显示五个特殊年号的要求。

还定义了一个计数器count,用于记录当前行已经输出了几个特殊年号。每输出一个特殊年号,我们就将计数器加1,当计数器达到5时,就输出一个换行符,并将计数器清零。