为什么小程序最后结果很奇怪?

程序目的是希望找到10个数中最大的那个

主函数主要录入数字和调用max_min函数还有输出结果
max_min函数用指针来筛选数组中的最大最小值

具体程序如下:

# include <stdio.h>

# define N 10

void max_min (int a[], int n, int *max, int *min)
{
  int i;

  *max = a[0];
  *min = a[0];

  for (i = 1; i < n; i++) {
    *max = (*max <= a[i] ? a[i] : *max);
    *min = (*min <= a[i] ? *min : a[i]);
  }
}

int main (void)
{
  int i, a[N], big, small;

  printf("\n\t Enter %d numbers. ", N);
  for (i = 0; i < N; i++) {
    scanf("%d", &a[i]);
  }

  max_min(a, N, &big, &small);

  printf("\n\t the biggest number is: %d", big);
  printf("\n\t the smallest number is: %d", small);

  printf("\n\n");
  return 0;
}

程序输出结果:

Enter 10 numbers. 1,2,3,4,5,6,7,8,9,0
the biggest number is: 4199136
the smallest number is: -650977440

问题在哪里呢?
请大家不吝赐教,谢谢。

讨论数量: 2
秦晓武

没搭环境测试,建议这里输出下

printf("\n\n a: %d", a[i]);
printf("\n\n max: %d", *max);
printf("\n\n min: %d", *min);
*max = (*max <= a[i] ? a[i] : *max);

C里面的指针和引用逻辑我不记得了。。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!