본문 바로가기
C++

[C++ 프로그래밍] 3주차 C문법 정리2

by heeaeeeee 2023. 9. 21.

1. Console programming

//1번째 방법
#include <iostream>
int main()
{
    std::cout << "Hello World!\n";\
    std::cout << "Hello World1!\n"; \
    return 0;
}
//2번째 방법
#include <iostream>
using namespace std;
int main()
{
    cout << "Hello World!\n";\
    cout << "Hello World1!\n"; \
    return 0;
}
//3번째 방법
#include <iostream>
using std::cout;
int main()
{
    cout << "Hello World!\n";\
    cout << "Hello World1!\n"; \
    return 0;
}

2. 소스> C++ 소스로 변경

//c
#include <stdio.h>
int main(void)
{
    int num;
    printf("숫자 하나를 입력하세요=");
    scanf("%d",&num);
    printf("입력받은 수는 %d입니다.\n",num);
    return 0;
}

//c++
#include <iostream> // C++에서 사용하는 표준 입력과 출력 헤더 파일
using namespace std; // 표준 네임스페이스(std)를 사용하여 std:: 생략
int main() 
{ // main 함수 시작
    int num; // 정수형 변수 num을 선언
    cout << "숫자 하나를 입력하세요: "; // 화면에 메시지 출력
    cin >> num; // 키보드에서 사용자로부터 정수 입력을 받아 num에 저장
    cout << "입력받은 수는 " << num << "입니다." << endl; // 입력받은 수 출력
    return 0; // 프로그램 종료 및 성공 반환 코드
}

3. 우선순위와 결합성(우선순위가 같은 연산자의 결합 방향)

대부분의 연산자들은 결합성이 왼쪽에서 오른쪽으로 간다.

비트 연산자가 논리 연산자보다 우선순위가 높음

4. sizeof 연산자

5. sizeof 연산자를 사용하는 프로그래밍 언어들

1. C

2. C++

3. C#

4. Java

5. Python

6. Ruby

7. Rust

8. Swift

9. JavaScript

6. 관계 연산자

= : 대입

==: 같은냐 비교

!= : 다르냐 비교

7. 비트 시프트(bitwise shift) 연산자 : 2의n승의 처리 속도가 빠름

8. 입출력 스트림 객체 cout, cin

<<과 >>은 시프트 연산자이지만 cout과 cin를 만나면 입출력 스트림 객체로 변신

9. c언어 제어문 중에 제일 많이 사용하는 순서대로 정리

1. 조건문 (if-else)

2. 반복문 (for, while, do-while)

3. 스위치 문

4. goto 문

10. c, c++, c#, 자바 스크립트, 자바 언어의 제어문을 비교해서 표로 정리

언어 조건문(if-else) 반복문
(for, while, do-while)
스위치 문
(switch)
기타 제어문 및 주요 특징
C c if (condition) { /* 실행 코드 */ } else { /* else 블록 */ } for, while, do-while 등의 반복문 사용 가능 switch 문 사용 가능 goto 문을 제공하지만 자주 사용하지 않는 것이 좋음
C++ C와 동일한 구조를 사용 C와 동일한 구조를 사용 C와 동일한 구조를 사용 객체 지향 프로그래밍 및 클래스 기능을 제공
C# C와 C++와 유사한 구조를 사용 C와 C++와 유사한 구조를 사용 C와 C++와 유사한 구조를 사용 .NET 프레임워크를 기반으로 한 언어로, 객체 지향 및 이벤트 기반 프로그래밍을 지원
JavaScript javascript if (condition) { /* 실행 코드 */ } else { /* else 블록 */ } for, while, do-while 등의 반복문 사용 가능 switch 문 사용 가능 단일 스레드, 비동기 프로그래밍을 위한 콜백 및 Promise 사용 가능
자바 java if (condition) { /* 실행 코드 */ } else { /* else 블록 */ } for, while, do-while 등의 반복문 사용 가능 switch 문 사용 가능 객체 지향 및 자바 가상 머신 (JVM)을 기반으로 한 언어

11. if문 예제

//c
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include int main(void)
{
    int score;
    printf("당신의 점수를 입력하고 Enter를 누르세요=");
    scanf("%d", &score);
    if (score < 60) printf("60점 미만이므로 재수강해야 합니다.\n"); //if문 4가지 방법으로 만들어보기
    return 0;
}

