C语言求数列各个数位上的数字之和案例代码

题目描述

【循环】数列各个数位上的数字之和

给出一个正整数N(N≤9999999),求1、2、3……N这一数列各个数位上的数字之和。

案例代码

要求解1到N数列各个数位上的数字之和,可以使用循环遍历每一个数,并将其各个数位上的数字相加。下面是一个用C语言编写的案例代码:

#include <stdio.h>

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

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

    return sum;
}

// 计算1到N数列各个数位上的数字之和
int sequenceDigitSum(int N) {
    int sum = 0;

    for (int i = 1; i <= N; i++) {
        sum += digitSum(i);
    }

    return sum;
}

int main() {
    int N;
    printf("请输入一个正整数N:");
    scanf("%d", &N);

    int result = sequenceDigitSum(N);
    printf("1到%d数列各个数位上的数字之和为:%d\n", N, result);

    return 0;
}

在这个程序中,digitSum 函数用于计算一个数的各个数位上的数字之和。sequenceDigitSum 函数则利用循环遍历从1到N的数,并调用 digitSum 函数计算各个数位上的数字之和,并累加到 sum 变量中。

main 函数中,我们首先获取用户输入的正整数N,然后调用 sequenceDigitSum 函数计算1到N数列各个数位上的数字之和,并将结果打印输出。

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享