4月5日--关于数组的练习题—数组按元素的每位之和升序
定义一个数组,存放若干正整数,数据由用户通过prompt输入,输入“end”表示结束,
如果输入的不是正整数,则不存入数组,对该数组进行排序,要求按照正整数各位数字之和的大小排列,
如:[8,23,100,231]排序之后是[100,23,231,8]
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
//定义一个数组,存放若干正整数,数据由用户通过prompt输入,
// 输入“end”表示结束,如果输入的不是正整数,则不存入数组
var scores = [];
do{
var n=prompt("请输入(end表示结束):");
if(n=="end"){
break;
}
if(n>0 && n%1==0){
//通过prompt输入一个正整数n,将n作为数组中的元素放入scores数组中
scores[scores.length]=n*1;
}
}while(true);
//判断该数组中最大数,和最小数
var sum = 0;
var maxScore = scores[0];
var minScore = scores[0];
for(var i = 0;i < scores.length; i++){
sum+=scores[i]; //求该数组的每位元素之和
if(maxScore<scores[i]){ //如果第0位都小于其他元素
maxScore=scores[i]; //那么就把最大的数赋值给maxScore
}
if(minScore>scores[i]){ //如果第0位都大于其他元素
minScore=scores[i]; //那么就把最小的数赋值给maxScore
}
}
//对a、b数的每一位数字相加得到sum_a,sum_b,并比较sum_a,sum_b大小
scores.sort(compNum_1);//对scores数组进行自定义排序
function compNum_1(a,b){
var sum_a=0;
while(a!=0){//通过while循环将a的每位数字相加赋值给sum_a(a与10取模,再除以10取整)
sum_a+=a%10;
a=parseInt(a/10);
}
var sum_b=0;
while(b!=0){//通过while循环将a的每位数字相加赋值给sum_a(a与10取模,再除以10取整)
sum_b+=b%10;
b=parseInt(b/10);
}
var diff= sum_a - sum_b;//sum_a - sum_b 为数组升序。sum_b - sum_a 为数组降序
return diff
}
document.write("该数组是"+scores);
document.write('<br>总分'+sum);
document.write('<br>平均分'+sum/scores.length);
document.write('<br>max='+maxScore);
document.write('<br>min='+minScore);
</script>
</head>
<body>
</body>
</html>
浙公网安备 33010602011771号