본문 바로가기
Frontend/JavaScript

10. JavaScript 연습문제 모음 (조건문, 반복문)

by 개발개발빈이 2022. 4. 29.

● 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)

   

 

댓글