当前位置: 首页>前端>正文

实战案例:计算三位数各个数位的和

   案例描述

使用 JavaScript 编程实现:用户输入一个三位数,计算这个三位数的各个数位的总和。比如用户输入 316,

就要弹出 10。因为 316 的各个数位 3 + 1 + 6 等于 10。

算法

明显的,这个题目的难点就是如何拆解一个三位数字,即如何能够提炼出这三位数字的百位、十位和个位。

用数字 316 来举例,如何拆解里面的 3、1、6 呢?JavaScript 中没有现成的函数可以拆解一个三位数,我

们必须用一些巧妙的数学方法解决问题,这就叫算法。编程中,使用 API 往往和容易,但是提出一个好的算法

是较难的。

我们来看这个案例的算法:

个位非常好获得,我们只需要计算 316 % 10 即可,明显的,316 除以 10 的余数是 6,从而得到个位数。

十位如何获得呢?即如何从 316 中得到 1 呢?稍加思考,我们就能想到一个“曲线救国”的路线:用 316

除以 10 得到 31.6,然后取整得到 31,再计算 31 % 10 得到 1。

百位呢?对于数字 316 来说,如何得到 3 呢?可以用 316 除以 100 得到 3.16,然后取整就能得到 3 了。

至此,我们非常漂亮的获得了所有数位。可见,获得每个数位的方法各有不同,我们使用了取整、求余等操

作。如何能够快速想到这样的算法,是需要通过多写程序来不断积累的。在工作中,评判一个工程师技术的水平

如何,很重要的一个标准就是看他(她)的算法能力是不是强。同学们一定要注意培养自己的算法能力,而算法

能力的培养绝不是一朝一夕的,需要你动手写大量程序,慢慢感悟,举一反三。

案例代码

综合上一小节的算法知识,我们可以写出完整的案例代码,计算用户输入的三位数的各个数位之和:

//第一步,用户输入数字

var a = Number(prompt("请输入三位数"));

//第二步,拆分每个位数

var gewei = a % 10;

var shiwei = parseInt(a / 10) % 10;

var baiwei = parseInt(a / 100);

//第三步,算总和

var sum = gewei + shiwei + baiwei;

//第四步,输出

alert("各个数位的和是" + sum);

运行网页,在弹出的输入对话框中我们输入 925

点击确定按钮之后,弹出警告框显示结果 16,这正是 925 各个数位之和,我们验算一下结果,9 + 2 + 5

等于 16,程序编写正确。

本章作业题

1. 下面列出的变量名是否符合标识符命名规范?

① $_$ ② $ ③ a1 ④ 2nd

2. 试用有意义的英语单词以驼峰命名法命名下面的变量:

① 盒子 box 的 left 位置 ② 全部成绩总和 ③最高的语文成绩

3. 口算下面求余运算,并在控制台 REPL 环境检查你的结果是否正确:

56 % 6

41 % 4

5 % 1

1 % 5

4. 上网寻找进制转换的相关资料,然后回答下面的数字分别表示十进制的多少:

0b10101

0xabcd

0777

5. 阅读下面的程序,写出程序的输出结果。

var a = 3;

var b = 4;

var c = a++ + b++ + ++a + ++b;

console.log(c);

6. 阅读下面的程序,写出程序的输出结果。

var a = "3.2";

var b = 1.4;

var c = parseInt(a + b);

console.log(c);

7. 阅读下面的程序,写出程序的输出结果。

var a = 5 && true;

var b = false || 6;

console.log(a + b);

8. 下面 4 个表达式中,结果为 NaN 的是哪些?

① 100 / 0;

② 0 / 0;

③ parseInt("爱前端");

④ "NaNxyz" - "xyz";

9. 用户输入六边形的边长 s,然后显示它的面积 area。六边形面积计算公式是:

area =

? ?

?

? ?

10. 这一刻距离新年还有 16412947 秒,相当于多少天零多少小时零多少秒?请编程给出答案。

11. 用户输入一个 4 位数,弹出它各个数位的和。

12. 查询手册,自学 Math.ceil()和 Math.floor()的功能。


https://www.xamrdz.com/web/2vx1962040.html

相关文章: