반응형
1. 성적표 만들기
5명의 학생을 대상으로 평균, 등수, 과락, 평균 10점당 * 한개씩, 장학생을 구한후 결과값을 표작성해서 id=demo에 아래와 같이 출력하시오
--------------------------------------------------------------------------
이름 국어 영어 수학 평균 등수 결과
--------------------------------------------------------------------------
라일락 100 100 100 100 1 합 격 ********** 장학생
진달래 50 55 60 55 4 불합격 *****
개나리 95 95 35 75 3 재시험 *******
무궁화 80 85 90 85 2 합 격 ********
홍길동 60 40 30 43 5 불합격 ****
--------------------------------------------------------------------------
[코드]
<body>
<h3>성적 프로그램</h3>
<div id="demo"></div>
<script>
const uname = ['라일락', '진달래', '개나리', '무궁화', '홍길동']
let kor = [100, 50, 95, 80, 60]
let eng = [100, 55, 95, 85, 40]
let mat = [100, 60, 35, 90, 30]
let size = uname.length
// 평균
const aver = [0, 0, 0, 0, 0]
for(let i=0; i<size; i++) {
aver[i] = Math.floor((kor[i] + eng[i] + mat[i])/3)
}
// 등수
const rank = [0, 0, 0, 0, 0]
const average = [];
for(const value of aver) {
average.push(value)
}
average.sort(function(a,b){return b - a})
for(let i=0; i<size; i++) {
rank[i] = average.indexOf(aver[i])+1
}
// 결과
const pass = ["","","","",""]
for(let i=0; i<size; i++) {
// 합격, 불합격, 재시험
if(aver[i]>=70){
if (kor[i]>40 && eng[i]>40 && mat[i]>40) {
pass[i] = "합격 "
} else {
pass[i] = "재시험 "
}
} else {
pass[i] = "불합격 "
}
//별찍기
let star = ""
for(let j=1; j<=Math.floor(aver[i]/10); j++) {
star += "*"
}
//장학생
let scholar = ""
if (aver[i]>=95) {
scholar = " 장학생"
}
pass[i] = pass[i] + star + scholar
}
let result = ""
result += "<table border='1'>"
result += "<tr>"
result += "<th>이름</td>"
result += "<th>국어</td>"
result += "<th>영어</td>"
result += "<th>수학</td>"
result += "<th>평균</td>"
result += "<th>등수</td>"
result += "<th>결과</td>"
result += "</tr>"
for(let i=0; i<size; i++) {
result += "<tr>"
result += "<td>" + uname[i] + "</td>"
result += "<td>" + kor[i] + "</td>"
result += "<td>" + eng[i] + "</td>"
result += "<td>" + mat[i] + "</td>"
result += "<td>" + aver[i] + "</td>"
result += "<td>" + rank[i] + "</td>"
result += "<td>" + pass[i] + "</td>"
result += "</tr>"
}
result += "</table>"
document.getElementById("demo").innerHTML = result
</script>
</body>
2. 날짜관련 문제
2-1) 서기 1년 1월 1일 부터 오늘까지의 총 날 수를 구하시오
2-2) 오늘의 요일을 출력하시오
2-3) 올해의 띠를 출력하시오
[코드]
let cYear = 2023, cMonth = 2, cDate = 15;
let sum = 0; // 서기 1년 1월 1일 부터 현재까지의 일 수
//1단계
for (let i = 1; i < cYear; i++) {
if (i % 4 === 0 && i % 100 !== 0 || i % 400 === 0) {
sum += 366
} else {
sum += 365
}
}
//2단계
let mon = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (cYear % 4 === 0 && cYear % 100 !== 0 || cYear % 400 === 0) { // 윤년 2월일 경우
mon[2] = 29
}
for (let i = 1; i <cMonth; i++) {
sum += mon[i]
}
//3단계
sum += cDate
document.write("서기 1년 1월 1일 부터 현재까지의 일 수: " + hap)
document.write("<hr>")
// 요일출력
switch (sum%7) {
case 1: document.write("월요일")
break
case 2: document.write("화요일")
break
case 3: document.write("수요일")
break
case 4: document.write("목요일")
break
case 5: document.write("금요일")
break
case 6: document.write("토요일")
break
case 0: document.write("일요일")
break
}
document.write("<hr>")
// 띠 출력
let animal=["원숭이","닭","개","돼지","쥐","소","호랑이","토끼","용","뱀","말","양"];
document.write("올해의 띠: " + animal[cYear%12])
3. 함수 만들기
3-1) #기호 100개를 출력하는 함수를 만드시오
[풀이]
const test5 = function(a,b) {
for(let i=0; i<b; i++) {
document.write(a)
}
}
test5("#", 100)
3-2) 팩토리얼값을 출력하는 함수를 만드시오
[풀이]
const fact = function(a) {
let mult=1
for(let i=a; i>=1; i--) {
mult *= i
}
return mult
}
let gop = fact(4)
document.write(gop)
[다른풀이]
const fact = function (a) {
if(a==0) {
return 1
} else {
return a*fact(a-1)
}
}
3-3) 입력한 연도가 윤년인지 평년인지 판단하는 함수를 만드시오
[풀이]
const leap = function (a) {
if (a % 4 === 0 && a % 100 !== 0 || a % 400 === 0) {
return true
} else {
return false
}
}
if(leap(2023)){
document.write('윤년')
} else {
document.write('평년')
}
4. Date객체 이용하기
날짜변수 d값을 이용해서 날짜 정보를 아래와 같이 구성해서 id=clock에 출력하시오
예) 2023.02.15 (수) PM 05 : 09 : 42
[풀이]
let d = new Date()
let today=""
// 년
today += d.getFullYear() + "."
// 월
if(d.getMonth()+1<10) {
today += "0"
}
today += d.getMonth()+1 + "."
// 일
today += d.getDate() + " "
// 요일
const day = ["일", "월", "화", "수", "목", "금", "토"]
today += "(" + day[d.getDay()] + ") "
// PM, AM
if(d.getHours()>=12) {
today += "PM "
} else {
today += "AM "
}
// 시
let hours = d.getHours()
if(hours>12) {
hours -= 12
}
if(hours<10) {
today += "0"
}
today += hours + " : "
// 분
if(d.getMinutes()<10) {
today += "0"
}
today += d.getMinutes() + " : "
// 초
if(d.getSeconds()<10) {
today += "0"
}
today += d.getSeconds()
document.getElementById("clock").innerText = today
반응형
'Front-End > JavaScript' 카테고리의 다른 글
JavaScript(6)-1 (2) | 2023.02.16 |
---|---|
JavaScript(5) (0) | 2023.02.15 |
자바스크립트 예제 (4) (0) | 2023.02.14 |
댓글