C语言编程:输入n个数,将最大的与第一个数交换,最小的与最后一个数交换,输出交换后的结果

要求:编写子函数void max_min(int *p,int n)实现最大的与第一个数交换,最小的与最后一个数交换。提示:函数内部定义局部指针变量max,min分别指向最大值和最小值,利用循环查找最大值和最小值,循环结束的条件是p指向数组以后的位置。
编写子函数void output(int array[],int n)利用指针方法实现数组元素的输出。
主函数实现输入数组长度以及数组元素值的输入,并调用上述两个函数实现程序功能。

#include <stdio.h>

void swap(int *a, int *b)
{
printf("%d, %d\n", *a, *b);
int t = *a;
*a = *b;
*b = t;
}

void max_min(int *p, int n)
{
int l = n;
int *max = p, *min = p;

while (n--) {
min = *p > *min ? min : p;
p++;
}
swap(min, --p);

while (l--) {
max = *p > *max ? p : max;
p--;
}
swap(max, ++p);

}

void output(int array[], int n)
{
int *p = array;
while (n--)
printf("%d ", *p++);
printf("\n");
}

int main(void)
{
int i;
int n;
int buf[128];

printf("input count of array:");
scanf("%d", &n);
printf("input %d num:", n);
for (i = 0; i < n; i++)
scanf("%d", &buf[i]);
max_min(buf, n);
output(buf, n);
return 0;
}

追问

话说不大对哇。。

追答

话说我验证过的哇

追问

    原来是多了printf("%d, %d\n", *a, *b);这一句,还是谢谢你了

 

 

追答

咋回事?你编译那错误是咋来的?

温馨提示:答案为网友推荐,仅供参考
相似回答