一个关于女朋友买买买的笔试题
题目1
小明的女朋友最喜欢在网上买买买了,可是钱包里钞票有限,不能想买啥就买啥。
面对琳琅满目的物品,她想买尽可能多的种类,每种只买一件,同时总价格还不能超过预算上限。
于是她请小明写程序帮她找出应该买哪些物品,并算出这些物品的总价格。
输入规范:
包含两个输入框,一个计算按钮。
第一个是预算上限。(从输入框填写)
第二个是用空格分隔的一组数字,代表每种物品的价格。(从输入框填写)
所有数字都为正整数并且不会超过10000。
输出规范:
对每个输入,点击计算按钮后输出应买物品的总价格。
输入示例1:
100
50 50
输出示例1:
100
输入示例2:
188
50 42 9 15 105 63 14 30
输出示例2:
160
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<input type="text" id="t1" onBlur="Capsblur()" value="0">
<br>
<input type="text" id="t2" onBlur="CapsAttr()" value="0">
<span id="caps">0</span>
<span id="newsarr">0</span>
<span id="total">0</span>
</body>
<script>
var caps = document.getElementById("t1")
var rads = document.getElementById("t2")
var attr = [], s1 = "预算上限为正整数", s2 = "每种物品的价格为正整数,用空格符隔开";
const Capsblur = ()=> {
//上限
caps = document.getElementById("t1")
if (!PositiveInteger(caps.value)) {
alert(s1);
return false
}
CapsAttr();
}
const CapsAttr = () => {
//每种物品的价格
var total = 0, newsarr = []
rads = document.getElementById("t2")
rads = rads.value.replace(/(^\s*)/g, "")
attr = rads.split(" ")
for (var i = 0; i < attr.length; i++) {
if (!PositiveInteger(attr[i] * 1)) {
alert(s2);
return false
} else {
if (attr[i] * 1 < 10000) {
total += attr[i] * 1
if (total < caps.value * 1) {
newsarr.push(attr[i])
if (i == attr.length - 1) {
html(caps.value, newsarr.join(" "), total)
}
} else {
total = total - attr[i] * 1
html(caps.value, newsarr.join(" "), total)
return false;
}
}
}
}
}
const html = (t, t1, t2) => {
//显示结果
document.getElementById("caps").innerText = t
document.getElementById("newsarr").innerText = t1
document.getElementById("total").innerText = t2
}
const PositiveInteger = str => {
var re = /^[0-9]+$/
return re.test(str)
};
</script>
</html>
题目2
- 构建一个n*n的格子(n从输入框填写) ,默认背景色都是白色,鼠标指针指上去的格子底色要变
成红色,鼠标移出时复原 - 鼠标点击格子时背景色固定为蓝色,指针hover时也不变红。再次点击时复原成未点击的状态
- 格子大小可用css控制,底色变化用js实现
<input id="in" type="text" placeholder="输入n">
<button onclick="createTable()">确认n</button>
<style>
td{
width:20px;
height:20px;
border:1px solid;
}
</style>
<script>
// 创建n*n表格
const createTable = () => {
let n=document.getElementById("in").value
//创建n*n的"table"
let str="<tbody>"
for(var i=0;i<n;i++){
str+="<tr>"
for(var j=0;j<n;j++){
str+="<td></td>"
}
str+="</tr>"
}
str += "</tbody>"
let table = document.createElement("table")
table.innerHTML = str
table.setAttribute("cellspacing", 0)
document.body.appendChild(table)
//调用事件函数
colorEvent(table)
}
</script>