输入10个整数,写一个函数将其中最小数和第一个数对换,把最大数和最后一个数对换。要求用指针法实现。

 

数组和指针区别不大

void exchange(int *a,int n)
{
    int i,t,min = 0,max = 0;
    for(i=1;i<n;i++)
    {
        if(*(a+i) > *(a+max))
            max = i;
        if(*(a+i) < *(a+min))
            min = i;
    }
    if(min != 0)
    {
        t = *a;
        *a = *(a+min);
        *(a+min) = t;
    }
    if(max != n-1)
    {
        t = *(a+n-1);
        *(a+n-i) = *(a+max);
        *(a+max) = t;
    }
}

void main()
{
    int a[10],i;
    for(i=0;i<10;i++)
        scanf("%d",a+i);
    exchange(a,10);
      for(i=0;i<10;i++)
        printf("%d ",*(a+i));
}

 

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m

#include <stdio.h>void exchange(int a,int n){ int i,t,min=0,max=0; for(i=0;i<n;i++) { if(*(a+i)>(a+max)) max=i; if((a+i)<(a+min)) min=i; } if(min!=0) { t=*a; a=(a+min); (a+min)=t; } if(max!=n-1) { t=(a+n-1); (a+n-1)=(a+max); (a+max)=t; }}int main( ){ int a[10],i; for(i=0;i<10;i++) scanf("%d",a+i); exchange(a,10); for(i=0;i<10;i++) printf("%d",(a+i));}