在处理数字的数字时,需要应用计算除法余数的操作。
让我们分析以下任务:
给出了一个三位数。显示这个数的所有数字,得到个位和百位排列的新数
初学者遇到的最困难的问题是如何从数字中取出数字。
事实上,如果你还记得数学,一切都可以很简单地解决。而数学告诉我们,任何数都可以分解成数项之和。
例如:
365=3*100+6*10+5*1
。我们看到每个数字都是数字对应数字的乘数。
我们将展示如何将数字的每个数字放入一个单独的变量中,使用将列除以数字 10 的示例。(我们取数字 10,因为我们有十进制数字系统,因此我们有数字项1、10、100 等)
分析图,你可以看到,
<前>
<代码>e := n mod 10; // 操作 n mod 10 - 计算数字 n 的最后一位(即数字的单位)
365 mod 10 = 5
d := n div 10 mod 10; // 操作 n div 10 - 将数字减少 10 倍,即丢弃数字的最后一位 (
365 div 10 = 36),
// 现在我们可以通过对结果应用熟悉的操作来计算十位数 - 计算除以数字 10 后的余数,
36 mod 10 = 6
s := n 格 100; // 要得到百,舍去数字右边的两位即可,即除以10两次(
n div 10 div10 或与
n div 100<相同/strong>) 365 格 100 = 3
代码>
有了数字的保存数字,我们可以通过将所需数字乘以相应数字来从中得到任何数字:
例如,下面的行将从原来的数字 n 中得到一个新的数字,重新排列了百位和个位:
1)旧的个数(保存在变量 e) 乘以100
2) 旧的十位数(保存在变量d) 乘以 10
3) 我们可以简单地将旧的百位数字乘以 1,或者简单地取存储在变量 s
中的值
然后只需将点 1、2 和 3 的值相加并得到一个新数字:
n1 := e * 100 + d * 10 + s;
整个程序将如下所示:
<前>
var n, e, d, s: 整数;
开始
阅读(n);
e := n mod 10;
d := n div 10 mod 10;
s := n 格 100;
writeln(e, ' ', d, ' ', s, ' ', e * 100 + d * 10 + s);
结尾。
代码>