c语言输入10个整数,将其中最大数与第一个数交换,最小数与最后一个数交换(要求用指针方法实现)

#include <stdio.h>#include<string.h>#include<stdlib.h>#define N 5#define M 2int main(){ int a[N]; int* p=a; void input(int*p); void exchange(int*p); void output(int*p); input(p); exchange(p); output(p);}void input(int*p){ int i; printf("input the integer:"); for(i=0;i<N;i++) scanf("%d",p+i);}void exchange(int*p) //将最小的数与第一个数对换,把最大的数与最后一个数对换。{ int i,max=*p,min=*p,temp; //这个时候只能定义max,min为指针 for(i=1;i<N;i++) if(*(p+i)>max) max=*(p+i); else if(*(p+i)<min) min=*(p+i); temp=*p;*p=min;min=temp; if(max==*p) max=min; temp=*(p+N-1);*(p+N-1)=max;max=temp;}void output(int*p){ int i; for(i=0;i<N;i++) printf("%5d",*(p+i));}
#include <stdio.h>
#include<string.h>
#include<stdlib.h>
#define N 5
#define M 2
int main()
{ int a[N];
int* p=a;
void input(int*p);
void exchange(int*p);
void output(int*p);
input(p);
exchange(p);
output(p);
}
void input(int*p)
{ int i;
printf("input the integer:");
for(i=0;i<N;i++)
scanf("%d",p+i);
}
void exchange(int*p) //将最小的数与第一个数对换,把最大的数与最后一个数对换。
{
int i,max=*p,min=*p,temp; //这个时候只能定义max,min为指针
for(i=1;i<N;i++)
if(*(p+i)>max)
max=*(p+i);
else if(*(p+i)<min)
min=*(p+i);
temp=*p;*p=min;min=temp;
if(max==*p) max=min;
temp=*(p+N-1);*(p+N-1)=max;max=temp;
}
void output(int*p)
{
int i;
for(i=0;i<N;i++)
printf("%5d",*(p+i));
}

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define N 5
#define M 2
int main()
{
    int a[N];
    int* p = a;
    void input(int* p);
    void exchange(int* p);
    void output(int* p);
    input(p);
    exchange(p);
    output(p);
}
void input(int* p)
{
    int i;
    printf("input the integer:");
    for (i = 0; i < N; i++)
        scanf("%d", p + i);
}
void exchange(int* p) //将最小的数与第一个数对换,把最大的数与最后一个数对换。
{
    int i, *max = p, *min = p, temp; //<===========
    for (i = 1; i < N; i++)
        if (*(p + i) > *max)//<===========
            max = (p + i);//<===========
        else if (*(p + i) < *min)//<===========
            min = (p + i);//<===========
    temp = *p;
    *p = *min;//<===========
    *min = temp;//<===========
    if (*max == *p)//<===========
        max = min;
    temp = *(p + N - 1);
    *(p + N - 1) = *max;//<===========
    *max = temp;//<===========
}
void output(int* p)
{
    int i;
    for (i = 0; i < N; i++)
        printf("%5d", *(p + i));
}

追问

为什么max,min得是指针型呢,不能是整型数据啊

追答

那样的话你是在交换max/min变量和数组首末的值,而不是数组中的最大值/最小值和数组首末的值

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