【问题标题】:Finding min and max from data file [closed]从数据文件中查找最小值和最大值 [关闭]
【发布时间】:2012-09-14 11:12:16
【问题描述】:

我正在尝试编写一个从数据文件中读取整数并输出最小值和最大值的简单程序。输入文件的第一个整数表示还要读取多少个整数,然后列出整数。

示例输入文件:

5 100 -25 42235 7 -1

就这么简单,我不知道从哪里开始。我想我需要创建一个 size = 第一个整数的数组,然后增加我在数组中的位置并与最小值/最大值进行比较。

我不确定用第一个整数声明数组的语法是什么,然后用剩余的整数填充数组,或者这是否是正确的方法。创建数组后,我应该没有问题将值分配给最小/最大变量,并通过数组增加位置。

【问题讨论】:

  • 每个数字是否单独一行?

标签: c input max min


【解决方案1】:

您不需要数组。只需跟踪当前的最小值和最大值(它们从您读取的第一个数字开始)。读取每个数字后,如果低于最小值,则为新的最小值,如果高于最大值,则为最大值。

【讨论】:

  • 我想我只是对输入文件的格式感到困惑。输入文件的第一个整数表示输入文件中有多少 MORE 整数,但实际上并不是我要查找的最小/最大数字集的成员。
  • 读取第一个数字并保存为计数。然后在你读完每个数字后,递减计数——当你达到 0 时,你就完成了。
  • 或者循环到计数。例如,在我的脑海中(可能有问题),int readnumber() {/* write this */} int main(void) { int min = INT_MAX; int max = INT_MIN; int count = readnumber(); for (int i = 0; i < count; i++){ int n = readnumber(); if (min > n) min = n; if (max < n) max = n;} printf("min = %d max = %d\n", min, max); return 0; }
  • @JimBalter 请不要尝试将长代码摘录放在 cmets 中,因为没有格式,它们不可读。发布答案。
【解决方案2】:

无需使用数组来存储数据。您只需要从从文件接收的数据中找出最小值和最大值。

long lMin = 0, lMax = 0;
int nCount;
long lNo;
// open file
fscanf( file, "%d", &nCount );
for( int i = 0; i < nCount; i++ )
{
   fscanf( file, "%ld", &lNo );
   if( lNo > lMax )
       lMax = lNo;
   if( lNo < lMin )
       lMin = lNo;
}
printf(" Min = %ld Max = %ld\n", lMin, lMax );
// close file

【讨论】:

  • 如果所有值都> 0(它会错误地说最小值为0)或者如果所有值都
猜你喜欢
  • 2016-06-07
  • 1970-01-01
  • 2020-08-24
  • 1970-01-01
  • 2012-09-16
  • 1970-01-01
  • 2018-01-08
  • 2013-04-19
  • 1970-01-01
相关资源
最近更新 更多