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>