【问题标题】:C programming: Finding max in a file stringC 编程:在文件字符串中查找最大值
【发布时间】:2016-10-13 22:06:00
【问题描述】:

我有这个我想不通的任务。

我们有一个格式如下的文件:

5
4 
100 500 250 300
1
700
3
300 150 175
2
920 680
8
20 10 15 25 50 30 19 23

第一行是拍卖的总数。

之后,每两行代表一次拍卖。

第一行是出价数。下一行是实际出价。

例如,数字 4 表示有 4 个出价 (100,500,250,300) 的拍卖。

我的任务是确定每次拍卖的最高出价。这就是我到目前为止所得到的。任何帮助将不胜感激。

#include <stdio.h>


int main() {

    FILE * ifp;
    char filename[100];

    printf("File name\n");
    scanf("%s", &filename);

    ifp = fopen (filename, "r");

    if (ifp == NULL) {
        printf("Error, File could not be opened.\n");
        return 1;
    }
    int i, num_auctions, auction, j, bid, max;

    fscanf(ifp, "%d", &num_auctions);

    for(i=0; i<num_auctions; i++) {
        fscanf(ifp, "%d", &auction);
        if (bid > max)
            max = bid;
            for(j=0; j<auction; j++){
                fscanf(ifp, "%d", &bid);
                printf("%d\n", bid);

            }
            printf("%d\n", max);
    }

    fclose(ifp);
    return 0;
}

【问题讨论】:

  • 将该图像发布为文本。没有充分的理由让我们点击此链接。
  • 第一次执行if (bid &gt; max)时bid的值是多少?
  • 请说明您的程序当前的行为是什么以及为什么您无法弄清楚。
  • 一点补充,因为你需要找到每个的最高值,你应该在内循环完成后清除max。打印最大值然后清除它。
  • 我是否可以建议您找到编译器选项,该选项会告诉您何时使用变量而不进行初始化? (或者,不要忽略您正在使用未初始化变量的警告)

标签: c string file


【解决方案1】:

这些是您的代码中的问题。

  1. bid 和 max 未初始化使用。修复是在声明它们时将它们设置为 0。
  2. if (bid &gt; max) 支票在错误的位置。它只检查每次拍卖的最后出价。解决方法是将该检查移到fscanf 之后的内部for 循环中。
  3. max 需要在每次拍卖后清除。解决方法是在外部 for 循环的顶部将 max 设置为 0。

【讨论】:

  • 非常感谢,我得到了它以获得最高的。我忘了在原始帖子中添加我还需要那些最高出价的总数。我要编辑帖子以添加它。
  • @Gary 请不要。那是一个单独的问题。我们不希望问题不断转向不同的问题。尝试先自己做。如果您遇到困难,请发布一个新问题,包括您尝试过的确切求和代码。
  • 好的,抱歉,我以前从未在这里发过帖子,不知道是怎么做的。我一直在尝试 total += max 但我会继续尝试不同的东西,看看我能不能得到它。如果没有,我会写一个新问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 2015-04-26
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 2016-05-22
  • 1970-01-01
相关资源
最近更新 更多