● PRACTICE 연습문제
- 수업시간에 푼 연습문제 모음
위쪽은 내가 해본 코드 아래쪽은 강사님 코드 (비슷한 경우에는 한 가지만 적어둠)
Q1) 평균점수에 따라 A, B, C, D, F 학점을 출력하시오(switch문 활용)
- 90~100 : A학점, 80~89 : B학점, 70~79 : C학점, 60~69 : D학점, 그외 F학점
//Q1
var kor=100, eng=95, mat=90;
var aver=parseInt((kor+eng+mat)/3);
var casevalue = parseInt(aver/10);
switch (casevalue) {
case 10: document.write("A학점"); break;
case 9: document.write("A학점"); break;
case 8: document.write("B학점"); break;
case 7: document.write("C학점"); break;
case 6: document.write("D학점"); break;
default: document.write("F학점"); break;
}//switch end
//감사님코드 방법1 (일부 생략, 정석이지만 프로그래밍하는 의미가 없다)
switch (aver) {
case 100: document.write("A학점"); break;
case 99: document.write("A학점"); break;
case 98: document.write("A학점"); break;
case 97: document.write("A학점"); break;
case 96: document.write("A학점"); break;
case 95: document.write("A학점"); break;
case 94: document.write("A학점"); break;
case 93: document.write("A학점"); break;
case 92: document.write("A학점"); break;
case 91: document.write("A학점"); break;
case 90: document.write("A학점"); break;
case 89: document.write("B학점"); break;
case 88: document.write("B학점"); break;
...
case 78: document.write("C학점"); break;
...
case 68: document.write("D학점"); break;
...
default: document.write("F학점"); break;
}//switch end
//감사님코드 방법2
switch (parseInt(aver/10)) {
case 10: //아무것도 없기 때문에 10일때는 다음줄로 넘어와서 A학점 출력
case 9: document.write("A학점"); break;
case 8: document.write("B학점"); break;
case 7: document.write("C학점"); break;
case 6: document.write("D학점"); break;
default: document.write("F학점"); break;
}//switch end
Q2) 연산기호(op)에 따라 결과값을 출력하시오
//Q2
var i = 3, j = 5;
var op = '*';
if (op=='+') {
result = i + j; document.write(i + " + " + j + " = " + result);
}else if (op=='-'){
result = i - j; document.write(i + " - " + j + " = " + result);
}else if (op=='*'){
result = i * j; document.write(i + " * " + j + " = " + result);
}else if (op=='/'){
result = i / j; document.write(i + " / " + j + " = " + result);
}//if end
//강사님 코드
switch (op) {
case "+" : result = i + j; break;
case "-" : result = i - j; break;
case "*" : result = i * j; break;
case "/" : result = i / j; break;
}//switch end
document.write(i + op + j + "=" + result);
Q3) 주민번호를 이용해서 나이와 성별을 출력하시오
- 나이 : 올해 년도 - 태어난 년도
- 성별 : 1 또는 3은 남자, 2 또는 4는 여자
//Q3
var myYear = 00; // 태어난 년도
var myCode = 3; // 성별코드
switch (myCode) {
case 1 : gender="남자"; myYear+=1900; break;
case 2 : gender="여자"; myYear+=1900; break;
case 3 : gender="남자"; myYear+=2000; break;
case 4 : gender="여자"; myYear+=2000; break;
}//switch end
age=2022-myYear+1
document.write("나이 : " + age + "세, " + "성별 : " + gender);
//강사님 코드
//1)태어난 연도 완성해서 나이구하기
switch (myCode) {
case 1 :
case 2 : myYear += 1900; break;
case 3 :
case 4 : myYear += 2000; break;
}//switch end
myAge = 2022 - myYear;
//2)성별 구하기
//if문 활용
if(myCode == 1 || myCode == 3){
document.write("성별 : 남자 <hr>");
}else if(myCode == 2 || myCode == 4){
document.write("성별 : 여자 <hr>");
}//if end
//switch문 활용
switch(myCode % 2){
case 0 : document.write("성별 : 여자 <hr>"); break;
case 1 : document.write("성별 : 남자 <hr>"); break;
}//switch end
Q4) 1~3사이의 모든 수를 더하시오(누적의 합)
Q5) 4팩토리얼 값을 구하시오(누적의 곱)
//Q4
var sum=0;
for(n=1; n<=3; n+=1){
sum=sum+n;
}//for end
document.write("누적의 합: " + sum);
//Q5
var fac=1, a=4;
n=a;
while(a>=1){
fac=fac*a;
a--;
}//while end
document.write(n + "! = " + fac);
//Q5 강사님 코드
var gop = 1; //결과값
for(b=4; b>=1; b=b-1){
gop=gop*b
}//for end
document.write("누적의 곱: " + gop);
Q6) 두 수 사이의 합을 구하시오
예) 2,5 >> 2+3+4+5 / 5,2 >> 5+4+3+2
//Q6
var start = 2;
var end = 5;
var sum = 0;
if (start < end){
a = start
while (a <= end){
sum = sum + a;
a = a + 1;
}//while end
}else{
a = end
while (a <= start){
sum = sum + a;
a = a + 1;
}//while end
}//if end
document.write(start + ", " + end + "사이의 수의 합: " + sum + "<hr>");
//강사님 코드
var start = 2;
var end = 5;
var sum = 0;
if(start>end){ //start가 end보다 클 때, 변수값 서로 교환하기(swap)
tmp = start;
start = end;
end = tmp;
}//if end
for(a=start; a<=end; a=a+1){
sum=sum+a;
}//for end
document.write(start+"~"+end+"까지의 합: "+sum);
Q7) 1~4 사이 중에서 짝수의 갯수를 구하시오
//Q4
var start = 1, end = 4;
var count = 0;
for(a=start; a<=end; a+=1){
if(a%2==0){
count+=1;
}//if end
}//for end
document.write(start + ", " + end + "사이 짝수의 개수: " + count +"개");
Q8) 서기1년 ~2022년 사이 중에서 윤년의 갯수를 구하시오
- 4로 나누어 떨어지는 해는 윤년
- 4, 100으로 나누어 떨어지는 해는 평년
- 4, 100, 400으로 나누어 떨어지는 해는 윤년
- 주의) 이 문제는 연습용이고 실제 사용시 달력과 관련이 있는 정보(윤년 구하는 공식 등)들은
자바스크립트 "Data()객체", 자바 "Calendar클래스"를 사용해야 함
//Q8
var start = 1, end = 2022;
var count = 0;
for(a=start; a<=end; a++){
if(a%4==0 && a%100!=0){
count += 1;
}else if(a%4==0 && a%100==0 && a%400==0){
count += 1;
}//if end
}//for end
document.write("서기 " + start + "년과 서기 " + end + "년 사이의 윤년 개수: " + count);
//강사님 코드
var leap = 0;
for(year=1; year<=2022; year=year+1){
if(year%4==0 && year%100!=0 || year%400==0){ //윤년 구하는 공식
leap=leap+1;
}//if end
}//for end
document.write("윤년의 개수: " + leap);
Q9) 10에서 x를 여러번 뺀 후 결과값이 음수가 되었을 때 x를 몇번 뺐는지 구하시오
- 예) 10-3=7 → 7-3=4 → 4-3=1 → 1-3=-2 (4번)
- 힌트) 무한루프 이용
일단 무한루프를 돌리고 내가 원하는 상황이 되었을 때 break(프로그래밍 할 때 많이 쓰임)
//Q9
var x = 3;
var num = 10;
var count = 0;
for(;;){
num=num-x;
count=count+1;
if(num<0){ break; }
}//for end
document.write("x를 뺀 횟수: " + count);
//강사님 코드
var x = 3;
var su = 10;
var cnt = 0;
while(true){ //무한loop
su=su-x;
cnt=cnt+1;
if(su<0){
break;
}//if end
}//while end
document.write("횟수: " + cnt)
'Frontend > JavaScript' 카테고리의 다른 글
12. JavaScript 배열(Array) (0) | 2022.05.02 |
---|---|
11. JavaScript 연습문제 모음 (이중 반복문, 조건문) (0) | 2022.04.29 |
09. JavaScript 반복문(for, while, do~while, break, continue) (0) | 2022.04.28 |
08.JavaScript 조건문(if, switch~case) (0) | 2022.04.28 |
07.JavaScript Math객체 (0) | 2022.04.27 |
댓글