//c++
#include <iostream>
using namespace std;
int main() {
    int score;
    cout << "당신의 점수를 입력하고 Enter를 누르세요: ";
    cin >> score;
    // 1번째 방법, 제일 많이 쓰는 방법
    if (score < 60) {
        cout << "60점 미만이므로 재수강해야 합니다." << endl;
    }
    // 2번째 방법: 삼항 연산자 (Conditional Operator)
    (score < 60) ? cout << "60점 미만이므로 재수강해야 합니다." << endl : cout << "합격하셨습니다." << endl;
    // 3번째 방법: switch 문
    switch (score < 60) {
    case true:
        cout << "60점 미만이므로 재수강해야 합니다." << endl;
        break;
    case false:
        cout << "합격하셨습니다." << endl;
        break;
    }
    // 4번째 방법: 조건 연산자 (Conditional Operator)
    cout << ((score < 60) ? "60점 미만이므로 재수강해야 합니다." : "합격하셨습니다.") << endl;
    return 0;
}

12. if문 다음에 조건문 시작과 끝에 괄호를 반드시 해야하는 프로그래밍 언어들

1. C++

2. C#

3. Java

4. C

13. if~else문 예제 : 60 미만 판단, 양자택일

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
	int score;
	printf("당신의 점수를 입력하고 Enter를 누르세요=");
	scanf("%d", &score);
	if (score < 60) {
		printf("60점 미만이므로 재수강해야 합니다.\n");
	}
	else {
		printf("60점 이상이므로 Pass입니다.\n");
	}
	return 0;
}

14. 다중 if~else문 : 숫자 입력받아 판단

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
	int value; 
    printf("1~3까지의 수를 입력하세요:");
	scanf("%d", &value);
	if (value == 1) printf("1을 입력하셨습니다.\n");
	else if (value == 2) printf("2를 입력하셨습니다.\n");
	else if (value == 3) printf("3을 입력하셨습니다.\n");
	else printf("잘못 입력하셨습니다.\n");
	return 0;
}

//1단계
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
	int value; 
	printf("1~3까지의 수를 입력하세요:");
	scanf("%d", &value);
	switch (value) {
		if (value == 1) printf("1을 입력하셨습니다.\n");
		else if (value == 2) printf("2를 입력하셨습니다.\n");
		else if (value == 3) printf("3을 입력하셨습니다.\n");
		else printf("잘못 입력하셨습니다.\n");
	}
	return 0;
}

//2단계
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
	int value; 
	printf("1~3까지의 수를 입력하세요:");
	scanf("%d", &value);
	switch (value) {
	case 1:
	case 2:
	case 3:
	default:
		if (value == 1) printf("1을 입력하셨습니다.\n");
		else if (value == 2) printf("2를 입력하셨습니다.\n");
		else if (value == 3) printf("3을 입력하셨습니다.\n");
		else printf("잘못 입력하셨습니다.\n");
	}
	return 0;
}

//3단계
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
	int value; 
	printf("1~3까지의 수를 입력하세요:");
	scanf("%d", &value);
	switch (value) {
	case 1:
		printf("1을 입력하셨습니다.\n");
	case 2:
		printf("2를 입력하셨습니다.\n");
	case 3:
		printf("3을 입력하셨습니다.\n");
	default:
		else printf("다시 입력하세요.\n");
	}
	return 0;
}

//4단계
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
	int value;
	printf("1~3까지의 수를 입력하세요:");
	scanf("%d", &value);
	switch (value) {
	case 1:
		printf("1을 입력하셨습니다.\n");
		break;
	case 2:
		printf("2를 입력하셨습니다. \n");
		break;
	case 3:
		printf("3을 입력하셨습니다.\n");
		break;
	default:
		printf("다시 입력하세요.\n");
		break;
	}
	return 0;
}

15. switch∼case문 계산기(반복)

//c
#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include 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>
using namespace std;
int main() {
    char op;  // 연산자 저장 변수
    double num1, num2;  // 피연산자 저장 변수
    cout << "사칙연산이 가능합니다." << endl;
    cout << "수식을 입력하세요(예: 10+20): ";
    cin >> num1 >> op >> num2;  // 10+20
    switch (op) {
    case '+':
        cout << "덧셈 결과는 " << num1 + num2 << "입니다." << endl;
        break;
    case '-':
        cout << "뺄셈 결과는 " << num1 - num2 << "입니다." << endl;
        break;
    case '*':
        cout << "곱셈 결과는 " << num1 * num2 << "입니다." << endl;
        break;
    case '/':
        if (num2 != 0) {
            cout << "나눗셈 결과는 " << num1 / num2 << "입니다." << endl;
        }
        else {
            cout << "0으로 나눌 수 없습니다." << endl;
        }
        break;
    default:
        cout << "올바른 연산자를 선택하세요." << endl;
        break;
    }
    return 0;
}

16. c, c++, c#, 자바 스크립트, 자바 언어의 for문 사용 예시

