整数拆分 内存练习Q1 E03
Java 版
背景
关于整数拆分,我们写出了一个数组和循环的版本
1 2 3 4 5 6 7 8 9 10 11 12 13 int number = Console.readInt(); int[] digits = new int[3]; for (int i = 0; i < 3; i++) { digits[i] = number % 10; number = number / 10;} for (int i = 0; i < 3; i++) { int index = 2 - i; Console.println(digits[index]);}
这个时候 小可同学 说 “既然两个 for 语句的格式都一样,为什么不合并?”
于是小可写出了下面的代码
1 2 3 4 5 6 7 8 9 10 int number = Console.readInt(); int[] digits = new int[3]; for (int i = 0; i < 3; i++) { digits[i] = number % 10; number = number / 10; int index = 2 - i; Console.println(digits[index]);}
然而,结果却错了。
要求
请你
1. 对 小可的代码 走人工内存,画内存表
2. 求出 小可的代码 如果输入 319,会显示什么
3. 用文字解释,为什么小可的代码的结果有问题,逻辑层面解释。
参考案例
下面是 小可改之前的代码,以及对应的内存表
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 int number = Console.readInt(); int[] digits = new int[3]; for (int i = 0; i < 3; i++) { digits[i] = number % 10; number = number / 10;} for (int i = 0; i < 3; i++) { int index = 2 - i; Console.println(digits[index]);}
内存
Line
1 319 > 319
3 | [0, 0, 0]
5 | | 0 = true
6 | [9, 0, 0] |
7 31 | |
8 | | |
5 | | 1 = true
6 | [9, 1, 0] |
7 3 | |
8 | | |
5 | | 2 = true
6 | [9, 1, 3] |
7 0 | |
8 | | |
5 | | 3 = false
8 | | x
10 | | 0 = true
11 | | | 2
12 | | | | < 3
13 | | | x
10 | | 1 = true
11 | | | 1
12 | | | | < 1
13 | | | x
10 | | 2 = true
11 | | | 0
12 | | | | < 9
13 | | | x
10 | | 3 = false
13 | | x
end x x
number digits i indexPython 版
背景
关于整数拆分,我们写出了一个列表和循环的版本
1 2 3 4 5 6 7 8 9 10 number = int(input()) digits = [] for i in range(3): digits.append(number % 10) number //= 10 for i in range(3): print(digits[2 - i])
这个时候 小可同学 说 “既然两个 for 语句的格式都一样,为什么不合并?”
于是小可写出了下面的代码
1 2 3 4 5 6 7 8 number = int(input()) digits = [] for i in range(3): digits.append(number % 10) number //= 10 print(digits[2 - i])
然而,结果却错了。
要求
请你
1. 对 小可的代码 走人工内存,画内存表
2. 求出 小可的代码 如果输入 319,会显示什么
3. 用文字解释,为什么小可的代码的结果有问题,逻辑层面解释。
参考案例
下面是 小可改之前的代码,以及对应的内存表
代码
1 2 3 4 5 6 7 8 9 10 number = int(input()) digits = [] for i in range(3): digits.append(number % 10) number //= 10 for i in range(3): print(digits[2 - i])
内存
Line Variables Info
1 319
3 | []
5 | | 0
6 | [9] |
7 31 | |
5 | | 1
6 | [9, 1] |
7 3 | |
5 | | 2
6 | [9, 1, 3] |
7 0 | |
9 | | 0
10 | | | < 3
9 | | 1
10 | | | < 1
9 | | 2
10 | | | < 9
number digits i 