오늘의 목표

  • C++ 문법 챕터 1-1 프로그래밍 기초(1) 강의 수강
  • C++ 문법 챕터 1-2 프로그래밍 기초(2) 강의 수강
  • C언어 배열, 함수, 포인터 복습
  • 알고리즘 1일차 수업 복습

 

1. C++ 문법 챕터 1-1 프로그래밍 기초(1) 

visual studio 인코딩 문제 해결

해결완!

 

대입과 비교

// 대입 연산자(=)와 비교 연산자(==) 차이 예제
#include <iostream>

using namespace std;

int main() {
    int a = 5;   // 변수 a에 5를 대입
    int b = 5;   // 변수 b에 5를 대입

    // 대입 연산 (값을 변경)
    a = 10; // a의 값을 10으로 변경

    // 비교 연산 (참/거짓 결과 반환)
    bool isEqual = (a == b); // a와 b가 같은지 비교

    // 출력
    cout << "a = " << a << ", b = " << b << endl;
    cout << "a == b: " << isEqual << endl; // 비교 결과 출력

    return 0;
}

/*
출력 예시:
a = 10, b = 5
a == b: 0
*/

<예상 출력값>

a = 10, b = 5

a == b: 0

 

<실제 출력값>

 

다른 점

없음!

 

 

전위 증가 연산과 후위 증가 연산

// 전위 증가 연산 (++a) vs 후위 증가 연산 (a++) 기본 예제
#include <iostream>

using namespace std;

int main() {
    int a = 5;
    int b = a++;  // 후위 증가: b에 먼저 a를 대입한 후 a 증가
    int c = ++a;  // 전위 증가: a를 먼저 증가시킨 후 c에 대입

    cout << "후위 증가 (b = a++):" << endl;
    cout << "b = " << b << ", a = " << a << endl; // b = 5, a = 7

    cout << "전위 증가 (c = ++a):" << endl;
    cout << "c = " << c << ", a = " << a << endl; // c = 7, a = 7

    return 0;
}

/*
출력 예시:
후위 증가 (b = a++):
b = 5, a = 6
전위 증가 (c = ++a):
c = 7, a = 7
*/

 

<예상 출력값>


후위 증가 (b = a++):
b = 5, a = 5
전위 증가 (c = ++a):
c = 7, a = 7

<실제 출력값>

 

일반 변수와 unsigned가 붙은 변수의 차이

// 일반 변수(signed int)와 unsigned int의 차이 예제
#include <iostream>

using namespace std;

int main() {
    int signedVar = -10;      // 일반 int (signed), 음수 가능
    unsigned int unsignedVar = 10; // unsigned int, 음수 불가능

    cout << "signed int: " << signedVar << endl;
    cout << "unsigned int: " << unsignedVar << endl;

    return 0;
}

/*
출력 예시:
signed int: -10
unsigned int: 10
*/

 

 

계산기 구현

#include <iostream>

using namespace std;

int main()
{
    // 1. 입력 받은 숫자를 저장 할 2개의 변수를 선언
    int firstNum = 0;
    int secondNum = 0;

    cout << "첫 번째 수 입력 : ";
    cin >> firstNum;

    cout << "두 번째 수 입력 : ";
    cin >> secondNum;

    //더한 결과값 출력
    cout << "더한 결과는 : " << firstNum + secondNum << endl;

    return 0;
}

 

 

2. C++ 문법 챕터 1-2. 프로그래밍 기초 (2)

배열의 선언

#include <iostream>
using namespace std;

// 배열 선언과 초기화 예제
int main() {
    // 선언과 동시에 초기화
    int arr1[3] = { 1, 2, 3 };

    // 선언 후 개별 원소 초기화
    int arr2[3];
    arr2[0] = 10;
    arr2[1] = 20;
    arr2[2] = 30;

    // 배열 출력
    cout << "arr1: " << arr1[0] << ", " << arr1[1] << ", " << arr1[2] << endl;
    cout << "arr2: " << arr2[0] << ", " << arr2[1] << ", " << arr2[2] << endl;

    return 0;
}

/*
출력 예시:
arr1: 1, 2, 3
arr2: 10, 20, 30
*/

 

배열의 복사 및 대입

#include <iostream>
using namespace std;

// 배열의 복사 및 대입 불가능한 예제
int main() {
    int arr1[3] = {1, 2, 3};
    int arr2[3];

    // 개별 원소를 복사하는 것은 가능
    for (int i = 0; i < 3; i++) {
        arr2[i] = arr1[i];
    }

    // 배열 통째로 대입 (불가능, 주석 처리)
    // arr2 = arr1;  // 컴파일 오류 발생

    // 복사된 배열 출력
    cout << "arr2: " << arr2[0] << ", " << arr2[1] << ", " << arr2[2] << endl;

    return 0;
}

