首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >构造一个循环,以检查一个数字的数字和是否可被3整除。

构造一个循环,以检查一个数字的数字和是否可被3整除。
EN

Stack Overflow用户
提问于 2017-10-29 20:08:05
回答 1查看 995关注 0票数 0

我需要做一个程序,在给定的数字跨度之间,程序需要找到数字之和可被3整除的数字。在此之后,它需要检查和是否大于0,是否可以被4整除,并打印满足上述条件的数字。这就是我试过的:

代码语言:javascript
运行
复制
include <stdio.h>
int main()
{
int a, b, sum, c, i, total, d;
scanf("%d %d", &a, &b);
for (i=a; i<b; i++)
{
  sum = 0;
  c = i;
  while (c != 0)
  {
   d=c%10;
    if ((d%10)%3 == 0)
    {
      sum = sum + d;
    }
      c = c /10;
    if (sum%4==0 && sum>0)
    {
      printf("%d\n", i);
      total++;
    }
   }
  }
  printf("%d", total);
 return 0;
}

我得到了错误的输出,我找不到错误。有什么想法吗?

EN

Stack Overflow用户

回答已采纳

发布于 2017-10-29 20:25:32

应分为两部分:-

代码语言:javascript
运行
复制
int DigitSum(int num)
{
    int sum = 0;
    while(num){
       sum += num%10;
       num/=10;
    }
    return sum;
}

遵循D-R-Y原则。不要重复你自己。如果您正在这样做,您可以确保您错过了可重用的机会。

将独立的可重用逻辑从核心功能中分离出来,一旦进入大项目,核心功能就会很有帮助。

现在你进入了逻辑:

代码语言:javascript
运行
复制
for(int i=a;i<=b;i++)
{
     int digSum = DigitSum(i);
     if( digSum > 0 && digSum%3 == 0 && digSum%4 == 0 ){
         printf("%d\n", i); 
         total++;
     }
}
printf("%d",total);

你哪里出错了?

  • 如果一个数字d不能被3除除,您没有在sum中考虑它,这是错误的。
  • 对于像6666这样的数字,当你增加total的时候会有2倍,这也是错误的。
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47004715

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档