프로그래밍 / C++ / 언리얼

카테고리 없음

[C++] 4강. 조건문과 반복문

아트성 2022. 4. 12. 16:58

문제1)

정수를 하나 입력 받아서
 - 입력 받은 숫자가 10보다 크면 "입력된 숫자가 10보다 큽니다." 출력
 - 10 이하 9 초과 이면 "9보다 큽니다." 출력
 - 9 이하 6초과 이면 "6보다 큽니다." 출력
 - 그 이외에는 "6보다 작거나 같습니다." 출력

#pragma region 0412 실습1(if)

    //정수를 하나 입력 받아서
    //입력 받은 숫자가 10보다 크면 "입력된 숫자가 10보다 큽니다." 출력
    //10 이하 9 초과 이면 "9보다 큽니다." 출력
    //9 이하 6초과 이면 "6보다 큽니다." 출력
    //그 이외에는 "6보다 작거나 같습니다." 출력

    int num; cout << "숫자를 입력하시오(0~10) : "; cin >> num; // 입력

    // 처리
    if (num > 10)
    {
        cout << "10보다 큽니다" << endl; // 출력
    }
    else if (num > 9 && num <= 10)
    {
        cout << "9보다 큽니다" << endl; // 출력
    }
    else if (num > 6 && num <= 9)
    {
        cout << "6보다 큽니다" << endl; // 출력
    }
    else
    {
        cout << "6보다 작거나 같습니다." << endl; // 출력
    }
    return 0;

#pragma endregion 0412 실습1(if)

 

문제2)

switch, if문을 활용하여 사용자가 숫자 입력시 다음과 같은 문구 띄우기.

 - 당신의 고향은 어디입니까?

 - 1. 서울    2. 양평   3. 광주   4. 대전   5 . 제주도

 -   안녕하세요. 당신의 고향은 [서울]이군요.
     안녕하세요. 당신의 고향은 [양평]이군요.
     안녕하세요. 당신의 고향은 [광주]이군요.
     안녕하세요. 당신의 고향은 [대전]이군요.
     안녕하수꽝. 혼저옵서예
     5개중에 선택해 주세요

 

    cout << "당신의 고향은 어디입니까 ?" << endl;
    cout << "1. 서울    2. 양평   3. 광주   4. 대전   5 . 제주도" << endl;
    int num; cin >> num;

    switch (num)
    {
    case 1:
        cout << "안녕하세요.당신의 고향은[서울]이군요." << endl;
        break;

    case 2:
        cout << "안녕하세요.당신의 고향은[양평]이군요." << endl;
        break;

    case 3:
        cout << "안녕하세요.당신의 고향은[광주]이군요." << endl;
        break;

    case 4:
        cout << "안녕하세요.당신의 고향은[대전]이군요." << endl;
        break;

    case 5:
        cout << "안녕하수꽝. 혼저옵서예"<< endl;
        break;

    default:
        cout << "5개중에 선택해 주세요" << endl;
        break;
    }
    cout << "당신의 고향은 어디입니까 ?" << endl;
    cout << "1. 서울    2. 양평   3. 광주   4. 대전   5 . 제주도" << endl;
    int num; cin >> num;

    if (num == 1)
    {
        cout << "안녕하세요.당신의 고향은[서울]이군요." << endl;
    }
    else if (num == 2)
    {
        cout << "안녕하세요.당신의 고향은[서울]이군요." << endl;
    }
    else if (num == 3)
    {
        cout << "안녕하세요.당신의 고향은[서울]이군요." << endl;
    }
    else if (num == 4)
    {
        cout << "안녕하세요.당신의 고향은[서울]이군요." << endl;
    }
    else if (num == 5)
    {
        cout << "안녕하수꽝. 혼저옵서예" << endl;
    }
    else
        cout << "5개중에 선택해 주세요" << endl;

break를 안넣었을 경우. 문장 하나씩 출력되는것이 아닌 아래와 같이 동시에 출력되는것을 확인할 수있다.

swich case문을 작성할때에는 반드시 break를 써 주도록한다.

 

 

 

문제3)