/*
출력 예시:
arr2: 1, 2, 3
*/

 

 

배열의 임의 접근

#include <iostream>
using namespace std;

// 배열을 선언하고 [] 연산자로 접근하는 예제
int main() {
    int arr[4] = {10, 20, 30, 40};

    // 배열 원소에 임의 접근하여 출력
    cout << "첫 번째 원소: " << arr[0] << endl;
    cout << "두 번째 원소: " << arr[1] << endl;
    cout << "세 번째 원소: " << arr[2] << endl;
    cout << "네 번째 원소: " << arr[3] << endl;

    // 범위를 벗어난 접근 (에러 발생 가능)
    // cout << arr[4] << endl;  // 정의되지 않은 동작 (UB, 오류 가능)

    return 0;
}

/*
출력 예시:
첫 번째 원소: 10
두 번째 원소: 20
세 번째 원소: 30
네 번째 원소: 40
*/

 

 

성적 관리 프로그램

<구상>

학생 5명의 정보를 받아 저장하는 int 배열 student를 사용해서 cin으로 입력받고 총점과 평균을 계산.

#include <iostream>
#include <string>

using namespace std;

int main() {

int student[5];
int tot = 0;
double avg = 0;

for (int i = 0; i < 5; ++i) {
cout << "점수를 입력해주세요: ";
cin >> student[i];
tot += student[i];


}

avg = tot / 5;

cout << "총점: " << tot << endl;
cout << "평균: " << avg << endl;

return 0;
}

직접 구현해 봤다.

 

강의에서 제공하는 예제 코드

#include <iostream>

using namespace std;

int main()
{
    double score[5];

    cout << "1 번째 학생 점수를 입력해주세요 : ";
    cin >> score[0];

    cout << "2 번째 학생 점수를 입력해주세요 : ";
    cin >> score[1];

    cout << "3 번째 학생 점수를 입력해주세요 : ";
    cin >> score[2];

    cout << "4 번째 학생 점수를 입력해주세요 : ";
    cin >> score[3];

    cout << "5 번째 학생 점수를 입력해주세요 : ";
    cin >> score[4];

    double tot = score[0] + score[1] + score[2] + score[3] + score[4];
    double avg = tot / 5;

    cout << "총점 : " << tot << endl;
    cout << "평균 : " << avg << endl;

    return 0;
}

 

 

기본적인 함수의 정의와 호출

// 목적: 두 개의 정수를 더하는 함수 정의 및 호출 예제
#include <iostream>
using namespace std;

// 두 정수를 더하는 함수
int add(int a, int b) {
    return a + b; // 결과 반환
}

int main() {
    int result = add(3, 7);
    cout << "3 + 7 = " << result << endl; // 출력: 3 + 7 = 10
    return 0;
}

 

 

반환값이 없는 함수

// 목적: 반환값 없이 특정 메시지를 출력하는 함수
#include <iostream>
using namespace std;

// 메시지를 출력하는 함수 (반환 없음)
void printMessage() {
    cout << "Hello, Function!" << endl;
}

int main() {
    printMessage(); // 함수 호출
    return 0;
}

// 출력:
// Hello, Function!

 

잘못된 함수 정의

// 목적: 반환값이 없는데 반환하는 오류 발생 예제
#include <iostream>
using namespace std;

// 잘못된 함수 정의
void incorrectFunction() {
    return 42; // 오류 발생: void 함수는 값을 반환할 수 없음
}

int main() {
    incorrectFunction();
    return 0;
}

/*
컴파일 오류:
error: return-statement with a value, in function returning 'void'
*/

 

<오류>

 

함수 호출 시 값의 변화 확인(일반 변수)

#include <iostream>
using namespace std;

// 함수: 값 전달 (Call by Value)
void modifyValue(int x) {
    x = 100;  // 함수 내부에서 값 변경
}

int main() {
    int num = 50;
    modifyValue(num); // 값 전달 (복사됨)
    
    cout << "값 전달 후 num: " << num << endl;
    // 출력: 값 전달 후 num: 50
    return 0;
}

 

 

함수 호출시 값의 변화 확인 (주소 전달-변수)

#include <iostream>
using namespace std;

// 함수: 포인터를 사용한 값 변경
void modifyValue(int* ptr) {
    *ptr = 100;  // 포인터가 가리키는 변수의 값을 변경
}

int main() {
    int num = 50;
    modifyValue(&num); // num의 주소 전달

    cout << "포인터 전달 후 num: " << num << endl;
    // 출력: 포인터 전달 후 num: 100
    return 0;
}

 

 

함수 호출시 값의 변화 확인 (주소 전달-변수)

#include <iostream>
using namespace std;

// 함수: 포인터를 사용한 값 변경
void modeifyArr(char* ptr) {
    ptr[0] = 'X';  // 포인터가 가리키는 변수의 값을 변경
}

