Day 2作业:1)求解一元二次方程的根
1、接收用户输入二次项系数a
2、接收用户输入一次项系数b
3、接收用户输入常数项c
4、判断是否有实根,delta=b2-4ac
5、如果delta<0,则方程的虚根为
6、如果delta=0,则方程的根为
7、如果delta>0,则方程的根为
8、打印输出结果
var a = Number(prompt("请输入二次项系数"));
var b =Number(prompt("请输入一次项系数"));
var c =Number(prompt("请输入常数项系数"));
var delta =b * b - 4* a * c;
if(a !=0) {
if (delta < 0){
alert("该方程无实根");
} else if(delta == 0) {
var x1 = (-b+ Math.sqrt(delta))/ (2 * a);
var x2 = (-b- Math.sqrt(delta))/ (2 * a);
alert("该方程有两个相同的实根x1=x2=" + x1);
} else {
var x1 = (-b+ Math.sqrt(delta))/ (2 * a);
var x2 = (-b- Math.sqrt(delta))/ (2 * a);
alert("两个根分别为" + "x1= " + x1 + " " + "x2= " + x2);
}
}else{
alert("对不起,您输入的不是一元二次方程");
}
2)计算献血量(献血量与血红蛋白和体重有关)
Hb < 30 7ml/kg
Hb 30-60 10ml/kg
Hb >60 15ml/kg
var weight = Number(prompt("请输入您的体重"));
var hb =Number(prompt("请输入血红蛋白含量"));
var blood;
if(hb <30){
blood =7 * weight;
}else if(hb <60){
blood =10 * weight;
}else{
blood =15 * weight;
}
alert("最大献血量为" + blood + "ml");
例:制作一个四则运算器,要求用户输入一个数再输入一个算数运算符再输入一个数,计算出相应的结果。
var num1=Number(prompt("请输入第一个数"));
var op =prompt("请输入四则运算中的一个(+、-、*、/");
var num2=Number(prompt("请输入第二个数"));
var result =0;
if(op =="+") {
result= num1 + num2;
}else if(op =="-"){
result= num1-num2;
}else if(op =="*"){
result= num1*num2;
}else if(op =="/") {
if (num2 != 0) {
result= num1 / num2;
} else {
alert("除法运算时c不为0");
}
}else{
alert("运算符输入有误");
}
alert(result);
多分支选择结构
Switch(x){
Case a;
Case b;
Break;
Case c;
Default;
}
它的执行效率比if()快很多,它会将所有可能放在内存当中,case就是标号,当条件满足这个标号时直接进入这个情况里面。
例:四则运算器的完善
var num1=Number(prompt("请输入第一个数"));
var op =prompt("请输入四则运算中的一个(+、-、*、/");
var num2=Number(prompt("请输入第二个数"));
var result =0;
switch(op){
case "+":
result= num1+num2;
break;
case "-":
result= num1-num2;
break;
case "*":
result= num1*num2;
break;
case "/":
result =num1/num2;
break;
}
alert(result);
switch优点:
1、结构清晰,一目了然
2、运行速度相对较快
Switch执行逻辑:
从switch后面的小括号里面的变量与后面case中的常量相等的地方开始执行,然后依次执行后面的指令,一直到指令结束。
Case:并不会参与运算,不起条件判断作用,只起到一个标号的作用。只是执行指令的入口。
Default就是除了case以外的情况。
Break并不是switch语法中的内容,不属于switch只是一个辅助工具,用于跳出当前结构。
例:最大献血量案例改写(switch中将区间问题转化为离散问题)
var weight =Number(prompt("请输入您的体重"));
var hb =Number(prompt("请输入血红蛋白含量"));
var blood;
var H =Math.floor(hb/30);
switch(H){
case 0:
blood= 7 * weight;
break;
case 1:
blood= 10 * weight;
break;
default:
blood= 15 * weight;
}
alert("最大献血量为" + blood + "ml");
例:百分制转化为4分制
A 80以上
B 70-80
C 60-70
D 60以下
设计步骤:
1、接收学生输入的成绩score
2、将成绩除以10取整 flag
3、判断flag的值
4、8,9,10都是A
5、7是B
6、6是C
7、其余是D
8、打印结果
var score =Number(prompt("请输入成绩"));
var score1 =Math.floor(score/10);
var res =" ";
switch(score1){
case 1:
case 2:
case 3:
case 4:
case 5:
res= "D";
break;
case 6:
res= "C";
break;
case 7:
res= "B";
break;
default:
res= "A";
}
alert(res);
例:今年是当年的第几天。(不考虑闰年)
如:3.14 一月份 31+二月份 28+14
5.16
var month =Number(prompt("接受月份"));
var date =Number(prompt("接受日期"));
var dates=0;
switch(month- 1) {
case 11:
dates+= 31;
case 10:
dates+= 31;
case 9:
dates+= 30;
case 8:
dates+= 31;
case 7:
dates+= 31;
case 6:
dates+= 30;
case 5:
dates+= 31;
case 4:
dates+= 30;
case 3:
dates+= 31;
case 2:
dates+= 28;
case 1:
dates+= 31;
}
dates += date;
alert("是第"+dates+"天");
例:四年一闰 百年不闰 四百年再闰
分析:这个数是4的倍数不是100的 倍数
var year = Number(prompt("接受年份"));
var month =Number(prompt("接受月份"));
var date =Number(prompt("接受日期"));
var dates=0;
switch(month- 1) {
case 11:
dates+= 30;
case 10:
dates+= 31;
case 9:
dates+= 30;
case 8:
dates+= 31;
case 7:
dates+= 31;
case 6:
dates+= 30;
case 5:
dates+= 31;
case 4:
dates+= 30;
case 3:
dates+= 31;
case 2:
if((year%4==0 && year%100!=0) || (year%400==0)){
dates +=29;
}else{
dates+=28;
}
case 1:
dates+= 31;
}
dates += date;
alert("是第"+dates+"天");
错误与调试
错误分为两种:
1)语法错误
2)逻辑错误
语法错误:
var a = 3;
alert(a);
a++;
aletr(a)
将alert 错写成了aletr
如何调试:右击浏览器选择检查 或者F12进入开发者工具。错误信息会在console窗口下提示
上面的步骤同时进一步说明了解释型语言的特点。翻译一条执行一条。遇到错误的时候才终止。
逻辑错误:
var b = a + 3;
alert(b);
如何调试逻辑错误:
语法没有问题,得到的结果与期望得到的结果不符合。并不会在console的窗口下面去提示错误信息。
在source下面可以看到js代码,在里面可以设置断点。
代码执行到断点处就暂停执行(在代码左侧单击即可)
可以让代码单步执行快捷键F10
同事可以查看代码中任意一个表达式或者变量的值
1)手动添加watch
2)选中表达式右击选择添加到watch
通过以上的方式可以看到代码每一步的执行结果,当遇到与期望值不符合时就是那一行代码有问题。能够帮助我们定位到错误的位置。根据自己的经验和知识,分析出错误的原因,然后解决它。
循环结构
While(满足的条件){
当满足条件时执行的内容
}
循环的特点:
有条件的重复执行一件事,每次做的事情不同,但是类似。
var num = 100;
while(num < 1000) {
var num1 = Math.floor(num /100);
var num10 = Math.floor(num /10 )% 10;
var num100 = num % 10;
var res ="";
if (num == num1* num1 * num1+ num10 *num10 * num10 + num100 * num100* num100){
res =num+ "这个数为水仙花数";
alert(res);
}
num ++;
}
今天讲完了选择结构,循环结构开了个小头,明日继续更博!