qq_37077232 2022-11-30 10:40 采纳率: 96%
浏览 21
已结题

C语言如何将数组的第一个数与最小值兑换后输出,最大值与最后一个值兑换后输出

问题遇到的现象和发生背景

我想到了选择性排序,但是调换后
1.最小的确实在最前面,但第一个数不在最小的数的原始位置
2.最大值不在最后面

用代码块功能插入代码,请勿粘贴截图
#include <stdio.h>
   void sort(int *a)
   {
       int j,temp1,temp2;
            for(j=1;j<10;j++)
            {
                if(a[0]>=a[j])
                {
                    temp1=a[0];
                    a[0]=a[j];
                    a[j]=temp1;
                }
            }
            for(int i=0;i<9;i++)
            {
                if(a[9]<=a[j])
                {
                    temp2=a[9];
                    a[9]=a[j];
                    a[9]=temp2; 
                }
            }
        printf("调整后的数组为:\n");
        for (int k=0;k<10;k++)
        {
            printf("%d ",a[k]); 
         } 
        return;       
   }
   int main()
{
    int arr[10],*p; 
    printf("请输入十个数:\n");
    for(int i=0;i<10;i++)
    {
    scanf("%d",&arr[i]);
    }
    p=arr;
    sort(p); 
    return 0;
 } 

运行结果及报错内容

img

  • 写回答

4条回答 默认 最新

  • qzjhjxj 2022-11-30 14:35
    关注

    修改如下,供参考:

    #include <stdio.h>
    void sort(int* a,int n)
    {
        int i, temp, max_i = 0, min_i = 0;
        for (i = 0; i < n; i++)//查找最大最小值位置
        {
            if (a[i] > a[max_i])
                max_i = i;
            if (a[i] < a[min_i])
                min_i = i;
        }
        temp = a[0];  //第一个数与最小值兑换
        a[0] = a[min_i]; 
        a[min_i] = temp;
    
        if (max_i == 0) 
            max_i = min_i; //如果最大值在第一个位置,则现在已经移动到 a[min_i]位置了
    
        temp = a[n - 1];  //最大值与最后一个值兑换
        a[n - 1] = a[max_i]; 
        a[max_i] = temp;
    
        printf("调整后的数组为:\n");
        for (i = 0; i < n; i++)
            printf("%d ", a[i]);
        return;
    }
    int main()
    {
        int arr[10], * p;
        printf("请输入十个数:\n");
        for (int i = 0; i < 10; i++)
            scanf("%d", &arr[i]);
        p = arr;
        sort(p, 10);
        return 0;
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(3条)

报告相同问题?

问题事件

  • 系统已结题 12月8日
  • 已采纳回答 11月30日
  • 创建了问题 11月30日

悬赏问题

  • ¥15 图像超分real-esrgan网络自己训练模型遇到问题
  • ¥15 如何构建全国统一的物流管理平台?
  • ¥100 ijkplayer使用AndroidStudio/CMake编译,如何支持 rtsp 直播流?
  • ¥15 用js遍历数据并对非空元素添加css样式
  • ¥15 使用autodl云训练,希望有直接运行的代码(关键词-数据集)
  • ¥50 python写segy数据出错
  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥30 3D多模态医疗数据集-视觉问答
  • ¥20 设计一个二极管稳压值检测电路
  • ¥15 内网办公电脑进行向日葵