2024.01.23(화)

🧮연산자

나누기 연산자 /는 정수끼리 나누면 결과가 정수, 피연산자 중 하나라도 실수 자료형(double, float 등)이어야 결과도 실수가 나온다. 즉 정수끼리의 나눗셈은 최소 한 쪽의 피연산자를 실수로 명시(또는 강제 형변환)해줘야 한다.

나머지 연산자 %정수끼리의 나누기에서의 나머지만을 지원한다.

🌿분기문/조건문

  • if
    if (조건식) {
        조건식이 참이면 실행;
    }
  • if … else
    if (조건식) {
    		조건식이 참이면 실행;
    } else {
    		조건식이 거짓이면 실행;
    }
  • else if
    if (조건1) {
        조건1이 참일 경우 실행;
    }
    else if (조건2) {
        조건1이 거짓이고, 조건2가 참일 경우 실행;
    }
    else if (조건3) {
        조건1,2가 거짓이고, 조건3이 참일 경우 실행;
    }
    else{
        조건1,2,3이 거짓일 때 실행;
    }
  • switch
    switch(**정수형 변수**){
        case1:
            실행1;
            break;
        case2:
            실행2;
            break;default:
            실행_마지막;
            break;
    }

🔁반복문

  • while
    while (조건식) {
        조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
    }
  • do … while
    • 먼저 루프를 한 번 실행한 후에 조건식을 검사

    • 즉, 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행

      do {
          조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
      } while (조건식);
  • for
    • 초기식 → 조건식 → 블록문 → 증감식 → 조건식 → 블록문 → 증감식 → …

      for (초기식; 조건식; 증감식) {
          조건식의 결과가 참인 동안 반복적으로 실행하고자 하는 명령문;
      }

+) 반복문의 조건식이 무조건 참인 경우 무한 루프가 됨 → 탈출 조건을 만들어 break;로 빠져나와야 함

🚦break 문과 continue

  • break
    • 반복문 내부에서 사용 → 반복문 탈출
  • continue
    • 반복문 내부에서 사용 → continue 다음의 실행문들은 무시하고 반복문의 시작점으로 돌아감
      • while 문에서 사용: 조건식으로 이동
      • for 문에서 사용: 증감식으로 이동

