Gu-f


私信TA

用户名:2417225563

访问量:12112

签 名:

等  级
排  名 797
经  验 2844
参赛次数 7
文章发表 20
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:先找最小值交换,再找最大值再交换。

注意事项:不要一块找出最大最小然后交换,不然下脚标会出现问题。

参考代码:

#include<stdio.h>
#include<stdlib.h>
int a[10];//全局变量存放数据
void inputs(void)//输入函数
{
    for(int i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
}
void swaps(void)//功能交换函数
{
    int tempmin,tempmax,temp,flag1=0,flag2=1;//此处flag1为0,flag2为1是因为flag2在第二次查找用,第一次已经把最小值放到最前面a[0]了,所以从a[1]开始标记即可。
    tempmin=a[0];//把第一个数给tempmin
    for(int i=0;i<10;i++)//查找最小值
    {
        if(tempmin>a[i])
        {
            tempmin=a[i];
            flag1=i;//如果找到最小就标记
        }
    }
    temp=tempmin;//开始进行交换
    a[flag1]=a[0];
    a[0]=temp;
    tempmax=a[0];//把改变后的第一个数给tempmax,注意是第一步交换完最小值之后的a[0],不能放在最前面是因为进行交换之后a[0]的值发生了变化。
    for(int i=0;i<10;i++)//查找最大值
    {
        if(tempmax<a[i])
        {
            tempmax=a[i];
            flag2=i;//找到就标记
        }
    }
    temp=tempmax;//开始进行交换
    a[flag2]=a[9];
    a[9]=temp;
}
void print(void)//输出函数
{
    for(int i=0;i<10;i++)
    printf("%d ",a[i]);
}
int main()//主函数
{
    inputs();//三次函数调用
    swaps();
    print();
    return 0;
}


 

0.0分

0 人评分

  评论区