while, do while문을 활용하여 Hello World 문구를 5번 연속으로 띄우기

    int repeat_count = 0;
    while (repeat_count < 5)
    {
        cout << "Hello World" << endl;
        repeat_count++;

        if (repeat_count >= 5)
        {
            break;
        }
    }

 

    int repeat_count = 0;
    do
    {
        cout << "Hello World" << endl;
        repeat_count++;

        if (repeat_count >= 5)
        {
            break;
        }
    } while (repeat_count < 5);

 

문제4)

while문을 써서 정답을 맞출 때 까지 반복되는 프로그램으로 수정해보자. 정답값은 (1~10 랜덤으로 추출한다)

    // 처리
    int correct_num = rand() % 9 + 1;
    cout << "미리보는 정답 : " << correct_num << endl;

    int input_quiz_number = -1;
    while (input_quiz_number != correct_num)
    {
        // 입력
        cout << "숫자를 맞춰 보세요 : ";
        cin >> input_quiz_number;

        // 출력 : true or false
        (input_quiz_number == correct_num) ? cout << "true" << endl : cout << "false" << endl; 

        // break 조건을 추가
        if (input_quiz_number == correct_num)
        {
            break;
        }
    }

 

문제5)

for문을 사용하여 조건에 맞는 값을 범위내에서 출력한다.

   1) 역순출력(1~10),

   2) 100 범위내에 3의배수 출력

   3) 1000범위내에 2의2승 값출력

    cout << "[10~1 출력]" << endl;
    for (int i = 10; i > 0; i-- ) 
    {
        cout << i << endl;
    }

    cout << "[3의 배수 case1]" << endl;

    for (int i = 1; 3 * i < 100; i++) 
    {
        cout << 3 * i << endl;
    }

    cout << "[3의 배수 case2]" << endl;

    for (int i = 1; i< 100; i++)
    {
        if (i % 3 == 0)
            cout << i << endl;
    }

    cout << "[3의 배수 case3]" << endl;

    for (int i = 3; i < 100; i = i + 3)
    {
        cout << i << endl;
    }

    cout << "[1000미만 2의승수]" << endl;

    for (int i = 2; i < 1000; i = 2 * i)
    {
        cout << i << endl;
    }

 

문제6)

for문을 사용하여 구구단 출력

   1) 구구단을 2~9단까지 일자로 출력.

   2) 구구단을 234, 567, 89단을 나누어서 출력.

 

 

1) - 1 일렬로 출력 (for문 사용)

    for (int k = 2; k < 10; k++)
    {
        for (int i = 1; i < 10; i++)
        {
            cout << k << "x" << i << " = " << k * i << endl;
        }
        cout << "" << endl;
    }

 

1) - 2 일렬로 출력 (while문 사용)

    int k = 2;
    while (k != 10)
    {
        cout << "[" << k << "]" << "단" << endl;
        for (int i = 1; i < 10; i++)
        {
            cout << k << "x" << i << " = " << k * i << endl;
        }
        cout << "" << endl;
        k++;
    }

2) 나누어 출력 (노가다)

    for (int i = 1; i < 10; i++)
    {
        for (int j = 2; j < 5; j++)
        {
            cout << j << "x" << i << " = " << j * i;
            if (j*i >= 10)
                cout << "\t";
            else
                cout << "\t\t";
        }
        cout << "" << endl;
    }

    cout << "" << endl;
    for (int i = 1; i < 10; i++)
    {
        for (int j = 5; j < 8; j++)
        {
            cout << j << "x" << i << " = " << j * i;
            if (j * i >= 10)
                cout << "\t";
            else
                cout << "\t\t";
        }
        cout << "" << endl;
    }

    cout << "" << endl;
    for (int i = 1; i < 10; i++)
    {
        for (int j = 8; j < 10; j++)
        {
            cout << j << "x" << i << " = " << j * i;
            if (j * i >= 10)
                cout << "\t";
            else
                cout << "\t\t";
        }
        cout << "" << endl;
    }

 

3) 나누어 출력 (간결하게)

    int i; int j; int k;

    for (int i = 2; i < 10; i += 3)
    {
        for (int j = 1; j < 10; j++)
        {
            for (int k = i; k < i + 3; k++)
            {
                cout << k << " * " << j << " = " << k * j << "\t";
            }
            cout << "" << endl;
        }
        cout << "" << endl;
    }

 

문제7)

for문if문을 사용하여 1~7번 모양의 별찍기 (백준문제)

