Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C基本无限循环MVS,用于计算具有邻域的avarege_C_Visual Studio 2010_Infinite Loop - Fatal编程技术网

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

C基本无限循环MVS,用于计算具有邻域的avarege,c,visual-studio-2010,infinite-loop,C,Visual Studio 2010,Infinite Loop,所以这应该是真正的基础,我几乎可以肯定我错过了一些东西,因为我设法写了更复杂的代码 代码应该取一个正整数,并将每个数字的平均值与其邻域一起写入,用户给出的整数至少为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,然后决定如何计算第二个? 我肯定我错过了什

所以这应该是真正的基础,我几乎可以肯定我错过了一些东西,因为我设法写了更复杂的代码

代码应该取一个正整数,并将每个数字的平均值与其邻域一起写入,用户给出的整数至少为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,然后决定如何计算第二个? 我肯定我错过了什么,我不知道。。。 我不应该使用比basic更多的东西,我已经写了一些计算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;

}
#包括
int main()
{
float num=0.0,num2=-1,nextnum=-1,nextnext=-1,after=0.0,after=0.0;
做{
scanf(“%f”、&num);
如果(num2==-1)
{
scanf(“%f”&num2);
之后=num+num2;
nextnum=num2;
printf(“%4g”,在/2之后);
}
after=num+nextnum;
nextnum=num;
printf(“%4g”,在/2之后);
}           
而(num>0);
返回0;
}

任何形式的帮助/建议/指导都会被欣然接受。

首先,我建议您在每次提交后写一份变量及其值的表格。我做了3个字母,它只做每2个数字的平均值。我不知道这是您的原始代码还是它的一部分,因为您甚至没有使用
nextnext
after2
变量。 但要解决原始问题,您应该为
if
添加
else
块,并向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个数字的平均值,您可以将最后2个数字的部分添加到
之后,而
cicle中的
nextnum
nextnext
应该包含cicle之后最后2个输入的数字。

您是否尝试使用调试器查看发生了什么?我知道发生了什么,代码适用于a1和a2,我不应该再工作了,因为我不知道该要求什么…变量名一点帮助都没有。