📝평가 문제

  • 강사님이 오늘 강의에서 내준 평가 문제이다.
  • online c compiler를 사용했다.
  1. 사용자로부터 3개의 정수를 입력 받아서, 3개의 수를 곱한 결과를 출력하라.

    /******************************************************************************
    
    출력 예)
    세 개의 정수를 입력하세요 : 2 3 4
    세 수의 곱은 24입니다.
    
    *******************************************************************************/
    
    #include <stdio.h>
    
    int main()
    {
        int num1, num2, num3;
    
        printf("세 개의 정수를 입력하세요 : ");
        scanf("%d %d %d", &num1, &num2, &num3);
    
        printf("세 수의 곱은 %d입니다.\n", num1 * num2 * num3);
    
        return 0;
    }
  2. 사용자로부터 3개의 정수를 입력 받는다. 입력한 세 정수의 합과 평균을 출력하는 프로그램을 작성하라.

    #include <stdio.h>
    
    int main()
    {
        int num1, num2, num3;
    
        printf("세 개의 정수를 입력하세요 : ");
        scanf("%d %d %d", &num1, &num2, &num3);
    
        int sum = num1 + num2 + num3;
        double average = sum / 3.0;
    
        printf("세 수의 합은 %d, 평균은 %f입니다.\n", sum, average);
    
        return 0;
    }
  3. 사용자로부터 하나의 정수를 입력 받는다. 입력한 값이 짝수이면 출력 결과로 "입력한 수는 짝수입니다."라는 문자열을 출력하고, 입력한 값이 홀수이면 출력 결과로 "입력한 수는 홀수입니다."라는 문자열을 출력하라.

    #include <stdio.h>
    
    int main()
    {
        int num;
    
        printf("정수를 입력하세요 : ");
        scanf("%d", &num);
    
        if (num % 2) {
            printf("입력한 수는 홀수입니다.\n");
        } else {
            printf("입력한 수는 짝수입니다.\n");
        }
    
        return 0;
    }
  4. 사용자로부터 세 개의 정수를 입력 받는다. 입력 받은 세 개의 정수를 비교하여 그 중 가장 작은 최소값을 출력하는 프로그램을 작성하라.

    #include <stdio.h>
    
    int main()
    {
        int num1, num2, num3;
    
        printf("세 개의 정수를 입력하세요: ");
        scanf("%d %d %d", &num1, &num2, &num3);
    
        int min = num1;
    
        if (num2 < min) {
            min = num2;
        }
    
        if (num3 < min) {
            min = num3;
        }
    
        printf("가장 작은 값은 %d입니다.\n", min);
    
        return 0;
    }
  5. 사용자로부터 점수값을 입력 받는다. 점수값은 정수이다. 점수값이 60점 이상이면 "합격입니다."를 출력하고, 60점 미만이면 "불합격입니다."를 출력하라.

    #include <stdio.h>
    
    int main()
    {
        int score;
    
        printf("점수를 입력하세요 : ");
        scanf("%d", &score);
    
        if (score >= 60) {
            printf("합격입니다.\n");
        } else {
            printf("불합격입니다.\n");
        }
    
        return 0;
    }
  6. 사용자로부터 점수값을 입력 받는다. 점수값은 정수이다. 점수값이 60점 이상이면 "합격입니다."를 출력하고, 60점 미만이면 "불합격입니다."를 출력하라. 단, 합격자 중에 90점 이상이면 추가로 "장학대상입니다."를 출력하도록 한다.

    #include <stdio.h>
    
    int main()
    {
        int score;
    
        printf("점수를 입력하세요 : ");
        scanf("%d", &score);
    
        if (score >= 60) {
            printf("합격입니다.\n");
            if (score >= 90) {
                printf("장학대상입니다.\n");
            }
        } else {
            printf("불합격입니다.\n");
        }
    
        return 0;
    }
  7. 사용자로부터 나이를 입력 받는다. 나이는 정수이다. 나이의 값이 13세 미만이면 "어린이입니다."를 출력하고, 13세 이상 19세 미만이면 "청소년입니다."를 19세 이상이면 "성인입니다."를 출력하라.

    #include <stdio.h>
    
    int main()
    {
        int age;
    
        printf("나이를 입력하세요: ");
        scanf("%d", &age);
    
        if (age < 13) {
            printf("어린이입니다.\n");
        } else if (age < 19) {
            printf("청소년입니다.\n");
        } else {
            printf("성인입니다.\n");
        }
    
        return 0;
    }
  8. 사용자로부터 char형으로 문자 한 개를 입력 받는다. 문자는 'y' 또는 'n' 둘 중에 하나의 문자를 입력한다. 만약 입력한 값이 'y'라면 "네, 드라이브를 포맷하겠습니다."를 출력하고, 입력한 값이 'n'이라면 "아니오, 드라이브를 포맷하겠습니다."(오타 아님🤣)를 출력하시오.

    /******************************************************************************
    
    출력 예)
    정말로 이 드라이브를 포맷하시겠습니까?(y/n) y
    네, 드라이브를 포맷하겠습니다.
    
    *******************************************************************************/
    
    #include <stdio.h>
    
    int main()
    {
        char response;
    
        printf("정말로 이 드라이브를 포맷하시겠습니까?(y/n) ");
        scanf(" %c", &response);
    
        if (response == 'y' || response == 'Y') {
            printf("네, 드라이브를 포맷하겠습니다.\n");
        } else if (response == 'n' || response == 'N') {
            printf("아니오, 드라이브를 포맷하겠습니다.\n");
        }
    
        return 0;
    }
  9. 사용자로부터 성적 점수인 정수 값을 한 개 입력 받아 그 값에 대한 학점을 표시하는 프로그램을 작성하라. 예를 들어 100 ~ 91점은 A학점, 90 ~ 81점은 B학점, 80 ~ 71점은 C학점, 70 ~ 61점은 D학점, 60점 이하는 F학점으로 표시한다. 단, 입력하는 수의 범위는 0부터 100 사이다.

    /******************************************************************************
    
    출력 예)
    점수를 입력하시오 : 95
    학점은 A입니다.
    
    *******************************************************************************/
    
    #include <stdio.h>
    
    int main() {
        int score;
    
        printf("점수를 입력하시오: ");
        scanf("%d", &score);
    
        if (score < 0 || score > 100) {
            printf("입력 범위를 벗어났습니다.\n");
        } else {
            if (score <= 100 && score >= 91) {
                printf("학점은 A입니다.\n");
            } else if (score >= 81) {
                printf("학점은 B입니다.\n");
            } else if (score >= 71) {
                printf("학점은 C입니다.\n");
            } else if (score >= 61) {
                printf("학점은 D입니다.\n");
            } else {
                printf("학점은 F입니다.\n");
            }
        }
    
        return 0;
    }
  10. 반복문을 사용하여 1월부터 12월까지 출력하라.

    #include <stdio.h>
    
    int main() {
        int month = 1;
    
        while (month <= 12) {
            printf("%d월\n", month);
            month++;
        }
    
        return 0;
    }
  11. 사용자로부터 입력받은 숫자(정수)에 해당하는 구구단을 출력하시오.

    #include <stdio.h>
    
    int main() {
        int num;
        int i = 1;
    
        printf("숫자를 입력하시오: ");
        scanf("%d", &num);
    
        while (i <= 9) {
            printf("%d × %d = %d\n", num, i, num * i);
            i++;
        }
    
        return 0;
    }
  12. 반복문을 사용하여 1부터 10까지의 합을 출력하라.

    #include <stdio.h>
    
    int main() {
        int sum = 0;
        int i = 1;
    
        while (i <= 10) {
            sum += i;
            i++;
        }
    
        printf("1부터 10까지의 합은 %d입니다.\n", sum);
    
        return 0;
    }
    #include <stdio.h>
    
    int main()
    {
        int sum = 0;
    
        for (int i = 1; i <= 10; i++) {
            sum += i;
        }
    
        printf("1부터 10까지의 합은 %d입니다.\n", sum);
    
        return 0;
    }
  13. 반복문을 사용하여 1부터 사용자가 입력한 정수까지의 합을 출력하는 프로그램을 작성하라.

    #include <stdio.h>
    
    int main() {
        int num;
    
        printf("정수를 입력하세요: ");
        scanf("%d", &num);
    
        int sum = 0;
        int i = 1;
    
        while (i <= num) {
            sum += i;
            i++;
        }
    
        printf("1부터 %d까지의 합은 %d입니다.\n", num, sum);
    
        return 0;
    }
    #include <stdio.h>
    
    int main()
    {
        int num;
        int sum = 0;
    
        printf("정수를 입력하세요: ");
        scanf("%d", &num);
    
        for (int i = 1; i <= num; i++) {
            sum += i;
        }
    
        printf("1부터 %d까지의 합은 %d입니다.\n", num, sum);
    
        return 0;
    }
  14. 배터리를 충전 중이다. 1부터 100까지 충전해야 하는데, 현재 충전량을 표시하고, 100이 넘어가면 "충전이 완료되었습니다."라고 출력하자.

    /******************************************************************************
    
    출력 예)
    충전 : 1
    충전 : 2
    ⁝
    충전 : 100
    충전이 완료되었습니다.
    
    *******************************************************************************/
    
    #include <stdio.h>
    
    int main() {
        int i = 1;
    
        while (i <= 100) {
            printf("충전 : %d\n", i);
            i++;
        }
    
        printf("충전이 완료되었습니다.\n");
    
        return 0;
    }
    #include <stdio.h>
    
    int main()
    {
        for (int i = 1; i <= 100; ++i) {
            printf("충전 : %d\n", i);
        }
    
        printf("충전이 완료되었습니다.\n");
    
        return 0;
    }
  15. 다음과 같이 출력하도록 프로그램을 작성하되 반드시 이중 while문을 사용하여 작성하여보자.

    /******************************************************************************
    
    출력
    > *
    > **
    > ***
    > ****
    > *****
    
    *******************************************************************************/
    
    #include <stdio.h>
    
    int main() {
        int row = 1;
    
        while (row <= 5) {
            int col = 1;
    
            while (col <= row) {
                printf("*");
                col++;
            }
    
            printf("\n");
            row++;
        }
    
        return 0;
    }
  16. 구구단을 출력하되, 짝수단(2단, 4단, 6단, 8단)만 출력하는 프로그램을 작성하라. 단, continue 문을 사용하여 작성할 것.

    #include <stdio.h>
    
    int main()
    {
        for (int dan = 1; dan <= 9; dan++) {
            if (dan % 2) {   // 홀수
                continue;
            }
    
            printf("%d단:\n", dan);
    
            for (int i = 1; i <= 9; i++) {
                printf("%d × %d = %d\n", dan, i, dan * i);
            }
        }
    
        return 0;
    }

평가 문제 쉽긴 한데 은근 많이 내주시네😅

profile
이것저것 관심 많은 개발자👩‍💻

0개의 댓글