输入一个小于等于10000的整数n,在[100,n]之间打印出各位数字和为5的所有整数的个数。

PS:答案会写在文章最下方,建议先阅读完前面的几点信息后再看答案! 

输入:1000

输出:15

#include

void main()
{
int a,b,c,d,k,i,n;
k=0;
scanf("%d",&n);
/**********Program**********/




/**********  End  **********/
printf("%d\n",k);
}

拿到题目后,我们应该知道以下几点信息:

1、用一个变量 i 把从100开始到 n 结束的数都遍历一遍

2、因为i是遍历的数,无法参与下面的运算,所以我们要把 i 赋值给一个变量 c

3、因为输入数的位数不确定,所以我们要用一个while循环来让无论是几位数,最终都能把这个数的每一位数相加

4、在while中我们需要把 c 的每一位都提取出来,所以我们需要使用到 %(模运算) 模运算后,把得出来的数放到一个可以求总和的变量上 

5、最终用if条件判断求总和的变量是否为5

6、进入if后,变量 k 要加一,以此得出最终k是多少 

最终代码如下:

#include

void main()
{
int a,b,c,d,k,i,n;
k=0;
scanf("%d",&n);
/**********Program**********/
    for (i = 100; i < n; i++)
    {
        a=b=0;
        c=i;
        while (c!=0)
        {
            a = c % 10;
            c = c / 10;
            b += a;
        }
        if(b==5)
        {
            k++;
        }
    }
/**********  End  **********/
printf("%d\n",k);
}

你可能感兴趣的:(算法,c语言)