day01
1 字元串轉數字的方式有幾種?
3種
1、number
2、parseInt
3、parseFloat
2 數字轉字元串的方式有幾種?
2種
1、tostring
2、用+号連接配接符
3 +有兩個含義,連字元和加法運算。請問什麼情況下是連字元,什麼情況下是加法運算?
當都是數字的時候是加法運算符,當一個是數字一個是字元串就是連接配接符;
4 JS中一共有多少種資料類型?分别是?各寫出它們的一個值。
js中的資料類型一共有6種,分為兩大類:基本類型、引用類型
基本類型包括:字元串、數字、布爾、undefined、null
對于字元串var str = “13522fbwfbe”;
var number = 133;
var bool = False;
var a;
var a = null;
5 邏輯運算符有哪幾個?請對它們做一個總結。
&&與運算,就是都為真才為真,有一個假就為假;
|| 邏輯或 兩側有真就真,都假才假
!隻能夠寫在某一個變量的左側 會對它進行取反操作 最終結果為true或者false
6 JS代碼可以寫在哪裡?推薦位置?
可以寫在head中,也可以寫在body中,也可以在外面引用,一般最好的是放在body中;
7 你喜歡使用VScode嗎?感覺怎麼樣?
很輕便好用
day02
判斷一個整數,屬于哪個範圍:大于0;小于0;等于0
var num = +prompt("請輸入一個數:");
if (num > 0) {
document.write("大于0");
} else if ( num = 0){
document.write("等于0");
} else{
document.write("小于0");
}
判斷一個整數是偶數還是奇數,并輸出判斷結果
var num = +prompt("請輸入一個數:");
if (num % 2 === 0) {
document.write(num + "是偶數");
} else if ( num % 2 === 1){
document.write(num + "是奇數");
}
開發一款軟體,根據公式(身高-108)*2=體重,可以有10斤左右的浮動。來觀察測試者體重是否合适
var num = +prompt("請輸入你的身高:");
var wid = (num - 108) * 2;
var hei = +prompt("請輸入你的體重:");
if ( hei >= wid - 10 && hei <= wid + 10){
document.write("正常");
}else if( hei > wid + 10){
document.write("偏胖");
}else if ( hei < wid - 10){
document.write("有點偏瘦");
}
案例:輸入分數,判定成績等級(if和switch兩種寫法)
var score = +prompt("請輸入你分數:");
if (score <60){
document.write("沒有及格");
}else if (score >=60 && score <80){
document.write("及格");
}else if ( score >= 80 && score < 90){
document.write("良好");
}else if( score >=90 && score < 100){
document.write("優秀");
}
var score = +prompt("請輸入你分數:");
switch (parseInt(score / 10)){
case 6:
document.write("及格");
break;
case 7:
document.write("及格");
break;
case 8:
document.write("良好");
break;
case 9:
document.write("優秀");
break;
case 10:
document.write("優秀");
break;
default:
document.write("沒有及格");
break;
}
輸入月份,顯示當月的天數
要求:利用case落空簡化代碼 如果是2月 則預設為28天即可
var month = +prompt(“請輸入你月份:”);
switch (month){
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
document.write("31天");
break;
case 4:
case 6:
case 9:
case 11:
document.write("30天");
break;
case 2:
document.write("28天");
break;
}
根據輸入的内容判斷是幾月 輸入1 顯示1月 輸入2 顯示2月 輸入3 顯示三月 以此類推
var month = +prompt(“請輸入你月份:”);
switch (month){
case 1:
document.write("31天");
break;
case 3:
document.write("31天");
break;
case 5:
document.write("31天");
break;
case 7:
document.write("31天");
break;
case 8:
document.write("31天");
break;
case 10:
document.write("31天");
break;
case 12:
document.write("31天");
break;
case 4:
document.write("30天");
break;
case 6:
document.write("30天");
break;
case 9:
document.write("30天");
break;
case 11:
document.write("30天");
break;
case 2:
document.write("28天");
break;
}
根據輸入的三個數字,判斷是這一年的第幾天
例如:
javascript
var year = 2019
var month = 8
var day = 20
結論:
232
script>
var year = +prompt("請輸入你的年份:");
var month = +prompt("請輸入你月份:");
var day = +prompt("親輸入天數:");
if (year % 4 === 0 && year % 100 !== 0 || year % 400 === 0){
switch(month){
case 1:
document.write(day);
break;
case 2:
document.write(31 + day);
break;
case 3:
document.write(60 + day);
break;
case 4:
document.write(91 + day);
break;
case 5:
document.write(121 + day);
break;
case 6:
document.write(152 + day);
break;
case 7:
document.write(182 + day);
break;
case 8:
document.write(213 + day);
break;
case 9:
document.write(244 + day);
break;
case 10:
document.write(274 + day);
break;
case 11:
document.write(305 + day);
break;
case 12:
document.write(335 + day);
break;
}
}else{
switch(month){
case 1:
document.write(day);
break;
case 2:
document.write(31 + day);
break;
case 3:
document.write(29 + day);
break;
case 4:
document.write(90 + day);
break;
case 5:
document.write(120 + day);
break;
case 6:
document.write(151 + day);
break;
case 7:
document.write(181 + day);
break;
case 8:
document.write(212 + day);
break;
case 9:
document.write(243 + day);
break;
case 10:
document.write(273 + day);
break;
case 11:
document.write(304 + day);
break;
case 12:
document.write(334 + day);
break;
}
}
</script>
day03
1 有一個棋盤,有64個方格,在第一個方格裡面放1粒芝麻重量是0.00001kg,第二個裡面放2粒,第三個裡面放4,棋盤上放的所有芝麻的重量
<script>
var wd = 0;
for (var i = 1; i <=64; i++){
wd += Math.pow(2, (i-1))*0.00001;
}
console.log("芝麻的重量是:"+wd);
</script>
2 求1+2!+3!+…+20!的值
2! 表示 2 的階乘 2 * 1
3! 表示 3 的階乘 3 * 2 * 1
<script>
var count = 1;
var sum = 0;
for (var i = 1; i <= 20; i++){
for ( var j = 1; j <=i; j++){
count *= j;
}
sum += count;
}
console.log("總和是:"+sum);
</script>
3 使用函數完成第一題
<script>
function zhima(){
var wd = 0;
for (var i = 1; i <=64; i++){
wd += Math.pow(2, (i-1))*0.00001;
}
console.log("芝麻的重量是:"+wd);
}
zhima();
var zhima = function(){
var wd = 0;
for (var i = 1; i <=64; i++){
wd += Math.pow(2, (i-1))*0.00001;
}
console.log("芝麻的重量是:"+wd);
}
zhima();
</script>
4 寫一個函數 傳遞一個數字 求該數字的階乘
<script>
function jiecheng(num1){
var count = 1;
for (var i = 1; i <= num1; i++){
count *= i;
}
console.log(num1 + "的階乘是" + count);
}
jiecheng(3);
</script>
5 使用函數 完成第二題
<script>
function jiecheng1(){
var count = 1;
var sum = 0;
for (var i = 1; i <= 20; i++){
for ( var j = 1; j <=i; j++){
count *= j;
}
sum += count;
}
console.log("總和是:"+sum);
}
jiecheng1();
</script>
6 從 100 ~ 1000 找到一個三位數字一樣的數字
<script>
function Threesame(){
for ( var i = 100; i<=1000; i++){
if ((parseInt(i / 100) === (i % 10)) && ((parseInt(i / 100) === (parseInt(i / 10) % 10))) && ((i % 10) === (parseInt(i / 10) % 10))){
console.log("三位數字一樣的數字:"+i);
}
}
}
Threesame();
</script>
7 定義一個函數,求任意
<script>
function Threesum(num1, num2, num3){
var sum = num1 + num2 + num3;
console.log("3個數字的和:"+sum);
}
Threesum(1, 2, 3);
</script>
8 選做題: 定義一個函數,求任意個數字的和
<script>
function sum(){
var s = 0;
for(var i = 0; i < arguments.length; i++){
s += arguments[i];
}
console.log("合是"+s);
}
sum(1, 2, 3);
</script>
day04
1 編寫一個函數,計算兩個數字的和、差、積、商
要求:使用傳參的形式
<script>
function calculate(a, b, c){
switch(c){
case "+":
sum = a + b;
return sum;
break;
case "-":
poor = a - b;
return poor;
break;
case "*":
pro = a * b;
return pro;
break;
case "/":
shang = a / b;
return shang;
break;
default:
document.write("不好意思,超出範圍了!");
}
}
var a = +prompt("請輸入一個數字:");
var c = prompt("請輸入:");
var b = +prompt("請輸入一個數字:");
var d = calculate(a, b, c);
document.write("結果是"+d);
</script>
2 編寫一個函數,計算三個數字的大小,按從小到大順序輸出
<script>
function compare(a, b, c){
if (a > b && a > c){
if (b > c){
console.log(a, b, c);
}else{
console.log(a, c, b);
}
}else if(a < b && a > c){
console.log(b, a, c);
}else if(a >b && a < c){
console.log(c, a, b);
}else if(a < b && a < c){
if (b > c){
console.log(b, c, a);
}else{
console.log(c, b, a);
}
}
}
var a = +prompt("請輸入一個數字:");
var b = prompt("請輸入一個數字:");
var c = +prompt("請輸入一個數字:");
compare(a, b, c);
</script>
3 編寫任意個數字的求和、差、積、商的函數
<script>
function cocalculate(){
var a = prompt("請輸入求的方式:");
switch (a){
case "+":
var sum = 0;
for (var i = 0; i < arguments.length; i++){
sum += arguments[i];
}
console.log(sum);
break;
case "-":
var poor = arguments[0];
for (var j = 1; j < arguments.length; j++){
poor -= arguments[j];
}
console.log(poor);
break;
case "*":
var pro = arguments[0];
for (var k = 1; k < arguments.length; k++){
pro *= arguments[k];
}
console.log(pro);
break;
case "/":
var shang = arguments[0];
for (var s = 1; s < arguments.length; s++){
shang /= arguments[s];
}
console.log(shang);
break;
}
}
cocalculate(1,2,3,4);
</script>
4 編寫一個函數求一個數字是否是質數
<script>
function pn(num){
for(var i = 2; i < num; i++){
if(num % i == 0){
console.log(num+"不是質數");
return;
}
}
console.log(num+"是質數");
}
var num = +prompt("請輸入一個數:");
pn(num);
</script>
5 編寫一個函數求兩個數字之間有多少個質數
例如:fn(100, 200) ,在控制台輸出 100 - 200 之間的所有質數
<script>
function pn(num){
for(var i = 2; i < num; i++){
if(num % i == 0){
console.log(num+"不是質數");
return 0;
}
}
console.log(num+"是質數");
return 1;
}
function pns(num,num1){
var count = 0;
if (num1 > num){
for (num; num <= num1; num++){
count += pn(num);
}
}else{
for (num1; num1 <= num; num1++){
count += pn(num1);
}
}
console.log(count);
}
var num = +prompt("請輸入一個數:");
var num1 = +prompt("請輸入一個數:");
pns(num, num1);
</script>
6 編寫一個函數,計算任意兩個數字之間所能組成的奇數個數,數字必須是個位數
比如: 計算0-3之間能組成的奇數個是01、03、11、13、21、23、31、33
<script>
function jishu(a, b){
var count = 0;
for (var j = a; j <= b;j++ ){
for (var i = a; i <= b; i++){
var d = Number(j + '' + i);
if(d % 2 != 0){
console.log(d+"是奇數");
count ++;
}
}
}
console.log(count);
}
jishu(0, 3);
</script>
7 某個公司采用公用電話傳遞資料資料是四位的整數,在傳遞過程中是加密的
加密規則如下:
每位數字都加上5
然後用除以10的餘數代替該數字
再将第一位和第四位交換
第二位和第三位交換
請編寫一個函數,傳入原文,輸出密文
<script>
function jiami(num){
var qian = parseInt(num / 1000);
var bai = (parseInt(num / 100)) % 10;
var shi = parseInt((num % 100) / 10);
var ge = num % 10;
var gqian = (qian + 5) % 10;
var gbai = (bai + 5) % 10;
var gshi = (shi + 5) % 10;
var gge = (ge + 5) % 10;
var g1 = gqian;
gqian = gge;
gge = g1;
var g2 = gbai;
gbai = gshi;
gshi = g2;
return gqian*1000 + gbai * 100 + gshi*10 + gge;
}
var b = +prompt("請輸入一個4位數:");
var d = jiami(b);
console.log(d);
</script>
day05
-
定義一個含有30個整型元素的數組,按順序分别賦予從2開始的偶數;然後按順序每五個數求出一個平均值,放在另一個數組中并輸出。試程式設計。
var arr = [2, 4, 6, 8, …, 60]
// 結果是一個新的數組
// [6, 16, 26, 36, 46, 56]
<script>
var arr = [];
var arr2 = [];
var num = 0;
for(var i = 0; i < 30; i++){
arr[i] = 2 *(i + 1);
if((i+1) % 5 === 0){
var count = 0;
for(var j = 0; j < 5;j++){
count += arr[i-j];
}
arr2[num] = count / 5;
num++;
}
}
console.log(arr2);
</script>
-
通過循環按行順序為一個5×5的二維數組a賦1到25的自然數試程式設計。
[
[1, 2, 3, 4, 5],
[6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]
]
<script>
var arr = Array(5);
var arr1 = Array(5);
var count = 0;
for(var i = 0; i < 5;i++){
for(var j = 0; j < 5; j++){
arr[j]=j+1+count;
}
count +=5;
arr1[i]=[arr[0], arr[1], arr[2], arr[3], arr[4]];
}
console.log(arr1);
</script>
3 編寫函數map(arr) 把數組中的每一位數字都增加30%,并傳回一個新數組
<script>
var arr = [1, 2, 3, 4, 5];
function map(arr){
for(var i = 0; i < arr.length; i++){
arr[i] = arr[i]*1.3;
}
}
map(arr);
console.log(arr);
</script>
4 建立一個對象,該對象存儲一個學生的資訊,該對象包含學号、身份證、年齡、性别、所學專業等屬性資訊 并循環輸出在控制台中 當循環結束之後 要求該對象為空對象(不能夠有任何屬性)
<script>
var student = {
id:001,
sfz:55210,
age:18,
sex:"男",
zhuangye:"軟體工程"
}
for(var i in student){
console.log(student[i]);
delete student[i];
}
</script>
day06
var arr = [1, 2, 3, 4, "1", "nihao", "nihao", "nihao", 5, 6, "nihao", 7, 8, "hello", 9, 10];
// 通過程式設計 将上述數組中的所有字元串移除 其餘的不變
<script>
var arr = [1, 2, 2, 3, 4, "1", "nihao", "nihao", "nihao", 5, 6, "nihao", 7, 8, "hello", 9, 10];
for(var i = 0; i < arr.length; i++){
console.log(typeof arr[i]);
if(typeof arr[i] == "string"){
var index = arr.indexOf(arr[i]);
arr.splice(index, 1);
i = i - 1;
}
}
console.log(arr);
</script>
day07
<script>
// 給一段文章中的全部指定詞語進行過濾
// 比如我要過濾 "SM"
// var str = 'asdasdSMasdaSMsdasdSMsdasdasdSMsadasd';
// var str1 = str.replace("SM", "**");
// console.log(str);
// console.log(str1);
// 需要結果
// asdasd**asdasdasd**sdasdasd**
// 提示:可以利用循環 循環判定格式化完畢之後的字元串中是否還有SM這個字元串
// 最簡單的辦法
// str.split("SM").join("**");
// 第一步 得到數組
// ["asdasd", "asdasdasd", "sdasdasd", "sadasd"]
// 第二步 得到字元串
// "asdasd**asdasdasd**sdasdasd**"sadasd"
// 第二種方式 replace
// var str1 = str.replace("SM", "**").replace("SM", "**").replace("SM", "**");
// 我們應該循環
// 條件是當 str中沒有了SM指定的字元串之後
// 是以應該判定字元串中是否還有SM這個指定的字元串
// 判定一個字元串中是否還有指定的字元串
// 利用indexOf方法來判定 如果傳回的是-1 說明沒有了 如果不是-1 說明還存在
// var index = str.indexOf("SM");
// while (index != -1) {
// // 隻要不是-1 就說明還有 就替換
str = str.replace("SM", "**");
// // 因為str這個變量 是字元串 是以replace會傳回一個新的字元串 是以要讓str指向這個新的字元串
// // 再使用indexOf去檢測這個新字元串中是否還有SM
// index = str.indexOf("SM");
// }
console.log(str);
// 第一次循環之前 str 'asdasdSMasdaSMsdasdSMsdasdasdSMsadasd'
// 第二次循環之前 str 'asdasd**asdaSMsdasdSMsdasdasdSMsadasd'
// 第三次循環之前 str 'asdasd**asda**sdasdSMsdasdasdSMsadasd'
// 第四次循環之前 str 'asdasd**asda**sdasd**sdasdasdSMsadasd'
// 第四次循環結束 str 'asdasd**asda**sdasd**sdasdasd**sadasd'
// 2. 反轉函數
// 請實作一個函數reverse,該函數可以将一個數組内的内容反轉
// var arr = [1, 2, 3, 4, 5, 6];
// var arr1 = reverse(arr);
// arr1 => [6, 5, 4, 3, 2, 1]
// 定義一個函數 reverse
// function reverse(arr) {
// // 正着循環原數組
// // for (var i = 0; i < arr.length; i++) {
// // console.log(arr[i]);
// // }
// // 定義數組
// var arr1 = [];
// // 倒着循環數組
// for (var i = arr.length - 1; i >= 0; i--) {
// console.log(arr[i]);
// arr1.push(arr[i]);
// }
// // 新數組中内容已經是倒着來的
// console.log(arr1);
// return arr1;
// }
// 數組的方法中也有reverse
// var arr = [1, 2, 3, 4, 5, 6];
// var arr1 = arr.reverse();
// console.log(arr1);
// 定義字元串
// var str = 'abcdefg';
// // 利用第二題的reverse
// var arr = str.split("");
// console.log(arr); // ["a", "b", "c", "d", "e", "f", "g"]
// var arr1 = reverse(arr);
// console.log(arr1);// ["g", "f", "e", "d", "c", "b", "a"]
// var str1 = arr1.join("");
// console.log(str1); // gfedcba
// var str = "abcdacbabcbababcbabcabdadfafewgdhtvjyigyityuytuyukvhngntrd";
// var str = "abcabcaaabbbbbaeeeee";
// 統計每一個字元出現的次數
// 得到一個對象
// var obj = {
// };
// 循環檢視每一個字母出現的次數
// for (var i = 0; i < str.length; i++) {
// 判定 目前的字母是否出現過 于是我們要将每一個字元作為屬性名 放在obj這個對象的身上
// var prop = str[i];
// console.log(prop); // prop儲存的是 每一個字母 "a" "b" "c" "d"....
// console.log(obj[prop]);
// 在JS中一共有: false 0 "" NaN undefined null 是可以轉化為false的
// if (obj[prop]) { // if 語句 中 最終會是布爾值 是以如果傳遞的是非布爾值 會最終向布爾值進行轉化
// 如果obj[prop]不是false 說明之前出現過 應該把屬性值 +1
// obj[prop]++;
// } else {
// 如果obj[prop]是false 說明之前這個對象中沒有該屬性 但是又在這次循環中通路到了 說明它出現了是以要以它為屬性名設定一個數字 因為是第一次出現是以設定為1
// obj[prop] = 1;
// }
// }
// 當循環結束之後 obj的每一個key表示每一個字母 obj的每一個key對應的value 表示該字母出現的次數
// console.log(obj);
</script>