C 使用while循环计算平均每天步行英里数

C 使用while循环计算平均每天步行英里数,c,C,我无法获得要添加的输入,也无法获得平均值的正确输出 下面的代码是我编写的。任何帮助都将不胜感激 #include <stdio.h> int main() { /* variable definition: */ int days; float avg, miles; /* Initialize */ days=1; // Loop through to input values while(days<=7) { printf("Enter

我无法获得要添加的输入,也无法获得平均值的正确输出

下面的代码是我编写的。任何帮助都将不胜感激

#include <stdio.h>

int main() {
  /* variable definition: */
   int days;
   float avg, miles;
/* Initialize */
   days=1;
// Loop through to input values

while(days<=7) {
      printf("Enter the number of miles for each day walked.");
      // use %lf for double, %f for float
      scanf("%f", &miles);
      days++;
      }

   avg = miles / days;
   printf("average is %f\n " , avg );
   return 0;
} // end main
#包括
int main(){
/*变量定义:*/
国际日;
浮动平均值,英里;
/*初始化*/
天数=1天;
//循环到输入值

而(days正如John3136所说,你们并没有记录行走的总英里数。你们扫描的是英里数,但你们并没有记录英里数的总和。你们的平均数就是你们最后输入的英里数除以7

下面是一个建议的解决方案:

int main(void)
{
    // variable definition
    int days = 0;
    float avg = 0, miles = 0;

    // Loop through to input values
    while(days < 7)
    {
        printf("Enter the number of miles for each day walked: ");
        scanf("%f", &miles);
        avg += miles;
        days++;
    }

   avg /= days;
   printf("average is %.2f\n " , avg);

   return 0;
}
int main(无效)
{
//变量定义
整数天=0;
浮动平均值=0,英里=0;
//循环到输入值
而(天数<7天)
{
printf(“输入每天步行的英里数:”);
扫描频率(“%f”和英里);
平均+=英里;
天++;
}
平均/=天;
printf(“平均值为%.2f\n”,平均值);
返回0;
}
在Jonathan Leffler的帮助下,这里是先前代码的增强版本:

#include <stdio.h>

int main(void)
{
    // variable definition
    int days = 0;
    double miles = 0.0, total_miles = 0.0;

   // Loop through to input values
    while(days < 7)
    {
        printf("Enter the number of miles for day %d: ", days + 1);

        if(!scanf("%lf", &miles))
            return -1;

        total_miles += miles;
        days++;
    }

   printf("Total miles: %.2lf / %d Days = %.2lf Average miles per day.\n",
           total_miles, days, (days > 0) ? total_miles / days : 0.0);

   return 0;
}
#包括
内部主(空)
{
//变量定义
整数天=0;
双英里=0.0,总英里=0.0;
//循环到输入值
而(天数<7天)
{
printf(“输入第%d天的英里数:”,第+1天);
如果(!scanf(“%lf”,&miles))
返回-1;
总英里数+=英里数;
天++;
}
printf(“总英里数:%.2lf/%d天=%.2lf平均每天英里数。\n”,
总英里数,天(天>0)?总英里数/天:0.0);
返回0;
}

看起来您需要保存所有英里数的总和-您只需要保存一个值,然后一直读取该值,然后忽略该值。谢谢!我必须将天的值更改回0,但我正在尝试了解添加//avg+=miles;//和//avg/=days;//时到底发生了什么。我假设avg正在存储该值我不清楚为什么avg/=days;不是avg=avg/days。只是想让这一切变得有意义。avg+=miles是avg=avg+miles的缩写。另外,avg/=days和avg=avg/days是一样的。我们把所有的里程加起来,变成变量avg,然后我们把这个数字除以天。有人可能会说变量
avg
命名错误或使用不当。直到除以
days
之前,值是“总英里数”而不是“平均”。我可能会在整个过程中使用
double
,然后使用
double total_miles=0.0;
然后是
total_miles+=miles;
最后是
double avg_miles=total_miles/days;
。我也不会在输出中的换行符后添加尾随空格。不过,这只是一些琐事——这里的内容是值得尊敬的(但不是完美的)@JonathanLeffler我很感激你的反馈。我实际上在和自己争论是否应该添加一个total_miles变量,这样输出就可以更清晰。YW。有人可能会认为你应该检查
scanf()
是否成功(返回
1
),如果不成功,就打破循环,也许还可以防止被零除(虽然使用浮点运算,但其计算结果为∞ 您可以不使用平均值作为变量,只需将表达式包含在
printf()
调用中即可。这是否更好仍有争议-在上下文中,也许是这样,但在许多其他情况下,变量是合理的。