C语言编程题

统计100-999之间有多少个其各位数字之和是5的整数,并计算这些整数的
和。要求定义并调用函数is (number)判断number的各位数字之和是否等于5

不知是不是题目写错了,如果一个数字各位数字之和等于5,那它肯定不会大于500,否则和就大于5了,所以 100 - 999 里面,比 500 大的数是多余的。不管怎么,这个题目可以按照下面思路来做。

首先想办法计算一个数字各位数字之和

以 1353 为例,采用下面的思路:

    用 1353 除 10,余数是 3,所以个位数为 3。同时 1353 除 10 取整是 135,是去掉个位数以后剩下的数字

    用 135 除 10,余数是 5,这是十位数的数字,剩下数字 13

    用 13 除 10,余数 3, 剩下数字 1

    用 1 除以 10,余数 1,剩下数字 0

    因为取整已经得到 0,所以没必要再继续除下去了。把前面步骤得到的余数加起来,就是各位数字之和,也就是 3 + 5 + 3 + 1 = 12

按这个思路得到计算一个数各位数字之和的函数:

is 函数中判断和是不是 5

把上面那个函数中的代码搬到 is 函数里,result 变成一个局部变量,得到 is 函数源码:

main 函数

main 函数主要是计算 100 - 999 直接满足 is 函数的所有数的和

    循环开始之前,满足条件的数字的和是 0

    遍历 100 到 999 的数,对每个数调用 is 函数,如果满足条件,则叠加到结果中

温馨提示:答案为网友推荐,仅供参考
第1个回答  2019-04-09
#include <stdio.h>

bool is_n(int n)
{
    int sum = 0;
    while (n)
    {
        sum += n % 10;
        n = n / 10;
    }
    if (sum == 5)
        return true;
    return false;
}

int main()
{
    int sum = 0;
    for (int i = 100; i < 999; ++i)
        if (is_n(i))
        {
            sum += i;
            printf("%d\n", i);
        }
    
    printf("sum=%d", sum);
}

代码如上面所示

本回答被网友采纳
相似回答