使用JavaScript实现一些小功能
/*
1、编写一个函数,要求输入年月日时分秒,输出该年月日时分秒的下一秒。
如输入2004年12月31日23时59分59秒,则输出2005年1月1日0时0分0秒
*/
function nextSecond(){
var time = prompt("请输入时间,格式为xxxx年xx月xx日xx时xx分xx秒:");
var pattern = /\d+/g;
var obj = time.match(pattern);
var nowTime = new Date(obj[0],obj[1]-1,obj[2],obj[3],obj[4],obj[5]);
var nextTime = new Date();
nextTime.setTime(nowTime.getTime()+1000);
alert("下一秒时间为:"+nextTime.getFullYear()+"年"+(nextTime.getMonth()+1)+"月"+nextTime.getDate()+"日"+nextTime.getHours()+"时"+nextTime.getMinutes()+"分"+nextTime.getSeconds()+"秒");
}
/*
2、返回[a,b]和[c,d]的交集
*/
function collection(a,b,c,d){
if(a>b||c>d)return false;
if(d<a||c>b) return "空集";
if(c<=a){
if(d==a)return a;
else if(d>a){
if(d<b) return "["+a+","+d+"]";
else return "["+a+","+b+"]";
}
}else if(a<c<b){
if(d<b) return "["+c+","+d+"]";
else return "["+c+","+b+"]";
}else
return c;
}
/*
3、将N进制转换成M进制
*/
function translate(N,M){
N.toString(M)
}
/*
4、计算在远光的工作日
*/
// 定义开始工作日期
var startDate = new Date("2017-07-07");
//将date格式化为年.月.日
function nyr(date){
return date.getFullYear()+'.'+date.getMonth()+'.'+date.getDate();
}
//计算当前日期的第二天
function nextDate(today){
today.setDate(today.getDate()+1);
}
// 执行函数,计算工作日时间
function caculateDays(startDate){
var nowDate = new Date();
nextDate(nowDate);
var sumDays = 0;
while(nyr(startDate)!=nyr(nowDate)){
if(startDate.getDay()!=6&&startDate.getDay()!=0){
sumDays++;//当前如果不是周末,加一个工作日
}
nextDate(startDate);
}
return sumDays;//返回工作日期数
}
/*
5、求两个集合{A}+{B}
*/
function addCollection(){
var m,n,coll1,coll2;
var arr = new Array();
//输入第一行数据(每个集合的个数),以空格隔开
var one = prompt("请输入每个集合的个数");
var count = one.split(" ");
m = count[0];
n= count[1];
//获取集合
var two = prompt("请输入第一个集合");
coll1 = two.split(" ");
while(coll1.length!=m||!isUnique(coll1)){
alert("第一个集合中有重复元素或者长度不符!");
two = prompt("请从新输入第一个集合");
coll1 = two.split(" ");
}
var three = prompt("请输入第二个集合");
coll2 = three.split(" ");
while(coll2.length!=n||!isUnique(coll2)){
alert("第二个集合中有重复元素或者长度不符!");
three = prompt("请从新输入第二个集合");
coll2 = two.split(" ");
}
for(var i=0;i<m;i++){
arr.push(coll1[i]);
for(var j=0;j<n;j++){
if(arr.indexOf(coll2[j])==-1){
arr.push(coll2[j]);
}
}
}
return arr;
}
// 判断数组是否重复
function isUnique(arr){
for(var i=0;i<arr.length;i++){
for(var j=i+1;j<arr.length;j++){
if(arr[i]==arr[j])
return false;
}
}
return true;
}
/*function isUnique(arr){
for(var i=0;i<arr.length;i++){
var temp = arr[0];
arr.splice(0,1);
if(arr.indexOf(temp)!=-1){
return false;
}
}
return true;
}*/
/*
6、求小明通过考试的概率
*/
function examPass(){
var n = prompt("请输入考试的科目数");
while(typeof(Number(n))!="number"){
alert("输入有误");
n = prompt("请输入考试的科目数");
}
var arr = prompt("请输入每科过的概率");
var a = arr.split(" ");
while(a.length!=n){
alert("输入有误");
arr = prompt("请重新输入");
a = arr.split(" ");
}
a.unshift(0);
//定义一个二维数组,用来接收前i门课程通过j门课程的概率
a = [0,50,50,50,50]
var pro = new Array();
for(var i=0;i<=n;i++){
pro[i] = new Array();
}
pro[0][0]=1;
//计算前i门课程通过j门课程的概率
for(var i=1;i<=n;i++){
pro[i][0]=pro[i-1][0]*((100-a[i])/100);
for(var j=1;j<=i;j++){
if(pro[i-1][j]==undefined){pro[i-1][j]=0}
pro[i][j]=pro[i-1][j]*((100-a[i])/100)+pro[i-1][j-1]*(a[i]/100);
}
}
var ppass=0;//及格率
//通过率60%
var jige = Math.ceil(n*0.6);
for(var i=jige;i<=n;i++){
ppass+=pro[n][i]
}
return ppass;
}
/7、异或,输入1100,0100;返回异或的十进制结果/
function xOR(a1,a2){
a1 = parseInt(a1,2);
a2 = parseInt(a2,2);
return a1^a2;
}
/8.从帽子中找出价格第三贵的帽子/
function findHat(){
var arr = [23,12,40,23,45,21,34,56,12,34];//帽子的价格
function Unique(arr){
var res=[];
for(var i=0;i<arr.length;i++){
if(res.indexOf(arr[i])==-1){
res.push(arr[i])
}
}
return res;
}
var priceSort = Unique(arr);
priceSort.sort();
return priceSort[2];
}
function Unique(arr){
var obj = new Object();
obj.res=[];
obj.del = [];
for(var i=0;i<arr.length;i++){
if(obj.res.indexOf(arr[i])==-1){
obj.res.push(arr[i])
}else{
obj.del.push(arr[i])
}
}
return obj;
}
/*
10、公司生产了n件产品,有m个客户想买此产品。第i个客户出家Vi元,公司决定以一个固定的价格出售该产品。
每一个出家不低于要价的客户将会以公司决定的价格购买此产品,余下的被拒绝购买。
求让公司利润最大化的最小售价。
5
4
2 10 8 7
*/
function minPrice(){
var n = prompt("请输入产品数量:");
var m = prompt("请输入客户数量");
var a = prompt("输入每个顾客的定价");
a = a.split(" ");
while(a.length!=m){
alert("输入有误,请重新输入!");
a = prompt("输入每个顾客的定价");
a = a.split(" ");
}
a.sort(function(pre,next){return pre-next});
var ans=0,pos;
for(var i=0;i<a.length;i++){
if(ans<a[i]*Math.min(n,m-i)){
ans = a[i]*Math.min(n,m-i);
pos = a[i];
}
}
alert("利润最大化的最小价格为:"+pos);
}