使用JavaScript实现一些小功能

使用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); 
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值