输入一个一维数组,最大的与第一个元素交换,最小的与最后一个元素交换,输出数组。

import java.util.*;  
  
public class Jiaohuan {  
  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        int n = 0;  
        Scanner nn = new Scanner(System.in);  
        System.out.println("输入数组长度");  
        n  = nn.nextInt();  
        int[] a = new int [n];  
        Scanner reader = new Scanner(System.in);  
        System.out.println("输入数组元素");  
        for(int i=0;i<n;i++){  
            a[i]  = reader.nextInt();  
        }  
        System.out.print("输入的数组是:");  
        for(int i:a){  
            System.out.println(i);  
        }  
        int min = n-1,max = 0,temp;  
        for(int i=0;i<n-1;i++){            
            if(a[max] < a[i]){  
                temp = a[max];  
                a[max] = a[i];  
                a[i] = temp;  
            }  
            if(a[min] > a[i]){  
                temp = a[min];  
                a[min] = a[i];  
                a[i] =temp ;  
            }  
        }  
        System.out.println("交换后");  
        for(int i:a){  
            System.out.print(i);  
        }  
    }  
}  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,这个问题可以解答。以下是示例代码: ```c #include <stdio.h> #define MAX_SIZE 100 int main() { int arr[MAX_SIZE], n, max_idx, min_idx, temp; printf("请输入数组长度 n:"); scanf("%d", &n); printf("请输入 %d 个整数:", n); for (int i = 0; i < n; i++) { scanf("%d", &arr[i]); } max_idx = min_idx = 0; for (int i = 1; i < n; i++) { if (arr[i] > arr[max_idx]) { max_idx = i; } else if (arr[i] < arr[min_idx]) { min_idx = i; } } temp = arr[max_idx]; arr[max_idx] = arr[min_idx]; arr[min_idx] = temp; printf("对调后的数组为:"); for (int i = 0; i < n; i++) { printf("%d ", arr[i]); } return 0; } ``` 该程序先读取用户输入的数组长度 n 和 n 个整数,然后遍历数组找到最大值和最小值的下标,交换个元素的值,最后输出对调后的数组。 需要说明的是,此代码仅为示例,实际应用需要考虑输入错误(比如用户输入的 n 太大或太小)导致的异常情况。 ### 回答2: 要将n个数输入到一维数组,并将值最大数组元素与值最小数组元素的位置对调后输出,可以按照以下步骤进行操作: 1. 首先,声明一个大小为n的一维数组来存储输入的n个数。 2. 迭代输入n个数,并将它们依次存储到数组中。 3. 定义个变量,用于记录最大值和最小值的索引。初始化最大值索引为0,最小值索引为0。 4. 通过比较每个数组元素的值,更新最大值和最小值索引。 5. 使用一个临时变量来交换最大值和最小值的位置。 下面是一个具体的代码示例: ``` #include <iostream> using namespace std; int main() { int n; cout << "请输入数组的大小n:"; cin >> n; int arr[n]; cout << "请输入" << n << "个数:"; for (int i = 0; i < n; i++) { cin >> arr[i]; } int maxIndex = 0; int minIndex = 0; for (int i = 1; i < n; i++) { if (arr[i] > arr[maxIndex]) { maxIndex = i; } if (arr[i] < arr[minIndex]) { minIndex = i; } } // 交换最大值和最小值的位置 int temp = arr[maxIndex]; arr[maxIndex] = arr[minIndex]; arr[minIndex] = temp; cout << "值最大最小数组元素对调后得到的数组:"; for (int i = 0; i < n; i++) { cout << arr[i] << " "; } return 0; } ``` 这样,就可以将值最大数组元素与值最小数组元素的位置对调后输出。 ### 回答3: 首先,我们需要定义一个一维数组 arr,并将 n 个输入的数存入其。 找到最大值和最小值的位置,可以通过遍历数组的方法实现: - 首先,假设数组第一个元素既是最大值也是最小值,将其位置分别存储在 max_pos 和 min_pos 。 - 然后,从数组的第二个元素开始遍历,如果遇到更大的数,将其位置更新为 max_pos,如果遇到更小的数,将其位置更新为 min_pos。 - 遍历完成后,我们就得到了最大值和最小值的位置。 将最大值和最小值对应的元素进行位置对调,可以通过临时变量 temp 辅助实现: - 首先,将最大值存入 temp。 - 然后,将最小值所对应的元素值存入最大值所对应的位置。 - 最后,将 temp 的值存入最小值所对应的位置。 最后,我们将修改后的数组输出即可。 以下是实现该过程的示例代码: ``` def swap_max_min(arr): n = len(arr) if n == 0: return arr max_val = arr[0] min_val = arr[0] max_pos = 0 min_pos = 0 for i in range(1, n): if arr[i] > max_val: max_val = arr[i] max_pos = i elif arr[i] < min_val: min_val = arr[i] min_pos = i temp = arr[max_pos] arr[max_pos] = arr[min_pos] arr[min_pos] = temp return arr # 调用函数示例 n = int(input("请输入数组的长度: ")) arr = [] for i in range(n): num = int(input("请输入第{}个数: ".format(i+1))) arr.append(num) result = swap_max_min(arr) print("交换后的数组为: ", result) ``` 通过以上的代码实现,可以将输入的 n 个数存入一维数组 arr ,并将值最大数组元素与值最小数组元素的位置对调后输出

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值