构造一个循环以检查数字的数字之和是否可以被3

时间:2017-10-29 20:08:06

标签: c loops

我需要制作一个程序,在该程序中,在给定的数字范围之间,程序需要找到其数字总和可被3整除的数字。之后,需要检查总和是否大于0,如果它可被4整除,并打印满足上述条件的数字。 这就是我试过的:

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;
}

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

1 个答案:

答案 0 :(得分:1)

应分为两部分: -

int DigitSum(int num)
{
    int sum = 0;
    while(num){
       sum += num%10;
       num/=10;
    }
    return sum;
}

遵循D-R-Y原则。不要重复自己。如果你这样做,你可以确定你错过了重复使用的可能性。

将独立的可重用逻辑与进入大项目后有用的核心功能分开。

现在你进入了逻辑:

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次再次错误。