C语言数字交换

注意特判max可能在a[0]位置,此时调换最小值后最大值下标会不准确,需要将最大值下标更新为上一步交换后的下标。

int a[10];

int main()
{
    string line;
    while(getline(cin,line))
    {
        stringstream ss(line);
        int minIndex=0,maxIndex=0;
        for(int i=0;i<10;i++)
        {
            ss>>a[i];
            if(a[i] < a[minIndex]) minIndex=i;
            if(a[i] > a[maxIndex]) maxIndex=i;
        }

        swap(a[0],a[minIndex]);

        if(maxIndex == 0) maxIndex=minIndex;
        swap(a[9],a[maxIndex]);

        for(int i=0;i<10;i++)
            cout<<a[i]<<' ';
        cout<<endl;
    }
    //system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/fxh0707/p/14412251.html