C语言编程,要用指针。输入十个数,将最小值与第一个互换,最大值与最后一个互换,输出十个数。

如题所述

#include <stdio.h>
#include <string.h>
int main()
{
void input(int number[10]);
void max_min_value(int array[10]);
void output(int array[10]);
int number[10];
input(number);
max_min_value(number);
output(number);
}
void input(int number[10])//输入函数
{
int *p=number;
printf("Input 10 numbers:");
for(p=number;p<number+10;p++)
scanf("%d",p);
}

void max_min_value(int array[10])//交换最大值和最小值函数
{
int *max,*min,*p,*array_end,temp;//temp为整型变量,用于后面的值交换
array_end=array+10;
max=min=array;
for(p=array+1;p<array_end;p++)
if(*p>*max) max=p;
else if(*p<*min) min=p;
temp=array[0];array[0]=*min;*min=temp;
temp=array[9];array[9]=*max;*max=temp;;
}
void output(int array[10])//输出函数
{
int *p;
printf("Now, they are:");
for(p=array;p<array+10;p++)
printf("%d ",*p);
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-12-09
    int num[10] = { 2, 3, 4, 5, 6, 7, 8, 9, 0, 1 };
    int temp;
    int *begin = num;
    int *end = num + 9;

    for (int *pointer = begin; pointer <= end; pointer ++)
    {
        if (*pointer < *begin)
        {
            temp = *pointer;
            *pointer = *begin;
            *begin = temp;
        }

        if (*pointer > *end)
        {
            temp = *pointer;
            *pointer = *end;
            *end = temp;
        }
    }

    for (int *pointer = begin; pointer <= end; pointer++)
    {
        printf("%d\n", *pointer);
    }

相似回答