//1)
//    *
//    **
//    ***
//    ****
//    *****
//
//2)
//        *
//       **
//      ***
//     ****
//    *****
//
//3)
//    *****
//    ****
//    ***
//    **
//    *
//
//4)
//    *****
//     ****
//      ***
//       **
//        *
//5)
//        *
//       ***
//      *****
//     *******
//    *********
//
//6)
//    *********
//     *******
//      *****
//       ***
//        *
//7)
//
//        *
//       ***
//      *****
//     *******
//    *********
//   ***********
//    *********
//     *******
//      *****
//       ***
//        *
// 실습1.
for (int i = 1; i < 6; i++)
{
    for (int j = 0; j < i; j++)
    {
        cout << "*";
    }
    cout << endl;
}
cout << endl;

// 실습2.	
for (int i = 1; i < 6; i++)
{
    for (int j = 0; j < i; j++)
    {
        for (int k = 0; k < (5 - i); k++)
        {
            if (j > 0)
                break;
            cout << " ";
        }
        cout << "*";
    }
    cout << endl;
}
cout << endl;

// 실습3.	
for (int i = 1; i < 6; i++)
{
    for (int j = 0; j < 6 - i; j++)
    {
        cout << "*";
    }
    cout << endl;
}
cout << endl;

// 실습4.	
for (int i = 1; i < 6; i++)
{
    for (int j = 0; j < 6 - i; j++)
    {
        for (int k = 1; k < i; k++)
        {
            if (j > 0)
                break;
            cout << " ";
        }
        cout << "*";
    }
    cout << endl;
}
cout << endl;

// 실습5.
for (int i = 1; i < 6; i++)
{
    for (int j = 1; j < 2 * i; j++)
    {
        for (int k = 1; k < 6 - i; k++)
        {
            if (j > 1)
                break;
            cout << " ";
        }
        cout << "*";
    }
    cout << endl;
}
cout << endl;

// 실습6.
for (int i = 1; i < 6; i++)
{
    for (int j = 1; j < 2 * (6 - i); j++)
    {
        for (int k = 1; k < i; k++)
        {
            if (j > 1)
                break;
            cout << " ";
        }
        cout << "*";
    }
    cout << endl;
}
cout << endl;

// 실습7.
for (int i = 1; i < 10; i++)
{
    if (i <= 5)
    {
        for (int j = 1; j < 2 * i; j++)
        {
            for (int k = 1; k < 6 - i; k++)
            {
                if (j > 1)
                    break;
                cout << " ";
            }
            cout << "*";
        }
        cout << endl;
    }
    else
    {
        for (int j = 1; j < 2 * (10 - i); j++)
        {
            for (int k = 1; k < i - 4; k++)
            {
                if (j > 1)
                    break;
                cout << " ";
            }
            cout << "*";
        }
        cout << endl;
    }
}
cout << endl;

 

 

문제8)

for문 if문을 사용하여 그외 다양한 별찍기 (백준문제)

    int n; cout << "숫자를 입력하시오" << endl; cin >> n;
    for(int i = 1; i < 10; i++)
    {
        if (i <= n)
        {
            for (int j = 0; j < i; j++)
            {
                cout << "*";
            }
            for (int j = 0; j < (10 - 2*i); j++)
            {
                cout << " ";
            }
            for (int j = 0; j < i; j++)
            {
                cout << "*";
            }
            cout << endl;
        }

        else 
        {
            for (int j = 4; j >= i - 5; j--)
            {
                cout << "*";
            }

            for (int j = 0; j < (2 * i - 10); j++)
            {
                cout << " ";
            }

            for (int j = 4; j >= i - 5; j--)
            {
                cout << "*";
            }
            cout << endl;
        }
    }

    // 별준 9.
    int n1; cin >> n1;
    for(int i = 1; i < n1 * 2; i++)
    {
        if (i <= n1)
        {
            for (int j = 0; j < i ; j++)
            {
                cout << " ";
            }
            for (int j = 1; j < (12 - 2 * i); j++)
            {
                cout << "*";
            }
            cout << endl;
        }

        else
        {
            for (int j = 0; j < 10 - i ; j++)
            {
                cout << " ";
            }
            for (int j = 1; j < (2 * i - 8); j++)
            {
                cout << "*";
            }
            cout << endl;
        }
    }

 

 

 

반응형