所以这应该是真正基本的,我几乎肯定我错过了一些东西,因为我管理写了更复杂的代码......
这些代码应该采取积极的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;
}
任何形式的帮助/建议/指导都会很乐意接受。
答案 0 :(得分:0)
首先,我会在每次尝试后写一个变量及其值的表格。我做了3次itterations它只做了每2个数字的avarage。我不知道这是您的原始代码还是仅是其中的一部分,因为您甚至没有使用nextnext
或after2
个变量。
但要解决原始问题,您应为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与nextnum
和nextnext
之后添加最后2个数字的部分。在cicle之后的2个输入数字。