练习实例100(1)
题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
方法一:
-
<script> for(var a=1;a<5;a++){ for(var b=1;b<5;b++){ for(var c=1;c<5;c++){ if(a!=b && a!=c && c!=b){ document.write(a+" ")// 标签代表为空格 document.write(b+" ") document.write(c+'<br>') } } } } </script>
方法二:
注意:这里也可以不定义变量ss,可以直接document.write(arry.length)返回的数字为24,
输出结果中的","不知道用什么办法去除,所以格外加了“[ ]”来进行区分,当然paresInt()方法的运用也是有问题的,这是碰巧运行重的结果符合要求吧了,对于初学者的我来说只能放到以后来解决了。也欢迎大家给我指点迷津。
经过同学的指点终于明白了为什么s=24,因为变量n经过循环添加了24个数组,所以n=24,经过s=parseInt(n)后,s=24。
-
<script> var arry=[];//定义一个数组 for(var a=1;a<5;a++){ for(var b=1;b<5;b++){ for(var c=1;c<5;c++){ if(a!=b && a!=c && c!=b){ var n=arry.push('['+[a,b,c]+']');//push()方法向数组末尾添加长度,并返回新的长度 var s=parseInt(n);//判断字符串从0开始是否是有效数字,并返回一个整数,那么这个循环为24次且都为数字,为什么输出结果为24呢?这里不建议用这个方法来计算一个数组里的字符串长度 var ss=arry.length;//length属性返回数组里字符串的长度为24 } } } } document.write("总共的排列数为:"+s+"<br>") document.write("总共的排列数为:"+ss+"<br>") document.write(arry) </script>
方法三:
<script>
var arry=[1,2,3,4];//定义一个数组
var i=0;
for(var a in arry){
for(var b in arry){
for(var c in arry){
if(a!=b && a!=c && c!=b){
i+=1;
document.write(arry[a])
document.write(arry[b])
document.write(arry[c]+"<br>")
}
}
}
}
document.write("总共的排列数为:"+i)
</script>