gpt4 book ai didi

构造一个循环来检查一个数字的数字之和是否能被 3 整除

转载 作者:行者123 更新时间:2023-11-30 14:53:48 25 4
gpt4 key购买 nike

我需要编写一个程序,在给定的数字范围内,程序需要找到数字之和能被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;
}

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

最佳答案

它应该分为两部分:-

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 次,这又是错误的。

关于构造一个循环来检查一个数字的数字之和是否能被 3 整除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47004715/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com