C++

4. C언어 문법

리버윤 2024. 9. 24. 12:40
728x90

- 조건문


  • int age = 18;
    
    if (age >= 18) {
        printf("성인입니다.\n");
    } else if (age >= 13) {
        printf("청소년입니다.\n");
    } else {
        printf("어린이입니다.\n");
    }
     
    C 언어에서는 조건식을 괄호로 감싸고, 실행할 코드 블록을 중괄호로 묶습니다


  • C++
    int score = 85;
    
    if (score >= 90) {
        cout << "A 등급" << endl;
    } else if (score >= 80) {
        cout << "B 등급" << endl;
    } else {
        cout << "C 등급" << endl;
    }
     
    C++에서도 조건식을 괄호로 감싸고 코드 블록을 중괄호로 묶습니다.



  • JavaScript
    let temperature = 25;
    
    if (temperature > 30) {
        console.log("더운 날씨입니다.");
    } else if (temperature > 20) {
        console.log("쾌적한 날씨입니다.");
    } else {
        console.log("쌀쌀한 날씨입니다.");
    }

    JavaScript에서도 조건식을 괄호로 감싸고 코드 블록을 중괄호로 묶습니다.



  • Python
    time = 14
    
    if time < 12:
        print("오전입니다.")
    elif time < 18:
        print("오후입니다.")
    else:
        print("저녁입니다.")

    Python에서는 괄호 대신 콜론(:)을 사용하고, 들여쓰기로 코드 블록을 구분합니다.



  • C#
    int number = 7;
    
    if (number % 2 == 0)
    {
        Console.WriteLine("짝수입니다.");
    }
    else
    {
        Console.WriteLine("홀수입니다.");
    }
     
    C#에서도 조건식을 괄호로 감싸고 코드 블록을 중괄호로 묶습니다.



  • Java
    int grade = 3;
    
    if (grade == 1) {
        System.out.println("신입생입니다.");
    } else if (grade == 4) {
        System.out.println("졸업반입니다.");
    } else {
        System.out.println("재학생입니다.");
    }

    Java에서도 조건식을 괄호로 감싸고 코드 블록을 중괄호로 묶습니다.

 

1)  if 조건문

if(조건식)
문장 1;
다음 문장;

조건식이 참이면 문장 1 실행, 거짓이면 문장 1 실행하지 않고 건너 뜀.

 

 

 

2) if~else 조건문

if(조건식)
	문장1;
else
	문장2;
다음문장;

 참일 경우 문장1 실행 후 다음문장, 거짓일 경우 문장2 실행 후 다음문장

 

3) 다중 if~else 조건문

if(조건식1)
	문장1;
else if(조건식2)
	문장2;
    .
    .
    else
		문장 n

 

 

4) switch~case 조건문

switch(조건식){ //조건식은 결과가 정수형(int, char, enum)인 수식만 가능
	case 상수1 : //조건식의 결과가 상수1이면, if(조건식==상수1)
		문장1;
		break; //switch~case문 루프를 벗어남
	case 상수2 : //조건식의 결과가 상수2이면, else if(조건식==상수2)
		문장2;
		break;
		⋮
	case 상수n:
		문장n;
		break;
	default : //만족하는 경우가 없을 때, 다중 if~else의 마지막 else에 해당
		문장;
		break; //없어도 되지만 통일감을 위해 쓰는 것이 좋음
}//switch~case문 루프 끝

 switch~case문은 다중 if~else문처럼 경우의 수가 많은 경우 자주 사용한다.

※ 결과가 정수형(int, char, enum)인 경우만 선택할 수 있다.

 

- switch case 계산기

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
char op; // 연산자 저장 변수
int num1, num2; // 피연산자 저장 변수

printf("덧셈과 뺄셈만 가능합니다\n");
printf("계산하려는 수식(예:10+20)을 입력하세요:");
scanf("%d%c%d", &num1, &op, &num2); //10+20

switch (op) {
case '+':
	printf("덧셈 결과는 %d입니다.\n", num1 + num2);
	break;
case '-':
	printf("뺄셈 결과는 %d입니다.\n", num1 - num2);
	break;
default:
	printf("다시 입력하세요\n");
	break;
}
return 0;
}

 

 

  ▷ C++ 스타일로 변경 / 곱셈, 나눗셈 추가

#include <iostream>

int main() {
    char op; // 연산자 저장 변수
    int num1, num2; // 피연산자 저장 변수

    std::cout << "덧셈과 뺄셈만 가능합니다\n";
    std::cout << "계산하려는 수식(예: 10 + 20)을 입력하세요: ";
    std::cin >> num1 >> op >> num2; // 10 + 20

    switch (op) {
    case '+':
        std::cout << "덧셈 결과는 " << (num1 + num2) << "입니다.\n";
        break;
    case '-':
        std::cout << "뺄셈 결과는 " << (num1 - num2) << "입니다.\n";
        break;
    case '*':
        std::cout << "곱셈 결과는 " << (num1 * num2) << "입니다. \n";
        break;
    case '/':
        std::cout << "나눗셈 결과는 " << ((double)num1 / num2) << "입니다. \n"; //캐스트 연산자
        break;
    default:
        std::cout << "다시 입력하세요\n";
        break;
    }

    return 0;
}

 

 

- 반복문

1) for 반복문

