C编码和错误识别

时间:2014-08-31 12:54:52

标签: c

由于某种原因,我无法运行下面的代码。尝试了一些编译器进行调试,但没有运气。

#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。

3 个答案:

答案 0 :(得分:4)

有三种情况:i%3 = 0,i%3!= 0和i%5 = 0,第三种情况是i%3和i%5都不是0.

这三种情况中的哪一种增加了1?

你想在这三种情况中增加1吗?

PS。您的代码非常简单,因此很容易找出问题所在。但是,你真的应该告诉完全发生了什么。请记住,我们远离您的计算机,无法看到它正在做什么,我们也无法读懂您的想法。通常你只需要回答以下问题:

一个。你在做什么。 湾你期待发生什么? C。 发生什么

答案 1 :(得分:0)

代码中的问题是,当iif条件为真时,您没有增加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==0i%5==0为假,i会递增。当i为2时也是如此。但是当i为3时,i%3==0为真。因此mul3将会增加,因此会跳过其他两个条件。从那时起,i将不会改变,因此会导致无限循环。

要使while循环结束,i必须在每次循环后递增。所以你要做的就是删除else之前的i++;并vo!您的错误已修复!