哎 ,昨晚懒得没写,今天更两个吧。啊,前天晚上也没写。。。。

先写这个,直接抛出问题,给出一个区间,然后在这个区间中找出各位之和是一个给定的K的所有的数,可以给这些数奇数或者给这些数求和,排序,最重要的是找出这些数;

//////////////////////////////////////////////////////////////////////

本题要求实现两个函数:一个函数判断给定正整数的各位数字之和是否等于5;另一个函数统计给定区间内有多少个满足上述要求的整数,并计算这些整数的和。

函数接口定义:

int is( int number );
void count_sum( int a, int b );

函数​​is​​​判断​​number​​的各位数字之和是否等于5,是则返回1,否则返回0。

函数​​count_sum​​​利用函数​​is​​​统计给定区间[​​a​​​, ​​b​​​]内有多少个满足上述要求(即令​​is​​返回1)的整数,并计算这些整数的和。最后按照格式

count = 满足条件的整数个数, sum = 这些整数的和

进行输出。题目保证0<​​a​​​≤​​b​​≤10000。

////////////////////////////////////////////////////////////////////////////

(其实这是一道简单题 但是我要补昨天的还要写今天的,就找了一道自己可以快速解决的。)

//拿到这道题呢,可以先分析一下,就是这道题是想干个啥,明显其实就是把它的各位数之和求出来,无论怎么变形,就都快要解决了。

所以相当于我们如何求一个N位数的各位数之和,明显和上次那道求逆序数的有点相似(非常相似),明显就又可以做一个循环,从最后一位加到第一位,每次将最后以为,即以10为模,直到为0。然后由于这是一道函数题所有就需要两个函数,第一个用于判断这个数各位数之和是否为K,另一个函数则表示在一个区间中找到找出所有的满足此条件的数,然后求和,计数(或者进行其他的一些操作)

话不多说,写代码吧;

这里就直接写着两个函数算了;

int is( int number )

{

 int s,sum=0;//这两个变量表示的含义是各位数之和,以及每一次的最后一位数

while(number!=0)//在这个循环中,不断的将最后一位数相加

{  

s=number%10;

sum+=s;

number=number/10;

}

if(sum==5)

return 1;

else

return 0;

}

另一个函数的作用是将在一个区间中满足这些条件的数加起来

void count_sum( int a, int b )

{ int count=0,t=0;//表示这些数的个数,和加起来的值

for(int i=a;i<=b;i++)

{   if(is(i))//使用上面的is函数进行判断,条件为真是做以下循环

{count++;t+=i;}

printf("%d,%d",count,t);

}

做一个小练习:

//////////////////////////////////////////////////////////////////////////////

输出区间[M,N](10≤M≤N≤1000)之间所有各位数值之和为k的数,并统计输出满足条件的数的个数。

输入格式:

输入在第一行中给出正整数k,第二行中给出2个正整数M和N(10≤M≤N≤1000),中间用空格间隔。

输出格式:

在第一行中输出满足条件的所有数,每个数后面一个空格。

在第二行按​​count = 总数​​的格式输出满足条件的数的个数。

注意:若没有满足条件的数,则第一行为空行

///////////////////////////////////////////////////////////////////////////////


include

#include<stdio.h>

int main()

{

int k,m,n;

int s=0,sum=0,count=0;

scanf("%d %d %d",&k,&m,&n);

   for(int i=m;i<=n;i++)

   {

    while(i)

    {

     s=i%10;

     sum+=s;

     i=i/10;

 }

 if(s==k)

 {

   printf("%d",i);

      count++;

 }

}

printf("%d",count);

return 0;

(有点仓促)