for(제어 변수 초기식; 조건식; 증감식)
{
	반복 실행될문장;
}

 

#include <iostream>

int main()
{
    int i;
    for (i=0; i<=99; i++) {
        std::cout << i+1 << " : " << "Kang\n";
    }
    return 0;
}

 

 ( 일반적으로는 1부터가 아닌 0부터 시작함. 0부터 99까지 100번 출력하기 )

 

* 출력 폭 지정

#방법1

#include <iostream>
#include <iomanip>  //setw() : 다음에 출력되는 것(i)은 괄호 한 숫자만큼의 크기로 출력하기

int main()
{
    int i;
    for (i=0; i<=99; i++) {
        std::cout << std::setw(3) << i+1 << " : " << "Kang\n"; //i를 3칸에 출력하기
    }
    return 0;
}

 

#방법2

#include <iostream>
#include <iomanip>  //setw() : 다음에 출력되는 것(i)은 괄호 한 숫자만큼의 크기로 출력하기

int main()
{
    int i;
    for (i=0; i<=99; i++) {
        //std::cout << std::setw(3) << i+1 << " : " << "Kang\n"; //i를 3칸에 출력하기 단점은 #include <iomanip>를 꼭 써야한다는거
        std::cout.width(3);
        std::cout << i + 1 << " : Kang\n";  // #include <iomanip> 안써도 됨
    }
    return 0;
}

 

 

- switch case 계산기 (반복)

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
	char op;
	int num1, num2;
	for (; ; ) //추가
	{ //추가
		printf("\n덧셈과 뺄셈만 가능합니다\n");
		printf("끝내려면 0+0을 입력하세요\n"); //추가
		printf("계산하려는 수식(예:10+20)을 입력하세요:");
		scanf("%d%c%d", &num1, &op, &num2); //10+20
		if (num1 == 0 && num2 == 0) break; //추가
		switch (op) {
		case '+':
			printf("덧셈 결과는 %d입니다.\n", num1 + num2);
			break;
		case '-':
			printf("뺄셈 결과는 %d입니다.\n", num1 - num2);
			break;
		default:
			printf("다시 입력하세요\n");
			break;
		}// switch~case문 끝
	} //추가, for문 끝
	return 0;
}

 

  ▷ C++ 스타일로 변경 / 곱셈, 나눗셈 추가

#include <iostream>
#include <iomanip> // std::setprecision 사용을 위해 포함

int main() {
    char op;
    int num1, num2;

    for (;;) { // 무한 루프
        std::cout << "\n덧셈, 뺄셈, 곱셈, 나눗셈이 가능합니다\n";
        std::cout << "끝내려면 0+0을 입력하세요\n"; 
        std::cout << "계산하려는 수식(예: 10 + 20)을 입력하세요: ";
        std::cin >> num1 >> op >> num2; // 10 + 20

        if (num1 == 0 && num2 == 0) break; // 종료 조건

        switch (op) {
            case '+':
                std::cout << "덧셈 결과는 " << (num1 + num2) << "입니다.\n";
                break;
            case '-':
                std::cout << "뺄셈 결과는 " << (num1 - num2) << "입니다.\n";
                break;
            case '*':
                std::cout << "곱셈 결과는 " << (num1 * num2) << "입니다.\n";
                break;
            case '/':
                if (num2 != 0) {
                    std::cout << std::fixed << std::setprecision(2); // 소수점 2자리로 설정
                    std::cout << "나눗셈 결과는 " << static_cast<double>(num1) / num2 << "입니다.\n";
                } else {
                    std::cout << "0으로 나눌 수 없습니다.\n";
                }
                break;
            default:
                std::cout << "다시 입력하세요\n";
                break;
        } // switch ~ case 문 끝
    } // for 문 끝

    return 0;
}

 

 

2) while 반복문

while(조건식){
	반복 실행될 문장;
}

 조건식이 참이면 루프 안에 반복실행될 문장을 실행하고 거짓이면 루프를 벗어남

 

 

3) do~while 반복문

do{
	반복 실행될 문장;
}while(조건식);

미리 반복 횟수를 알 수 없고, 최소한 한번은 반복문장을 실행 할 경우에 많이 사용.

 

 

- for문과 while문을 어떨 때 써야할까?

1. 반복 횟수가 명확할 때: for문

  • 정해진 횟수 반복: 반복할 횟수가 명확할 때 for문을 사용합니다. 예를 들어, 배열의 모든 요소를 처리하거나 특정 수만큼 반복할 때 적합합니다.
  • 초기화, 조건, 증감이 한 곳에 모여 있음: for문은 초기화, 조건 검사, 증감식이 한 줄에 작성되므로 코드가 깔끔하고 가독성이 좋습니다.

2. 반복 횟수가 불확실할 때: while문

  • 조건에 따라 반복: 반복할 횟수가 불확실하거나 조건에 따라 계속 반복해야 할 때 while문을 사용합니다. 예를 들어, 사용자 입력을 받을 때까지 반복할 때 유용합니다.
  • 초기화와 증감이 자유로운 경우: 초기화와 증감이 반복문 외부에서 이루어질 수 있어 더 유연하게 사용할 수 있습니다.

 

▶ 무한루프

 

 

- 분기문

1) break문

 : 반복문(for, while, do~while)이나 switch~case문에서 안쪽루프를 하나 벗어나는데 사용

 

 

 

728x90