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

标签 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 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

最佳答案

正如 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;
}

在 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;
}

关于使用 while 循环计算每天步行的平均英里数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55911697/

相关文章:

c - scanf() 将换行符保留在缓冲区中

将文本文件中的字符串转换为数字

c++ - C++ 中的快速输入/输出

c - 使用递归读入一行并返回指向该字符串的指针

c - 程序在 scanf 处停止

c - MBEDTLS 有错误查找功能吗?

c++ - 在 C 中将 Ascii 数字转换为十六进制数字

c - 二叉树插入,帮我看一下valgrinds的资料

c - 指针减法,32位ARM,负距离报告为正

c - 生成无向图的邻接矩阵