[Java] 实验10

50011

这题考察如何定义method。method主要由

    - 返回值 (return value)

    - 方法名 (method name)

    - 参数列表 (argument list)

    - 方法体 (method body)

组成。

这题的max方法,大概是:

int max(int a, int b, int c) {
  // ...
}

60001 求平均值

注意经常出现的错误:整数除整数,结果仍为整数。


60002 求最大值及其下标

这题考察遍历数组的方法:

for (int i = 0; i < array.length; ++ i) {
  // 通过 arrray[i] 可以访问数组 array 的第 i 个元素
}


60003 逆序输出

逆序访问数组即可:

for (int i = array.length - 1; i >= 0; -- i) {
  // todo
}

60004 交换最小值和最大值

解题思路

1. 通过60002, 我们可以找到最大值及其下标。由此可以把该值 maximum 与数组元素 array[0] 交换。

2. 稍微修改程序,我们可以找到最小值及其下表。由此可以把该值 minimal 与数组末尾元素 array[array.length - 1] 交换。

3. 如何交换。大家可以参考下述这段可复用(在1, 2步骤中,都可以调用它)的代码

// 交换 array[idx1] 和 array[idx2]
static void swap(int[] array, int idx1, int idx2) {
  int temp = array[idx1];
  array[idx1] = array[idx2];
  array[idx2] = temp;
}

// 在main函数中,假如有下述数组
int[] a = new int[] {0, 1, 2, 3};
// 通过下述的swap函数,数组 a 会变成 {3, 1, 2, 0}
swap(a, 0, a.length - 1);
大致刻画解题思路的代码如下:

public static void main(String[] args) {
  // ...
  for (int ri = 0; ri < repeat; ++ ri) {
    int nums = new int[n];
    // input n numbers 
    // ...
    int maxIdx = minIdx = 0;
    for (int i = 0; i < n; ++ i) {
      // Find the real maxIdx and minIdx here
    }
    swap(nums, maxIdx, 0);
    swap(nums, minIdx, nums.length - 1);
  }
}

static void swap(int[] array, int idx1, int idx2) {
  int temp = array[idx1];
  array[idx1] = array[idx2];
  array[idx2] = temp;
}

60011 矩阵运算

1. 通过下述代码可以访问矩阵中的第 i 行 第 j 列的元素:

for (int i = 0; i < n; ++ i) 
  for (int j = 0; j < n; ++ j)
    // todo ...
    // 注意:如果你要在 for 中执行多条语句,那么需要加上花括号
2. 读清题意,只有 同时满足下述三种情况的数字才能被加入 sum 中:

    - 不在最后一行 (i != ?)

    - 不在最后一列 (j != ?)

    - 不在副对角线上 (i + j != ?)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值