C基本无限循环MVS,用于计算邻居的avarege

时间:2012-11-17 11:20:44

标签: c visual-studio-2010 infinite-loop

所以这应该是真正基本的,我几乎肯定我错过了一些东西,因为我管理写了更复杂的代码......

这些代码应该采取积极的intigers并用它的邻居写出每个数字的avarage,用户给出的整数至少是2个整数。

所以如果用户给出a1 a2 a3 a4 输出将是"(a1 + a2)/ 2,(a1 + a2 + a3)/ 3,(a2 + a3 + a4)/ 3,(a3 + a4)/ 2" 但它不限于4个数字,可能更少或更多。

问题是,当我只有a1 a2时,输出为(a1 + a2)/ 2,(a1 + a2)/ 2 该代码应该知道是否是a3然后决定如何计算第二个? 我确定我在这里遗漏了一些东西,我不知道...... 我不应该使用比基本更多的东西,我写了一些计算a1和a2的东西,以防只有输入(a1,a2) 但它显然是错的,因为代码不适用于a1,a2,a3等......

虽然我没有接近解决方案,但我还是把它放在了代码中,即使它的作用也没有得到完善:

 #include <stdio.h>
int main()
{
    float num=0.0,num2=-1, nextnum=-1,nextnext=-1, after=0.0,after2=0.0;
    do {
        scanf("%f", &num);
        if (num2==-1)
        {
            scanf("%f", &num2);

        after=num+num2  ;   

        nextnum=num2;
        printf("%4g" , (after/2) );
        }


        after=num+nextnum   ;   


        nextnum=num;


    printf("%4g" , (after/2));

    }           
    while (num>0);
    return 0;

}

任何形式的帮助/建议/指导都会很乐意接受。

1 个答案:

答案 0 :(得分:0)

首先,我会在每次尝试后写一个变量及其值的表格。我做了3次itterations它只做了每2个数字的avarage。我不知道这是您的原始代码还是仅是其中的一部分,因为您甚至没有使用nextnextafter2个变量。 但要解决原始问题,您应为else添加if块,并向if部分添加任何必要的说明。 可能的解决方案可能是:

do {
    scanf("%f", &num);
    if (num2==-1)
    {
        scanf("%f", &num2);

    after=num+num2  ;   

    nextnum=num;
    nextnext = num2;
    printf("%4g" , (after/2) );
    }
    else {

    after=num+nextnum+nextnext   ;   

    nextnext=nextnum;
    nextnum=num;


    printf("%4g" , (after/2));
    }

}           
while (num>0);

对于最后3个数字的平均值应该这样做,您可以在while cicle与nextnumnextnext之后添加最后2个数字的部分。在cicle之后的2个输入数字。