int main() {
    char str[4] = {'A', 'B', 'C', 'D'};
    modeifyArr(str); // num의 주소 전달

    cout << "포인터 전달 후 str[0] = " << str[0] << endl;
    // 출력: 포인터 전달 후 str[0] = X
    return 0;
}

 

함수 호출 시 값의 변화 확인 (참조자 사용)

#include <iostream>
using namespace std;

// 함수: 참조를 사용한 값 변경
void modifyValueByReference(int& x) {
    x = 200;  // 참조를 사용하여 원본 값 변경
}

int main() {
    int num = 50;
    modifyValueByReference(num); // 참조 전달

    cout << "참조 전달 후 num: " << num << endl;
    // 출력: 참조 전달 후 num: 200
    return 0;
}

 

<함수의 실제 사용 예시>

 

원의 넓이 계산

#include <iostream>
using namespace std;

/**
 * @brief 반지름을 입력받아 원의 넓이를 계산하는 함수
 * @param radius 원의 반지름
 * @return double 원의 넓이
 */
double calculateCircleArea(double radius) {
    return 3.14 * radius * radius;
}

int main() {
    double radius = 5.0;
    cout << "원의 넓이: " << calculateCircleArea(radius) << endl;
    return 0;
}

 

main()의 radius와 calculateCircleArea(double radius)의 radius는 이름만 같을 뿐 저장 위치가 다른 별개의 변수들이다. 함수의 인자인 radius는 값을 복사하기 위해 새로 만든 매개변수이고, 함수가 종료되면 사라진다. 

 

 

<평균 계산>

#include <iostream>
using namespace std;

/**
 * @brief 4개의 점수를 입력받아 평균 점수를 계산하는 함수
 * @param score1 첫 번째 점수
 * @param score2 두 번째 점수
 * @param score3 세 번째 점수
 * @param score4 네 번째 점수
 * @return int 평균 점수 (소수점 제외)
 */
int calculateAverage(int score1, int score2, int score3, int score4) {
    int sum = score1 + score2 + score3 + score4;
    return sum / 4; // 정수 나눗셈으로 소수점 없이 계산
}

int main() {
    int score1 = 80, score2 = 90, score3 = 85, score4 = 70;
    cout << "평균 점수: " << calculateAverage(score1, score2, score3, score4) << endl;
    return 0;
}

 

 

이름 형식 변환

#include <iostream>
#include <string>
using namespace std;

/**
 * @brief 이름과 성을 입력받아 "성 이름" 형식으로 변환하는 함수
 * @param firstName 이름
 * @param lastName 성
 * @return string 변환된 이름
 */
string formatName(string firstName, string lastName) {
    return lastName + " " + firstName; // 문자열 결합
}

int main() {
    string firstName = "철수";
    string lastName = "김";
    cout << "이름 형식 변환: " << formatName(firstName, lastName) << endl;
    return 0;
}

 + 로 string 결합시키기

 

점수 출력

#include <iostream>
using namespace std;

/**
 * @brief 네 개의 점수를 받아 합계를 계산하고 출력하는 함수
 * @param score1 첫 번째 점수
 * @param score2 두 번째 점수
 * @param score3 세 번째 점수
 * @param score4 네 번째 점수
 */
void printTotalScore(int score1, int score2, int score3, int score4) {
    int total = score1 + score2 + score3 + score4; // 점수 합계 계산
    cout << "점수 합계: " << total << endl;
}

int main() {
    printTotalScore(80, 90, 85, 70); // 합계 출력
    return 0;
}

 

 

C/C++ 라이브 세션 강의 Day4 

챕터 5-1: 1차원 배열

https://annadevelop.tistory.com/30

 

챕터 5-1 : 1차원 배열

수업 목표배열이 무엇인지에 대해 배워본다.배열의 응용에 대해서도 알아본다.배열의 필요성지금까지 배운 내용으로만 대선 개표 프로그램을 만든다고 가정해봅시다.어떤 사람이 어떤 후보를

annadevelop.tistory.com

챕터 5-2: 2차원 배열

https://annadevelop.tistory.com/31

 

 

오늘의 배운점: 배열을 초기화 할 때 array[10] = {0, }를 함으로서 안의 모든 인자를 0으로 초기화할 수 있다.

오늘의 아쉬운 점: 포인터를 중점으로 공부하고 싶었는데 거기까지 다다르지 못했다. 좀 더 정진할 것!

'Unreal5 공부 > TIL' 카테고리의 다른 글

2026/03/10 TIL  (0) 2026.03.10
2026/03/09 TIL  (0) 2026.03.09
2026/03/05 TIL  (0) 2026.03.05
2026/03/04 TIL  (1) 2026.03.04
2026/03/03 TIL  (0) 2026.03.03

+ Recent posts