c语言实验题 最值

这是一个C语言编程实验,要求读取一个整数序列,找到其中的最大值和最小值,然后将最小值与序列的第一个数交换,最大值与最后一个数交换。程序通过遍历数组两次找到最大值和最小值的索引,然后进行交换操作。最后输出交换后的序列。注意处理最大值可能位于首位的情况。
摘要由CSDN通过智能技术生成
c语言实验题 最值
描述

有一个长度为n的整数序列。请写一个程序,把序列中的最小值与第一个数交换,最大值与最后一个数交换。输出转换好的序列。

输入

输入包括两行。

第一行为正整数n(1≤n≤10)。
第二行为n个整数组成的序列。

输出

输出转换好的序列。数据之间用空格隔开。

结果保证唯一。

思路很简单,找到数组中的最大值跟最小值的下表记录,在最后按要求进行交换,但是不要忘记数组中的最大值跟最小值会出现在数组首位或者数组末尾,也就是最大值与最小值的位置出现在要求交换的位置。

#include <stdio.h>

int main()
{
    int arr[10], n, i;
    scanf("%d", &n);
    for(i=0;i<n;i++)
    {
        scanf("%d", &arr[i]);
    }
    int max=0;
    int min=0;
    for(i=0;i<n;i++)
    {
        max=arr[max]<arr[i]?i:max;
        min=arr[min]>arr[i]?i:min;
    }
    int temp;
    temp=arr[0];
    arr[0]=arr[min];
    arr[min]=temp;

    if(max==0) max=min; //不要忘记最大值在数组首位的情况
    
    temp=arr[n-1];
    arr[n-1]=arr[max];
    arr[max]=temp;
    
    for(i=0;i<n;i++)
    {
        printf("%d", arr[i]);
        if(i<n-1)
            printf(" ");
    }

    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值