文章

34

粉丝

179

获赞

13

访问

185.5k

头像
浙江工商大学(2019上机题-最值)
备考心情
发布于2022年2月26日 13:10
阅读数 5.4k

一刷,这种做法不太好,存在以下几个问题:

1、先把最大值最小值及其坐标找到后,在进行交换时,可能交换的恰是最小值与最大值,这样原本的下标就乱了,最终的结果也就错了。

2、本题做的时候还发现一个问题,就是开始传入数字到int[]里面,但是strlen()是不能用来求其长度的,strlen()适用于char[],且本题会传入n,直接用n即可

改进:

1、先找最小值,交换后再找最大值,再交换,就不会出现上面的问题

2、交换部分用一个swap函数 

#include <iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int a[20];
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    int min=a[0];
    int max=a[0];
    int minpos=0;
    int maxpos=0;
    int temp1=0;
    int temp2=0;
    for(int i=0;i<n;i++){
        if(a[i]>max){
                max=a[i];
                maxpos=i;
        }
        if(a[i]<min){
                min=a[i];
                minpos=i;
        }
    }
    temp1=a[0];
    if(temp1==max)
        maxpos=minpos;
    a[0]=min;
    a[minpos]=temp1;
    temp2=a[n-1];
    a[n-1]=max;
    a[maxpos]=temp2;
    for(int i=0;i<n;i++){
        if(...
登录查看完整内容


登录后发布评论

暂无评论,来抢沙发