//c
#include <stdio.h>
int main() {
    for (int i = 1; i <= 5; i++) {
        printf("C 언어에서의 for 루프: %d\n", i);
    }
    return 0;
}

//c++
#include <iostream>
int main() {
    for (int i = 1; i <= 5; i++) {
        std::cout << "C++ 언어에서의 for 루프: " << i << std::endl;
    }
    return 0;
}

//c#
using System;
class Program {
    static void Main() {
        for (int i = 1; i <= 5; i++) {
            Console.WriteLine("C# 언어에서의 for 루프: " + i);
        }
    }
}

//JavaScrip
for (let i = 1; i <= 5; i++) {
    console.log("JavaScript에서의 for 루프: " + i);
}

//Java
public class Main {
    public static void main(String[] args) {
        for (int i = 1; i <= 5; i++) {
            System.out.println("Java 언어에서의 for 루프: " + i);
        }
    }
}

17. 자신의 이름 10번 출력

#include <iostream>
int main()
{
	for (int i = 0; i < 10; i++) {
		std::cout << "기미애 \n";
	}
	return 0;
}

18. for 문으로 C++ 자릿수 정렬 스타일로 자신의 이름 10번 찍기

//1번째 방법
#include <iostream>
#include <iomanip> //setw()
int main()
{
	for (int i = 1; i <= 10; i++) {
		std::cout << std::setw(2) << i << " : Hello\n";
	}
}

//2번째 방법
#include <iostream>
int main()
{
	for (int i = 1; i <= 10; i++) {
		std::cout.width(2); //다음에 출력되는 하나(i)를 두칸에 출력
		std::cout << i << " : Hello\n";
	}
}

19. 메뉴를 가지고 있는 프로그램의 기본 틀를 C++ 소스로 수정

//c
#define _CRT_SECURE_NO_WARNINGS
#include int main(void)
{
    int menu;
    do {
        printf("\n메뉴 \n");
        printf("1 :추가 \n");
        printf("2 :삭제 \n");
        printf("3 :저장 \n");
        printf("원하는 작업을 선택하세요 ->");
        scanf("%d", &menu);
    } while (!(menu >= 1 && menu <= 3));
    printf("%d를 선택했습니다.\n", menu);
    return0;
}

//c++
#include <iostream>
using namespace std;
int main() {
    int menu;  // 사용자의 메뉴 선택을 저장할 변수를 선언합니다.
    do {
        // 메뉴를 표시합니다.
        cout << "\n메뉴" << endl;
        cout << "1: 추가" << endl;
        cout << "2: 삭제" << endl;
        cout << "3: 저장" << endl;
        cout << "원하는 작업을 선택하세요 -> ";
        // 사용자로부터 메뉴 선택을 입력 받습니다.
        cin >> menu;
    } while (!(menu >= 1 && menu <= 3));  // 사용자가 1, 2, 3 중 하나를 선택할 때까지 반복합니다.
    // 선택한 메뉴를 출력합니다.
    cout << menu << "를 선택했습니다." << endl;
    return 0;  // 프로그램을 정상적으로 종료합니다.
}

20. 무한루프

21. 분기문 : break 문

22. 분기문 : continue문

23. C언어 문법 정리(제어문)

24. c++ 제어문을 잘이해할 수 있는 숫자 추측 게임 소스

#include <iostream>
#include <cstdlib>  // 난수 생성을 위한 헤더
#include <ctime>    // 시간을 기반으로 난수 시드 생성을 위한 헤더
using namespace std;
int main() {
    // 난수 발생을 위한 시드 초기화
    srand(static_cast<unsigned>(time(nullptr)));
    // 1에서 100 사이의 난수 생성
    int secretNumber = rand() % 100 + 1;
    int guess;
    int attempts = 0;
    cout << "1부터 100 사이의 숫자를 맞춰보세요!" << endl;
    do {
        cout << "추측한 숫자를 입력하세요: ";
        cin >> guess;
        // 입력된 숫자와 비교
        if (guess < secretNumber) {
            cout << "더 큰 숫자를 입력하세요." << endl;
        }
        else if (guess > secretNumber) {
            cout << "더 작은 숫자를 입력하세요." << endl;
        }
        else {
            cout << "축하합니다! 정답을 맞췄습니다." << endl;
            break;
        }
        attempts++;
    } while (true);
    cout << "시도 횟수: " << attempts << "회" << endl;
    return 0;
}

25. 리펙토링

가독성, 유지 보수성, 성능 등을 개선하는 과정을 의미합니다. 리펙토링은 기존의 코드를 개선하거나 재구성하는 작업으로, 코드를 더 이해하기 쉽게 만들고 버그를 수정하며, 소프트웨어의 전반적인 품질을 향상시킵니다.

 

 

C++ 강의 자료 참고했습니다.