由于某种原因,我无法运行下面的代码。尝试了一些编译器进行调试,但没有运气。
#include <stdio.h>
void main()
{
int mul5=0, mul3=0, final=0;
int i=1;
while (i<10){
if (i % 3 == 0)
mul3=mul3+i;
else if (i%5==0)
mul5=mul5+i;
else
i++;
}
final = mul3 + mul5;
printf("%d\n", final);
}
已经尝试void
作为main
的返回类型和int
返回类型,返回0。
答案 0 :(得分:4)
有三种情况:i%3 = 0,i%3!= 0和i%5 = 0,第三种情况是i%3和i%5都不是0.
这三种情况中的哪一种增加了1?
你想在这三种情况中增加1吗?
PS。您的代码非常简单,因此很容易找出问题所在。但是,你真的应该告诉完全发生了什么。请记住,我们远离您的计算机,无法看到它正在做什么,我们也无法读懂您的想法。通常你只需要回答以下问题:
一个。你在做什么。 湾你期待发生什么? C。 发生什么。
答案 1 :(得分:0)
代码中的问题是,当i
和if
条件为真时,您没有增加else if
的值。
这就是while
循环无限次运行的原因。
#include <stdio.h>
int main()
{
int mul5=0, mul3=0, final=0;
int i=1;
while (i<10)
{
if (i % 3 == 0) //When this condition is true i should also be incremented
{
mul3=mul3+i;
i++;
}
else if (i%5==0)//When this condition is true i should also be incremented
{
mul5=mul5+i;
i++;
}
else
i++; //Increment i when it is not increment in if and else if condition
}
final = mul3 + mul5;
printf("%d\n", final);
return 0;
}
答案 2 :(得分:0)
你的代码中有一个无限循环。
当循环开始执行时,发生的是3个条件之一,即,
1. mul3
的价值将增加
2. mul5
的价值将增加
3. i
将递增
当循环开始时,i
为1.由于i%3==0
和i%5==0
为假,i
会递增。当i
为2时也是如此。但是当i
为3时,i%3==0
为真。因此mul3
将会增加,因此会跳过其他两个条件。从那时起,i
将不会改变,因此会导致无限循环。
要使while
循环结束,i
必须在每次循环后递增。所以你要做的就是删除else
之前的i++;
并vo!您的错误已修复!