-5

我多次尝试这个程序,但我无法写出答案。

#include<stdio.h>
int main()
{
    long unsigned int i,sum=0;
    clrscr();
    for(i=0;i<=1000;i++)
    {
        if((i%5==0)||(i%3==0))
        {
            sum=sum+1;
        }
    }
    printf("%d",sum);
    getchar();
    return 0;
}

我想要一个这样的答案:
如果我们列出所有低于 10 且是 3 或 5 的倍数的自然数,我们得到 3、5、6 和 9。这些倍数的总和是 23。

4

4 回答 4

3
if((i%5==0)||(i%3==0))
        {
            sum=sum+1;
        }

应该

if((i%5==0)||(i%3==0))
        {
            sum=sum+i;
        }
于 2013-06-29T06:13:41.200 回答
1

改变

  sum=sum+1;

sum=sum+i;
于 2013-06-29T06:14:29.950 回答
1

你已经硬编码1到你的循环中,而不是i. 它应该是(为清楚起见添加了空格 - 它是免费的):

if ((i % 5 == 0) || (i % 3 == 0))
    {
        sum = sum + i;
    }

或者,更简洁地说:

if ((i % 5 == 0) || (i % 3 == 0))
    {
        sum += i;
    }
于 2013-06-29T06:18:37.100 回答
0

非常基本的错误,您必须在 if 条件之后使用循环值 i 而不是 1

sum = sum + 1 

一定是

sum = sum + i

如果你不想包括千,你的循环必须是

for(i=0;i<1000;i++)
于 2013-06-29T06:17:10.487 回答