在底特律吃饼干的设计师 2022-01-06 11:12 采纳率: 100%
浏览 254
已结题

将数组中最大值与最后一个值交换,最小值与第一个数交换

哪位大佬帮我看一下这个程序,为什么先让最大值与最后一个数交换就可以实现这个程序目的,而先交换最小值却不可以

img

img

  • 写回答

1条回答 默认 最新

  • 关注

    当最小值在最后一个位置、最大值在第一个位置的时候,先交换最小值在交换最大值等于没有交换。
    在for循环之前,p和k需要重置为0
    代码修改如下:

    #include <stdio.h>
    int main()
    {
        int a[10];
        int n,i,max,min,t,p,k,u;
        scanf("%d",&n);
        scanf("%d",&a[0]);
        max=a[0];
        min=a[0];
        p = 0;
        k = 0;
        for (i=1;i<n;i++)
        {
            scanf("%d",&a[i]);
            if(max<a[i])
            {
                max=a[i];
                p=i;
            }
            if(min >a[i])
            {
                min=a[i];
                k=i;
            }
        }
        if(p==0 && k==n-1) //最大值在第一个位置,最小值在最后一个位置
        { //交换一次即可
            t = a[p];
            a[p]=a[k];
            a[k]=t;
        }else if(p==0) //最大值在第一个位置
        {
            //先把最大值放在最后
            u=a[p];
            a[p]=a[n-1];
            a[n-1]=u;
            //然后在把最小值放在最开始
            t=a[k];
            a[k]=a[0];
            a[0]=t;
        }else if(k == n-1) //最小值在最后一个位置(这个跟最后的else合并也可以)
        {
            //先把最小值放在开头
            t=a[k];
            a[k]=a[0];
            a[0]=t;
            //然后在把最大值放在末尾
            u=a[p];
            a[p]=a[n-1];
            a[n-1]=u;
        }else
        {
            t=a[k];
            a[k]=a[0];
            a[0]=t;
            u=a[p];
            a[p]=a[n-1];
            a[n-1]=u;
        }
        
        for(i=0;i<n;i++)
            printf("%d ",a[i]);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月14日
  • 已采纳回答 1月6日
  • 创建了问题 1月6日

悬赏问题

  • ¥15 lingo18勾选global solver求解使用的算法
  • ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
  • ¥15 Python3.5 相关代码写作
  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里