[2025.03.08] (예습) while문_연습문제

2025. 3. 8. 23:08·C/예습

[while문의 활용]

★ 문제 1

  • 프로그램 사용자로부터 양의 정수를 하나 입력 받아서, 그 수만큼 "Hello world!"를 출력하는 프로그램을 작성해보자.
// 문제 1
#include <stdio.h>

int main() {
    int num;
    int i = 0;
    
    printf("양의 정수를 하나 입력하세요\n");
    scanf("%d", &num);
    
    while(i < num)
    {
        printf("Hello world!\n");
        i++;
    }
    return 0;
}

 

 

 

★ 문제 2

  • 프로그램 사용자로부터 양의 정수를 하나 입력 받은 다음, 그 수만큼 3의 배수를 출력하는 프로그램을 작성해보자.
  • 예를 들어서 5를 입력 받았다면, 3 6 9 12 12 15를 출력해야 한다.
// 문제 2
#include <stdio.h>

int main() {
    int num;
    int i = 1;
    
    printf("양의 정수 하나를 입력하세요.\n");
    scanf("%d", &num);
    
    while(i < num+1)
    {
        printf("%d\n", 3*i);
        i++;
    }
    return 0;
}

 

 

★ 문제 3

  • 프로그램 사용자로부터 계속해서 정수를 입력 받는다. 그리고 그 값을 계속해서 더해 나간다.
  • 이러한 작업은 프로그램 사용자가 0을 입력할 때까지 계속되어야 하며, 0이 입력되면 입력된 모든 정수의 합을 출력하고 프로그램을 종료시킨다.
// 문제 3
#include <stdio.h>

int main() {
    
    int num = 1;
    int sum_ = 0;
    
    while(num != 0) {
        printf("입력 : ");
        scanf("%d", &num);
        
        sum_ += num;
    }
    printf("모든 수의 합 = %d\n", sum_);
    return 0;
}

 

 

 

★ 문제 4

  • 프로그램 사용자로부터 입력 받은 숫자에 해당하는 구구단을 출력하되, 역순으로 출력하는 프로그램을 작성해보자.
// 문제 4
#include <stdio.h>

int main() {
    
    int dan;
    int num = 9;
    
    printf("구구단 몇단?");
    scanf("%d", &dan);
    while(num > 0)
    {
        printf("%d x %d = %d\n", dan, num, dan*num);
        num--;
    }
    return 0;
}

 

 

 

★ 문제 5

  • 프로그램 사용자로부터 입력 받은 정수의 평균을 출력하는 프로그램을 작성하되 다음 두 가지 조건을 만족시켜야 한다.
  • "먼저 몇 개의 정수를 입력할 것인지 프로그램 사용자에게 묻는다. 그리고 그 수만큼 정수를 입력 받는다."
  • "평균 값은 소수점 이하까지 계산해서 출력한다."
// 문제 5
#include <stdio.h>

int main() {
    int num_1, num_2, mean_;
    int i = 0;
    int sum_ = 0;
    
    printf("몇 개의 정수를 입력하시고 싶으신가요? ");
    scanf("%d", &num_1);
    
    while(i<num_1)
    {
        printf("정수 입력 : ");
        scanf("%d", &num_2);
        sum_ += num_2;
        i++;
    }
    mean_ = sum_ / num_1;
    printf("평균 : %d\n", mean_);
    
    return 0;
}

 

 


 

 

[while문의 중첩]

★ 문제 1

  • 프로그램사용자로부터 총 5개의 정수를 입력 받아서, 그 수의 합을 출력하는 프로그램을 작성해보자.
  • 단! 한가지 조건이 있다. 정수는 반드시 1 이상이어야 한다.
  • 만약에 1미만의 수가 입력되는 경우에는, 이를 입력으로 인정하지 않고 재 입력을 요구해야 한다.
  • 그래서 결국 1이상의 정수 5개를 모두 입력 받을 수 있도록 프로그램을 완성해야 한다.
// 문제 1
#include <stdio.h>

int main() {
    
    int num = 0, cnt = 0, sum_ = 0;    
    
    while(cnt < 5)
    {
        while(num < 1)
        {
            printf("1 이상의 정수를 입력해주세요.");
            scanf("%d", &num);
        }

        sum_ += num;
        num = 0;
        cnt++;
    }
    printf("합 = %d\n", sum_);
    return 0;
}

 

 

 

★ 문제 2

  • 아래의 출력을 보이는 프로그램을 작성해보자.

*

o*

oo*

ooo*

oooo*

  • 참고로, 총 5행에 걸쳐서 출력이 이뤄지고, 행이 더해질 때마다 o 문자의 수가 증가한다는 특징을 기반으로 while문의 중첩을 구성하면 된다.
  • 이 문제 코드 작성하는데,,,, cnt_2에 0 재대입? 하는거 빼먹어서 계속 실패했었는데 갑자기 생각나서 추가하니까 됐음 ㅠㅠ
// 문제 2
#include <stdio.h>

int main() {

    int cnt_1 = 0, cnt_2 = 0;
    
    while(cnt_1 < 5)
    {
        while(cnt_2 < cnt_1)
        {
            printf("o");
            cnt_2++;
        }

        printf("*\n");
        cnt_2 = 0;
        cnt_1++;
    }
    return 0;
}

 

 


 

 

