C基本无限循环MVS,用于计算具有邻域的avarege
所以这应该是真正的基础,我几乎可以肯定我错过了一些东西,因为我设法写了更复杂的代码 代码应该取一个正整数,并将每个数字的平均值与其邻域一起写入,用户给出的整数至少为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等等 我正在编写代码,尽管它与解决方案并不接近,而且即使它的功能也没有得到完善: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,然后决定如何计算第二个? 我肯定我错过了什
#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,我不应该再工作了,因为我不知道该要求什么…变量名一点帮助都没有。