JavaScript中练习问题及答案
// 练习: 收银程序
// 声明变量保存商品的单价 数量 总价 如果总价满90 打8折 如果钱不够 提示还差多少
// 钱多了提示 找零多少 如果钱刚好 提示正好 如果钱不够 提示还差多少
var price = 10; var num = 8; var mon = 100; var count = price * num; if (count >= 90) { console.log('打8折:', count * 0.8); } else { console.log('钱不够还差:', 90 - count); } if (count == mon) { console.log('刚好够'); } else if (count < mon) { console.log('找零:', mon - count); } else if (count > mon) { console.log('还差:', count - mon); }
// 机票业务
// 北京飞往印尼 原价4000块, 4月到10月是旺季, 其他均为淡季
// 旺季 头等舱9折, 经济舱8折
// 淡季 头等舱8折, 经济舱5折
// 给定一个月份 分别计算2个舱位的价格
var month = 10;
if (month >= 4 && month <= 10) {
console.log('头等舱:', 4000 * 0.9);
console.log('经济舱:', 4000 * 0.8);
} else if ((month >= 1 && month < 4) || (month > 10 && month <= 12)) {
console.log('头等舱:', 4000 * 0.8);
console.log('经济舱:', 4000 * 0.5);
} else {
console.log('参数非法');
}
// 练习: 满减30减15 利用三元运算符
var mon = 30;
if (mon >= 30) {
mon -= 15;
} else {
console.log('不满足');
}
mon >= 30 ? (mon -= 15) : console.log('不满足'); //三目运算
// 声明2个变量存储身高 和 性别
// 如果小于180 输出小文,否则就继续查看是不是性别男,如果是输出能哥,否者输出小文的闺蜜
var h = 183;
var sex = '男';
if (h >= 183) {
if (sex == '男') {
console.log('能哥');
} else {
console.log('小文的闺蜜');
}
} else {
console.log('小文')
}
// 改成三元 可读性差,多条件判断仍然使用if嵌套
console.log(h >= 183 ? sex == '男' ? '申哥' : '小艺的闺蜜' : '小艺');
// 第三种情况
// 订单状态 1 未付款 2未发货 3运输中 4签收 其他状态非法
var sta = 3;
switch (sta) {
case 1:
console.log('未付款');
break;
case 2:
console.log('未发货');
break;
case 3:
console.log('运输中');
break;
case 4:
console.log('签收');
break;
default:
console.log('状态非法');
break;
}
// 声明2个变量,保存年份和月份,显示当月的天数,2月的话需要考虑闰年问题 闰年2月有29天
// 闰年: 能被4整除,不能被100整数,或者能被400整数
var month = 2;
var year = 2020;
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
console.log('31天')
break;
case 4:
case 6:
case 9:
case 11:
console.log('30天')
break;
case 2:
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
console.log('29天');
} else {
console.log('28天');
}
break;
default:
console.log('月份有误');
break;
}
// 猜数字游戏
// 声明变量保存用户输入的数字和要猜的数字 提示猜大了和猜小了 一直到猜对了才终止循环
var i = 15;
while (true) {
var num = prompt('请输入数字:');
if (num == i) {
alert('猜对了');
break;
} else if (num > i) {
alert('猜大了');
} else if (num < i) {
alert('猜小了');
}
}
<!-- 给出2个提示框让用户输入用户名和密码,如果正确提示登录成功,不正确就一直输入 -->
<!-- 账号: admin 密码: 123 -->
var count = 0;
while (true) {
count++;
var uname = prompt('请输入账号:');
var upwd = prompt('请输入密码:');
if (uname == 'admin' && upwd == '123') {
alert('登录成功');
break;
}
if (count >= 5) {
alert('账号密码尝试次数过多,闪电五连鞭即将对你进行抓捕~~');
break;
}
}
// 有一对幼兔,一个月成长为小兔,小兔一个月后可以长为成兔,
// 成兔会生下一对小兔,问10个月后有多少只兔子(自己不会死)
var yt = 1;
var xt = 0;
var ct = 0;
var count = 0;
// 月份 幼兔 小兔 成兔 生的小兔
// 1 2 0 0 0
// 2 0 2 0 0
// 3 0 0 2 2
// 4 0 0 4 8
// 5 0 0 12 24
// 每个月成兔的对数= 上个月小兔+ 上个对成兔
// 每个月小兔的对数等于上个月幼兔(没有幼兔概念)
// 幼兔的对数 等于上个月成兔的对数
注释:先思考在解题
// 1. 打印一个星星
var str = '';
console.log(str);
// 2. 把1执行10次 打印10个星星 并且打印空行
for (var i = 0; i < 10; i++) {
str += "*";
}
str += '\n';
console.log(str);
console.log('---------------------------------------------------------------');
// 3. 把2执行10遍
for (var j = 0; j < 10; j++) {
for (var i = 0; i < 10 ; i++) {
str += "*";
}
str += '\n';
}
console.log(str);
// 分析过程
// 循环次数 j值 外层判断 内层i值 内层判断 执行 内层增量i 内层判断
// 1 0 T 0 T * 1 T
// 2 0 ... 1 T ** 2 T
// 3 ...
// ...
// 9 0 ... 9 T 9* 10 F(跳出内层循环)
// 10 1 T又一次进内层循环 0 T * 1 T
// 11 1 ...
// ...
// 10 F(不满足条件终止循环)
// 输出下方金字塔
// *
// **
// ***
// ****
// *****
// 分析: 星星的数量 = 行数 外层循环控制行 内层控制列 现有行才有列
for (var i = 1, str = ''; i <= 5; i++) {
for (var j = 1; j <= i; j++) {
str += '*';
}
str += '\n';
}
console.log(str);
// 经典案例9 * 9 乘法表
// 1 * 1 = 1
// 1 * 2 = 2 2 * 2 = 4
// 1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
// 每一行开始的数字都是1 ,第二个数字会根据 列数会随着行数的变化而变化
// 外层控制行, 内层控制列
var str=''
for(var i=1;i<=9;i++){
for(var j=1;j<=i;j++){
str+=j+'*'+i+'='+(j*i)+' '
}
str+='\n'
}
console.log(str);
倒置的九九乘法表;
var str=''
for(var i=9;i>=1;i--){
for(var j=1;j<=i;j++){
str+=j+'*'+i+'='+(j*i)+' '
}
str+='\n'
}
console.log(str);
// 输出下列形状
// *
// * * *
// * * * * *
// * * * * * * *
// 1 1 1 * 2 - 1
// 2 3 2 * 2 - 1
// 3 5 3 * 3 - 1
// 4 7 4 * 4 - 1
以及倒置的等腰三角形
// 第一种方法
var str = '';
// i 外层的循环控制行数
for (var i = 1; i <= 4; i++) {
// j 控制前面的空格数 空格数等于总行数减去当前行数
for (var j = 1; j <= 4 - i; j++) {
str += ' ';
}
// k 控制星星 星星个数 = 当前行数 * 2 -1
for (var k = 1; k <= i * 2 - 1; k++) {
str += '*';
}
str += '\n';
}
console.log(str);
// 第二种方法
// 偶数行跳出当前循环
// 第三种方法
for (var v = 1, start = '*'; v < 5; v++) {
// console.log(v);
console.log(" ".repeat(5 - v) + start.repeat(v) + start.repeat(v - 1 > 0 ? v - 1 : 0));
}
倒置的等腰三角形
var str=''
for(var i=6;i>=1;i--){
for(var j=1;j<=i;j++){
str+=' '
}
for(k=1;k<=2*(6-i)-1;k++){
str+='*';
}
str+='\n'
}
console.log(str);
//输出菱形
for(var i=1,str='';i<=5;i++){
for(a=0;a<=5-i;a++){
str+=' ';
}
for(b=1;b<=2*i-1;b++){
str+='*';
}
str+='\n'
}
for(var i=1;i<=5;i++){
for(c=1;c<=i;c++){
str+=' '
}
for(d=1;d<=2*(5-i)+1;d++){
str+='*'
}
str+='\n'
}
console.log(str);
//函数
//创建函数,计算1-n之间所有整数的和,调用多次
function getsm(n){//形参
for(var i=1,sum=0;i<=n;i++){
sum+=i;
}
console.log(sum);
}
getsm(100);
//创建函数,计算n1~n2 之间闰年的数量;
function getrun(n1,n2){ for(var count=0;n1<=n2;n1++){ if(n1%4===0 && n1%100!==0 || n1%400===0){ count++; } } console.log(count); } getrun(2000,2100)
//创建函数,比较任意两个数字的大小,返回最大值
function getMax1 (a,b){
if(a>b){
return a ;
}else(a<b)
return b;
//return a > b ? a : b//三目运算法
}
console.log(getMax(8,9));
//创建函数,比较任意三个数字的大小,返回最大值
function getMax2(a,b,c ){
var max;
if(a>b){
max=a;
}else{
max=b;
}
if(max>c){
return max;
}else{
return c
}
/* var max = a>b ? a : b; //三木运算法//
return res = max>c ? max : c */
}
consoel.log(getMax2(2,7,4));
//创建函数 模拟购物流程
function bvr(n){
switch(n){
case 1:
return '等待付款';
case 2:
return '卖家待发货';
case 3:
return '运输中';
case 4:
return '已签收';
case 5:
return '已取消';
default :
return '网络逃到外星球了~~~';
}
}
var res=bvr(5);
console.log(res)
//创建函数 ,传递任意一个年份,如果闰年返回true,否则返回false;
function year (v){
if( v%4===0 && v%100!==0 || v%400===0 ){
return 'true';
}else{
return 'false';
}
}
var opk=year (2028);
console.log(opk);
if( year(2100)){
console.log(366);
}else if(year(2028)){
console.log(365);
}
//创建函数,调用 的时候,传递两个匿名函数,每个匿名函数中都是返回一个数字,要计算两个数字相加的和
//回调函数(匿名函数以实参形式传递)
function far(a,b) { //形参
var number1=a( ); //调用匿名函数
var number2=b( );
console.log(number1+number2);
}
far(function ( ) { //实参
return 6;
},
function ( ) {
return 7;
})

浙公网安备 33010602011771号