练习题:让数组中每一个元素除以首元素

本文探讨了一种修改for循环条件的方法,通过从数组末尾向前遍历并计算每个元素除以首元素,解决了在数组操作中首元素意外变成1的问题。通过反向迭代,确保了所有元素正确更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:定义一个int类型的数组,让数组中每个位置的值除以首位置的元素,得到的结果,作为该位置上的新值。组成新的数组

按照常规的思路:
进行一个for循环,让i在小于数组长度时,所在位置的数字除以首个元素。

public class test {
    public static void main(String[] args) {
        int[] arr = new int[]{12,24,36,43,56,77,432};
		//执行 除 操作
        for (int i = 0; i <arr.length; i++) {
            arr[i] = arr[i] / arr[0];
        }
		//遍历输出
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+" ");
        }
    }
    
}

结果如下,可见第一个元素变为1,其余的元素都不变。
找出原因很简单,因为i从0开始时,数组第一个元素12除以自身变成了1,后续的计算再怎么除就都是不变的结果。
在这里插入图片描述
只要把i从1开始就能解决问题 了吗?

for (int i = 1; i <arr.length; i++) {
            arr[i] = arr[i] / arr[0];
        }

在这里插入图片描述
把i从1开始实际上是跳过了第一个元素计算的过程,所以即使后面的计算好了,首个元素应该是1才对(注意题目说是每个元素)。

正方向遍历不行,反方向是否可以呢。按照设想,数组中最后一个元素除以首元素,然后依次向前,最后一个元素除以自身就可以了

for (int i = arr.length - 1; i >=0; i--) {
            arr[i] = arr[i] / arr[0];
        }

在这里插入图片描述
输出结果至此正确。

“能够不依靠别人就认可自己的价值,这样才能不再把自己困在旧时光里”----板鸭

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值