作业帮 > 综合 > 作业

C语言最大值和最小值排序问题

来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/07/11 22:29:15
C语言最大值和最小值排序问题
输入10个整数,将其中最小的数与第一个数兑换,把最大的数与最后一个数兑换.
C语言最大值和最小值排序问题
#include <stdio.h>

int mian()
{
    int i,x,y,min,max;
    int a[10]={0};
    printf("please input 10 num:\n");
    //循环输入10个整数
    for(i=0;i<10;i++)
    {
        scanf("%d",&a[i]);
    }
    //假设最大最小值
    min=a[0];
    max=a[0];
    //循环遍历等到最大和最小值
    for(i=0;i++;i<10)
    {
        if(min>a[i])
            min=a[i];
        if(max<a[i])
            max=a[i];
    }
    //取得最大值和最小值的下标位置(仅适用于最大值和最小值有且仅有一个的情况)
    for(i=0;i++;i<10)
    {
        if(min==a[i])
            x=i;//最小值位置
        if(max==a[i])
            y=i;//最大值位置
    }
    //交换最大和和最后一个数,交换最小值和第一个数
    a[1]=a[1]+a[x];
    a[x]=a[1]-a[x];
    a[1]=a[1]-a[x];
    a[9]=a[9]+a[y];
    a[x]=a[9]-a[y];
    a[9]=a[9]-a[y];
    //输出交换位置后的数组a
    for(i=0;i++;i<10)
    {
        printf("a[%d]=%d\n",i,a[i]);
    }
    return 0;
}
再问: //假设最大最小值 min=a[0]; max=a[0]; 你这里 为什么要假设最大最小值 而且 还有在怎么操作数组的情况下 需要用到假设最大最小值的呢
再答: 因为最大和最小值必然在这个数组中产生,如果不假设,很可能最大或最小值是一个不可预料的数。