我需要做一个程序,在给定的数字跨度之间,程序需要找到数字之和可被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;
}我得到了错误的输出,我找不到错误。有什么想法吗?
发布于 2017-10-29 20:25:32
应分为两部分:-
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中考虑它,这是错误的。total的时候会有2倍,这也是错误的。https://stackoverflow.com/questions/47004715
复制相似问题