c - 从数组循环中获取最小和最大标签

标签 c

我正在尝试从文件中查找最小值和最大值。当程序读取文件时,每个值都会进入 numbers[] 数组。我的目标是显示有关数组中每个值的一些信息,这是预期的输出:

enter image description here

我的程序工作正常,但是我在 for 循环 中显示 Max 和 Min 标签时遇到问题。这是我的代码:

typedef struct Points {
  int min;
  int max;
} Point;

int main(int argc, const char * argv[]) {
  returnNumbersArray("numbers.txt");

  // Display output
  printf("Sr.\t\tNumber\t\tPrime\t\tOdd/Even\t\tMin/Max\n");

  for (int i = 0; i < LENGTH; i++) {
    printf("%d\t\t%d\t\t\t%s\t\t\t%s\n", i + 1,
      numbers[i],
      (isPrime(numbers[i]) ? "Yes":"No"),
      (isOddOrEven(numbers[i]) ? "Odd":"Even"));
  }


  // Define Min and Max values
  getMinMax(numbers);
  printf("%d, %d", point.max, point.min);

  return 0;
}

// Return min and max value from the array.
Point getMinMax(int array[]) {
  point.max = point.min = array[0];
  for (int i = 1; i < LENGTH; i++) {
    if (array[i] > point.max) {
      point.max = array[i];
    }
    if (array[i] < point.min) {
      point.min = array[i];
    }
  }
  return point;
}

getMinMax(int array[]) 有效,我确实得到了最小值和最大值,但我想在 中的 for 循环 中放置一个正确的标签main 方法并使用与 isPrime(numbers[i]) 相同的方法? "is":“否”。有人可以告诉我我做错了什么或提供解决此问题的建议吗?

我当前的输出:

enter image description here

感谢您的宝贵时间。

最佳答案

Point minmax = getMinMax(numbers);
for (int i = 0; i < LENGTH; i++) {
    printf("%d\t\t%d\t\t\t%s\t\t\t%s\t\t\t%s\n",
        i + 1,
        numbers[i],
        (isPrime(numbers[i]) ? "Yes" : "No"),
        (isOddOrEven(numbers[i]) ? "Odd" : "Even"),
        (numbers[i] == minmax.max ? "Max" : (numbers[i] == minmax.min ? "Min" : ""))
    );
}

关于c - 从数组循环中获取最小和最大标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52508570/

相关文章:

c - 为什么这个字符串反转 C 代码会导致段错误?

c++ - 如何在不需要 LIBCD.lib 的情况下在 Visual Studio 6 中编译 C 项目?

与 C ~ 运算符(按位非)的混淆以及比较 char 变量

c - 当从函数 printf "Hello world"调用时,哪个内存段是 ("Hello world")?

c - C语言打印排序数组时出错?

c - TCP客户端在C套接字中获取HTML

c - System C 命令和内存限制?

c - 从 gui 前端启动控制台应用程序

c++ - 如何在不破坏连接的情况下发送和接收 SO_SNDTIMEO 和 SO_RCVTIMEO 的数据?

c - 这段代码的作用是什么?通过索引访问结构?