一、知识点回顾
// 循环
// while 条件复杂的循环语句
// do while 至少执行一次
// for 已知循环次数
// 注意
// 嵌套 外层循环走一下,内层循环走一圈
// break / continue
// 100以内所有的质数
// 思路:
// 1 把100以内所有的数遍历一遍
// 2 判断每一个数是不是质数
// 思路:假设法(假设是一个质数,去找不是质数的证据)
// 3 每5个换行
// 思路:给一个计数器,出现一个质数,就计数一次(计数器是5的倍数就换行)
for(var i = 2 , count = 0 ; i <= 100 ; i++){
//假设法 假设是质数
var flag = true ;
// 找不是的证据 --- 只要能被任何一个数整数就不是
for(var n = 2 ; n < i ; n++){
// 只要能被其他数整除
if(i % n === 0){
// 说明不是质数,也就是假设被推翻
flag = false ;
// 结果已经出来,就不需要继续找证据
break;
}
}
// 最终根据flag的值来判断是不是质数
// flag ? document.write(i) ; '';
if(flag){
document.write(i+' ')
//计数器自增
count++;
//判断是不是5的倍数
if(count % 5 === 0){
document.write('<br>')
}
}
}
二、三角形
// 1111121
// 11112121
// 111212121
// 1121212121
// 12121212121
// 212121212121
// *
// * *
// * * *
// * * * *
// * * * * *
for(var i = 0 ; i < 6 ; i++){
for(var j = 0 ; j < 5-i ; j++ ){
document.write(' ')
}
for(var k = 0 ; k <= i ; k++){
document.write('*' +' ')
}
document.write('<br>')
}
三、阶层之和
// 1*2*3*4
// 1*2=2
// 2*3=6
// 6*4=24
var sum = 0 ;
var jc = 1; // 乘积1
for(var i = 1 ; i <= 10 ; i++ ){
jc *= i;
//这个jc实际上就是i的阶乘
console.log(jc);
sum += jc;
}
document.write(sum)
四、水仙花
// 水仙花 三位数 abc = a * a * a + b * b * b + c * c * c ;
// 思路:遍历所有的三位数
// 取出百十个,找到满足条件
// for(var i = 100 ;i < 1000 ; i++){
// var a = Math.floor(i / 100);
// var b = Math.floor(i % 100 / 10);
// var c = Math.floor(i % 10);
// if( Math.pow(a,3) + Math.pow(b,3) + Math.pow(c,3)=== i){
// document.write(i+" ");
// }
// }
//思路 : a b c 三个数字排列组合得到三位数
// 找到满足条件的数
// 数字拼接
for(var a = 1 ; a <= 9 ; a++){
for(var b = 0 ;b <= 9 ; b++){
for(var c = 0 ; c <= 9 ; c++){
// if( Math.pow(a,3) + Math.pow(b,3)+ Math.pow(c,3)===(a*100+b*10+c)){
// }
if( Math.pow(a,3) + Math.pow(b,3)+ Math.pow(c,3) ==''+ a + b + c){
document.write(''+ a + b + c +' ')
}
}
}
}
五、百鸡百钱
// 鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一。百钱买百鸡,问鸡翁、鸡母、鸡雏各几何?
// 公鸡 5
// 母鸡 3
// 小鸡 1/3
// 100块钱买100只鸡
// 公鸡最多20只
for(var a = 1 ; a <= 20 ; a++){
// 母鸡最多30只
for(var b = 1 ; b <= 33 ; b++){
// 小鸡最多100只
for(var c = 1 ; c<=100;c++) {
if(a + b + c === 100 && 5 * a + 3 * b + c / 3 === 100){
document.write(a+' ',b+' ',c+' '+' '+' '+' ')
}
}
}
}
六、认识函数
<style>
.red{
background: red;
}
/* 属性选择器 */
div[qq ='a']{
color: blue;
}
input[type='text']{
background: red;
}
div[class ='a']{
background: #ff0;
}
</style>
<body>
<div id="" class="a" qq='a'>qqqqqqqqq</div>
<p></p>
<input type="text" name="" id="">
<input type="button" name="" id="">
<!-- 自定义标签 -->
<!-- <qq class = "red">22</qq>
<h7>22</h7>
<qewre>22</qewre> -->
<script>
// function 函数
// 函数: 把同一个功能的代码块放在一起
// 作用: 封装性 + 复用性
// 函数分类:
// 系统函数 ()
// 自定义函数
// 函数: 就是个工具
// 重复使用的
// 需要被人使用
// 工具有的有参数,有的没有 Math.random() alert(666)
</script>
</body>
七、求和
// var a = 2 ;
// var b = 3 ;
// console.log(a + b);
// var c = 3 ;
// var d = 4 ;
// console.log(c + d);
// 函数的语法
// function 函数名(参数){
// 功能是怎么实现的
// }
// 函数名(参数) --- 函数必须调用
// 说明书
// 函数的功能:求两个数的和
// 参数说明:
// 第一个参数是一个数字
// 第二个参数也是一个数字
function sum(a , b){
console.log(a+b);
}
sum(2,3)
sum(2) // NaN
八、打印三角形封装
// *
// **
// ***
// ****
// for(var i = 0 ; i < 4 ; i++){
// for(j = 0 ; j <= i ; j++){
// document.write('*')
// }
// document.write('<br>')
// }
// 函数封装的步骤
// 1 普通的实现这个功能
// 2 装个壳子 function
// 3 取个名字
// 4 考虑是否需要参数 --- 参数可有可无
// 5 一定要调用函数!!!
// 6 附上说明书
// 函数的功能:打印三角形
// 函数的参数:
// 第一个参数是数字 number --- 打印几行三角形
// 第二个参数是字符串 string --- 打印的内容
function star(n, m){
for(var i = 0 ; i < n ; i++){
for(j = 0 ; j <= i ; j++){
document.write(m)
}
document.write('<br>')
}
}
star(3,'*')
star(13,'$')
九、九九乘法表的封装
// for(var i = 1; i <= 9 ;i++){
// for(var j = 1; j<=i; j++){
// document.write(j + '*' + i + '=' + i * j +' ')
// }
// document.write('<br>')
// }
// 函数声明的地方 形参
// 函数调用的地方 实参
// n和m叫做形式参数 ---- 形参
function abc(n , m) {
for(var i = 1; i <= n ;i++){
for(var j = 1; j<=i; j++){
if(m === '*'){
document.write(j + '*' + i + '=' + i * j +' ')
}
else if(m === '+'){
document.write(j + '+' + i + '=' + (i + j) +' ')
}
}
document.write('<br>')
}
}
// 4 + 叫做实际参数 --- 实参
abc(4 , '+' )
document.write('<br>')
abc(6 , '*')
十、输出100以内的质数
//函数: 输出min-max之间的质数 每五个一换行
function zhi(min,max){
var count = 0 ;
for(var i = min ; i <= max;i++){
//假设法
var flag = true ;
//找不是的证据 --- 只要能被任何一个数整数就不是
for(var j = 2 ; j < i ;j++){
//只要能被其他数整除
if(i % j === 0){
// 说明不是质数,也就是假设被推翻
flag = false;
// 结果已经出来,就不需要继续找证据
break;
}
}
//判断flag是不是质数
// flag ? document.write(i+'  '):'';
if(flag){
document.write(i+' ')
count++;
if(count % 5 === 0 ){
document.write('<br>')
}
}
}
}
zhi(600,1500)
十一、求和
// 函数的返回值 --- 函数最终执行的结果
// 函数的返回值也是可有可无的
// a b 形参
function sum( a , b){
// 只是在控制台打印了这个结果
// console.log(a + b)
var result = a + b
// result是在函数内部定义的,在外面无法使用
// console.log(result);
// document.write(result)
return result;
}
// 2 3 实参
var n = sum(2,3)
document.write(n)
// document.write(result);//报错,因为访问不到函数的内部变量
// var m = sum(2,3);
// console.log(m); //控制台打印出5
// var n = Math.random();
// console.log(n); //函数会得到一个结果
var res = alert(666)
console.log(res); // 没有结果
十二、封装随机数
// Math.round(Math.random()*(max-min))+min
// 封装随机生成min-max范围内的数
function rand(min , max){
// var n = Math.round(Math.random()*(max-min))+min ;
// return n ;
return Math.round(Math.random()*(max-min))+min ;
}
var m = rand(0,10);
document.write(m);
// document.write(rand(0,10))
//判断一个数是不是质数
function isZhi(x){
var flag = true ;
for(var i = 2 ; i < x ; i++){
if(x % i === 0){
flag = false;
break;
}
}
// if(flag){
// return true
// } else {
// return false;
// }
return flag;
}
var r1 = isZhi(5) ; // true 5是质数
var r2 = isZhi(6) ; // false 6不是质数
console.log(r1 , r2);
// 函数定义的时候是形参
// 函数调用的时候是实参
var r3 = isZhi(m);
console.log(r3);
//判断随机数是不是质数
// 100以内所有质数
for(var i = 2 ; i <= 100 ; i++){
var r4 = isZhi(i);
if(r4) {
document.write(i)
}
}
十三、调用函数
产生100-200之间的随机数是:<input type="text" name="" id="inp1"><br>
判断它是否为质数<input type="text" name="" id="inp2">
<script src="js/tools.js"></script>
<script>
// 1 产生一个100-200以内的随机数,判断是不是质数
var n = rand(100,200); //用变量n接收rand函数的返回值
var res = isZhi(n); //用变量res接收isZhi函数的返回值
console.log(n , res);
// 把随机生成数放在一个输入框
// 把判断是否为质数放在一个输入框
var oInp1 = get('inp1');
var oInp2 = get('inp2');
oInp1.value = n ; //把生成的随机数n赋值给输入框1
// n2.value = res; //把判断的结果res赋值给输入框2
if(res){
oInp2.value = '是一个质数'
}
else{
oInp2.value = '不是一个质数'
}
//随机生成两个数 并用简易计算器计算
var n1 = rand(0,100) ;
var n2 = rand(0,100) ;
var res2 = jSq(n1 , n2 , '*');
console.log(n1,'*',n2, '=',res2);
十四、函数注意点
// alert(666) 直接调用函数,并且传了一个参数
// var n = Math.random() 调用函数并使用一个变量接收这个结果
// 参数
// 返回值
// ---函数执行的结果
// ---提前结束整个函数
function get(id){
return document.getElementById(id);
}
// return 提前结束函数
function isZhi(n){
for(var i = 2; i < n ; i++){
if(n % i === 0){
return false;
}
}
return true;
}
var res = isZhi(4);
console.log(res);
十五、简化写法
var x = '123';
console.log(isNaN(x)); //false
var res = isNaN(x);
console.log(res); // false
var res = isZhi(4); //判断4是不是质数
console.log(res);
// console.log(isZhi(4));
// var n = Math.random()* 100 ; // 0-100
// n = Math.round(n); //取整
// Math.random()的执行结果变成了 Math.round这个函数的实参
// var n = Math.round(Math.random()*100);
var n = rand(0,100);
var res = isZhi(n);
// var res=isZhi(rand(0,100));
console.log(n,res);
十六、简易计算器
<script src="js/tools.js"></script>
<script>
// 获取元素
var oInp1 = get('inp1') ;
var oInp2 = get('inp2') ;
var oResult= get('result');
var oBtn = get('btn') ;
var oFuHao = get('fuHao') ;
// 函数不能没有名字
// function (a,b){
// console.log(a+b);
// }
// 事件处理函数 --- 函数只能被点击的时候调用(系统调用)
oBtn.onclick = function(){
var n1 = oInp1.value;
var n2 = oInp2.value;
var f = oFuHao.value;
// console.log(n1,n2,f);
var res = jSq(n1 * 1,n2 * 1,f);
//因为n1,n2是输入框的值,为字符串,因此得做隐式转化
oResult.value = res; //把通过计算器函数返回的res值,赋给结果框
//也可以写成这样
// oResult.value = jSq(n1 * 1, n2 * 1 , f);
//也可以写成这样
// oResult.value = jSq(oInp1.value * 1 , oInp2.value * 1 ,oFuHao.value)
//也可以写成这样
// oResult.value = jSq(get('inp1').value * 1 ,get('inp2').value * 1 ,get('fuHao').value)
}
写在名为tools.js的文件中
// 功能:随机生成一个某个范围内的整数
// 参数:
// min number 范围最小值
// max number 范围最大值
// 返回值:
// number
function rand(min , max){
return Math.round(Math.random()*(max-min)+min)
}
// 判断一个数是不是质数
// 参数:
// number
// 返回值:
// boolean
function isZhi(x){
// var flag = true;
for(var i = 2 ; i < x ; i++){
if(x % i === 0){
// flag = false;
// break;
return false;
}
}
// return flag;
return true;
}
// 根据id找到元素
function get(id){
return document.getElementById(id);
}
//简易计算器
function jSq (a,b,f){
// return 3
// return 提前结束整个函数 ,也就是说 return后面的代码永远不会执行
switch(f){
case '+' : return a + b ;
case '-' : return a - b ;
case '*' : return a * b ;
case '/' : return a / b ;
}
}