[while문과 do~while문에 익숙해지기]

★ 문제 1

  • 바로 위에서 보인 예제 UsefulDoWhile.c를 while문 기반으로 재 구현할 경우, 생각해볼 수 있는 구현의 형태는 두 가지이다. 그 두 가지 방법은 다음과 같다.
    • 방법 1 : 변수 num의 값을 적절히 초기화해서 첫 번째 반복조건의 검사결과가 '참'이 되게 한다.
    • 방법 2 : while문에 진입하기 전에프로그램 사용자로부터 값을 1회 입력 받게 한다.
  • 이 두 가지 방법을 각각 적용해서 예제 UsefulDoWhile.c를 while문 기반으로 재 구현해 보자.
  • 참고로 어떠한 방법이든 do~while문을 적용했을 때보다는 부자연스럽다는 느낌이 들것이다.
  • 방법 1은 num을 초기화 할때, 0이 아닌 다른 정수로 초기화하여 while문의 조건이 참기 되게 하였음.
// 문제 1 - 방법1
#include <stdio.h>

int main() {

    int total = 0, num = 1;

    while(num != 0)
    {
        printf("정수 입력(0 to quit) : ");
        scanf("%d", &num);
        total += num;
    }
    printf("합계 : %d\n", total);
    
    return 0;
}

 

  • 방법2는 while문에 진행하기 전에 정수 입력 1회를 받게 함. 
  • 이 문제는 확실히 while문을 사용하기 보다 do~while문을 사용하는게 좋을 것 같음!
// 문제 1 - 방법2
#include <stdio.h>

int main() {

    int total = 0, num = 0;

    printf("정수 입력(0 to quit) : ");
    scanf("%d", &num);
    total += num;

    while(num != 0)
    {
        printf("정수 입력(0 to quit) : ");
        scanf("%d", &num);
        total += num;
    }
    printf("합계 : %d\n", total);
    
    return 0;
}

 

 

 

★ 문제 2

  • 0이상 100이하의 정수 중에서 짝수의 합을 출력하는 프로그램을 구현하되, do~while문 기반으로 구현해보자.
  • 참고로 덧셈의 결과는 2550이 되어야 한다.
// 문제 2
#include <stdio.h>

int main() {

    int num = 0, sum_ = 0;

    do
    {   
        sum_ += num;
        num += 2;
    } while (num <= 100);
    printf("짝수의 합 : %d\n", sum_);
    return 0;
}

 

 

 

★ 문제 3

  • while문의 중첩관련 예제 TwoToNine.c를 do~while문의 중첩기반으로 재 구현해보자.
  • do~while문의 중첩에 대해서는 별도의 언급이 없었지만, while문의 중첩을 이해하였으니, 충분히 응용이 가능하다.
// 문제 3
#include <stdio.h>

int main() {

    int dan = 2;
    int is = 1;

    do
    {
        do
        {
            printf("%d x %d = %d\n", dan, is, dan*is);
            is++;
        } while (is < 10); // 곱하기 1~9
        is = 1;
        dan++;
    } while (dan < 10); // 2단부터 9단
    
    return 0;
}

'C > 예습' 카테고리의 다른 글

[2025.03.09] (예습) 조건에 따른 흐름의 분기  (1) 2025.03.09
[2025.03.09] (예습) for문_연습문제  (2) 2025.03.09
[2025.03.08] (예습) 반복실행을 명령하는 반복문  (0) 2025.03.08
[2025.03.08] (예습) scanf 연습문제 풀이  (0) 2025.03.08
[2025.03.08] (예습) 변수와 연산자  (0) 2025.03.08
'C/예습' 카테고리의 다른 글
  • [2025.03.09] (예습) 조건에 따른 흐름의 분기
  • [2025.03.09] (예습) for문_연습문제
  • [2025.03.08] (예습) 반복실행을 명령하는 반복문
  • [2025.03.08] (예습) scanf 연습문제 풀이
polibo
polibo
Polibo의 개발 성장기 지켜봐주십슈 (콩 싫어해요.)
  • polibo
    Polibo와 개발 콩나무 키우기
    polibo
  • 전체
    오늘
    어제
    • 분류 전체보기 (65)
      • Python (23)
      • C (32)
        • 본수업 (19)
        • 예습 (7)
        • 개인프로젝트01 - 로또 (3)
        • 개인프로젝트02 - 복켓몬 키우기 (2)
        • 개인프로젝트03 - 김복천국 POS기 (1)
        • 팀프로젝트01 - 용사 복이의 대모험 RPG (0)
        • 팀프로젝트02 - 메일 프로그램 (0)
      • TCP_IP (0)
      • DB (1)
      • C++ (7)
        • 개인프로젝트01 - 숫자야구 (0)
      • QT (1)
        • 개인프로젝트01 - 숫자야구 (0)
        • 팀프로젝트01 - 키오스크 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Python
    C
    while문
    for문
    문자열
    파이썬 숫자야구
    파이썬예제
    c우선순위
    else if
    c언어
    조건문
    코딩
    파이썬게임
    c언어 scanf
    파이썬조건문
    반복문
    if문
    파이썬반복문
    파이썬
    순서도
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
polibo
[2025.03.08] (예습) while문_연습문제
상단으로

티스토리툴바