c++ 프로그래밍 4주차 수업 내용 및 수업 후 과제

2024. 9. 24. 11:21C++프로그래밍/수업 내용 및 수업 후 과제

반응형

 다양한 프로그래밍 언어에서 많이 사용하는 순서대로 예시와 같이 설명

언어 제어문 종류 설명 예시
C if 조건에 따라 실행할 코드 블록 선택 if (x > 0) { printf("Positive"); }
C for 지정된 횟수만큼 반복 실행 for (int i = 0; i < 10; i++) { printf("%d", i); }
C while 조건이 참인 동안 반복 실행 while (x < 10) { x++; }
C switch 여러 조건 중 하나에 따른 실행 선택 switch (x) { case 1: printf("One"); break; }
언어 제어문 종류 설명 예시
Java if 조건에 따라 실행할 코드 블록 선택 if (x > 0) { System.out.println("Positive"); }
Java for 지정된 횟수만큼 반복 실행 for (int i = 0; i < 10; i++) { System.out.println(i); }
Java while 조건이 참인 동안 반복 실행 while (x < 10) { x++; }
Java switch 여러 조건 중 하나에 따른 실행 선택 switch (x) { case 1: System.out.println("One"); break; }
언어 제어문 종류 설명 예시
JavaScript if 조건에 따라 실행할 코드 블록 선택 if (x > 0) { console.log("Positive"); }
JavaScript for 지정된 횟수만큼 반복 실행 for (let i = 0; i < 10; i++) { console.log(i); }
JavaScript while 조건이 참인 동안 반복 실행 while (x < 10) { x++; }
JavaScript switch 여러 조건 중 하나에 따른 실행 선택 switch (x) { case 1: console.log("One"); break; }
언어 제어문 종류 설명 예시
Python if 조건에 따라 실행할 코드 블록 선택 if x > 0: print("Positive")
Python for 지정된 횟수만큼 반복 실행 for i in range(10): print(i)
Python while 조건이 참인 동안 반복 실행 while x < 10: x += 1
Python switch (대체) Python에선 switch문이 없음, dict로 대체 가능 switcher = {1: "One"}; print(switcher.get(x, "Unknown"))
언어 제어문 종류 설명 예시
C++ if 조건에 따라 실행할 코드 블록 선택 if (x > 0) { std::cout << "Positive"; }
C++ for 지정된 횟수만큼 반복 실행 for (int i = 0; i < 10; i++) { std::cout << i; }
C++ while 조건이 참인 동안 반복 실행 while (x < 10) { x++; }
C++ switch 여러 조건 중 하나에 따른 실행 선택 switch (x) { case 1: std::cout << "One"; break; }
언어 제어문 종류 설명 예시
C# if 조건에 따라 실행할 코드 블록 선택 if (x > 0) { Console.WriteLine("Positive"); }
C# for 지정된 횟수만큼 반복 실행 for (int i = 0; i < 10; i++) { Console.WriteLine(i); }
C# while 조건이 참인 동안 반복 실행 while (x < 10) { x++; }
C# switch 여러 조건 중 하나에 따른 실행 선택 switch (x) { case 1: Console.WriteLine("One"); break; }

if문은 3번쨰 방법을 제일 선호한다

 

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

#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~3까지의 수를 입력하세요:2
2를 입력하셨습니다.
 

다중 if~else문 6 : 점수에 따른 등급 출력

#define _CRT_SECURE_NO_WARNINGS //Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int score;
printf("당신의 점수를 입력하고 Enter를 누르세요=");
scanf("%d", &score);
if (score < 60) printf("F\n");
else if (score >= 60 && score < 65) printf("D\n");
else if (score >= 65 && score < 70) printf("D+\n");
else if (score >= 70 && score < 75) printf("C\n");
else if (score >= 75 && score < 80) printf("C+\n");
else if (score >= 80 && score < 85) printf("B\n");
else if (score >= 85 && score < 90) printf("B+\n");
else if (score >= 90 && score < 95) printf("A\n");
else if (score >= 95 && score <= 100) printf("A+\n");
else printf("입력이 올바르지 않습니다!\n");
return 0;
}

 

결과 : 당신의 점수를 입력하고 Enter를 누르세요=90
A

 

위의 예제를 switch~case문으로 변경

#define _CRT_SECURE_NO_WARNINGS // Visual Studio에서만 사용
#include <stdio.h>
int main(void)
{
int score;
printf("당신의 점수를 입력하고 Enter를 누르세요=");
scanf("%d", &score);
// 점수를 5로 나눈 값을 기준으로 case를 설정
switch (score / 5) {
case 20: // 100점
printf("A+\n");
break;
case 19: // 95~99점
printf("A\n");
break;
case 18: // 90~94점
printf("B+\n");
break;
case 17: // 85~89점
printf("B\n");
break;
case 16: // 80~84점
printf("C+\n");
break;
case 15: // 75~79점
printf("C\n");
break;
case 14: // 70~74점
printf("D+\n");
break;
case 13: // 65~69점
printf("D\n");
break;
case 12: // 60~64점
printf("D\n");
break;
case 11: // 55~59점
case 10: // 50~54점
case 9: // 45~49점
case 8: // 40~44점
case 7: // 35~39점
case 6: // 30~34점
case 5: // 25~29점
case 4: // 20~24점
case 3: // 15~19점
case 2: // 10~14점
case 1: // 5~9점
case 0: // 0~4점
printf("F\n");
break;
default:
printf("입력이 올바르지 않습니다!\n");
break;
}
return 0;
}

 

 

위의 소스를 c++소스로 변경 c++에서는 출력을 cout 입력을 cin을 사용한다.

#include <iostream>
using namespace std;
int main() {
int score;
cout << "당신의 점수를 입력하고 Enter를 누르세요=";
cin >> score;
// 점수를 5로 나눈 값을 기준으로 case를 설정
switch (score / 5) {
case 20: // 100점
cout << "A+\n";
break;
case 19: // 95~99점
cout << "A\n";
break;
case 18: // 90~94점
cout << "B+\n";
break;
case 17: // 85~89점
cout << "B\n";
break;
case 16: // 80~84점
cout << "C+\n";
break;
case 15: // 75~79점
cout << "C\n";
break;
case 14: // 70~74점
cout << "D+\n";
break;
case 13: // 65~69점
cout << "D\n";
break;
case 12: // 60~64점
cout << "D\n";
break;
case 11: // 55~59점
case 10: // 50~54점
case 9: // 45~49점
case 8: // 40~44점
case 7: // 35~39점
case 6: // 30~34점
case 5: // 25~29점
case 4: // 20~24점
case 3: // 15~19점
case 2: // 10~14점
case 1: // 5~9점
case 0: // 0~4점
cout << "F\n";
break;
default:
cout << "입력이 올바르지 않습니다!\n";
break;
}
return 0;
}

 

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;
}


결과 : 덧셈과 뺄셈만 가능합니다
계산하려는 수식(예:10+20)을 입력하세요:12+43
덧셈 결과는 55입니다.

 

위의 예제를 c++스타일로 바꾸고 곱하기 나누기까지 가능하도록수정
단, 나누기는 반드시 소수점이 있는 값으로 출력

 

#include <iostream>
#include <iomanip> // 소수점 출력 설정을 위한 헤더
using namespace std;
int main() {
char op; // 연산자 저장 변수
double num1, num2; // 피연산자 저장 변수 (double로 변경)
 
cout << "사칙연산이 가능합니다\n";
cout << "계산하려는 수식(예: 10+20)을 입력하세요: ";
cin >> num1 >> op >> num2; // 수식 입력
switch (op) {

 

case '+':
cout << "덧셈 결과는 " << num1 + num2 << "입니다.\n";
break;
case '-':
cout << "뺄셈 결과는 " << num1 - num2 << "입니다.\n";
break;
case '*':
cout << "곱셈 결과는 " << num1 * num2 << "입니다.\n";
break;
case '/':
if (num2 != 0) {
cout << fixed << setprecision(2); // 소수점 둘째 자리까지 출력
cout << "나누기 결과는 " << num1 / num2 << "입니다.\n";
} else {
cout << "0으로 나눌 수 없습니다.\n";
}
break;
default:
cout << "잘못된 연산자입니다. 다시 입력하세요.\n";
break;
}
return 0;
}

 

결과 : 덧셈, 뺄셈, 곱셈, 나누기만 가능합니다
계산하려는 수식(예: 10+20)을 입력하세요: 10/2
나누기 결과는 5.00입니다.

변경 사항:
1. #include <stdio.h> 대신 #include <iostream>을 사용
2. printfscanf 대신 cout 및 cin을 사용하여 출력 및 입력을 처리
3. 피연산자 num1과 num2의 타입을 double로 변경하여 소수점 수를 처리 가능하도록 변경.
4. 나누기 연산을 추가하여, 나누는 수가 0일 경우 에러 메시지를 출력하도록 설정
5. fixed와 setprecision(2)를 사용하여 나누기 결과를 소수점 둘째 자리까지 출력하도록 설정
 
 

for문으로 c++스타일 이름 10번 출력

#include <iostream>

int main(void) 
{
    int i;
    for (i = 0; i < 10;i++) {
        std::cout << i+1 << " : 정상연\n";
    }
    return 0;
}

결과 : 

1 : 정상연
2 : 정상연
3 : 정상연
4 : 정상연
5 : 정상연
6 : 정상연
7 : 정상연
8 : 정상연
9 : 정상연
10 : 정상연

 

위의 예제를 깔끔하게 출력

#include <iostream>
#include <iomanip>
int main(void) 
{
    int i;
    for (i = 0; i < 10;i++) {
        std::cout <<std::setw(2)<< i+1 << " : 정상연\n";
    }
    return 0;
}

결과 : 

 1 : 정상연
 2 : 정상연
 3 : 정상연
 4 : 정상연
 5 : 정상연
 6 : 정상연
 7 : 정상연
 8 : 정상연
 9 : 정상연
10 : 정상연

 

#include <iostream>
#include <iomanip>
int main(void) 
{
    int i;
    for (i = 0; i < 10;i++) {
        std::cout.width(2);
        std::cout << i + 1 << " : 정상연\n";
    }
    return 0;
}

위의 코드를 두줄로 바꿔서 사용(시험에 많이 나오는 문제)\

100까지로 바꾸면

#include <iostream>
#include <iomanip>
int main(void) 
{
    int i;
    for (i = 0; i < 100;i++) {
        std::cout.width(3);
        std::cout << i + 1 << " : 정상연\n";
    }
    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;
}

결과 : 

덧셈과 뺄셈만 가능합니다
끝내려면 0+0을 입력하세요
계산하려는 수식(예:10+20)을 입력하세요:12+563
덧셈 결과는 575입니다.

덧셈과 뺄셈만 가능합니다
끝내려면 0+0을 입력하세요
계산하려는 수식(예:10+20)을 입력하세요:32-6
뺄셈 결과는 26입니다

 

위의 코드를 C++ 스타일로 변경
곱하기 나누기까지 가능하도록 수정
단, 나누기는 반드시 소수점이 있는 값으로 출력
#include <iostream>
#include <iomanip> // 소수점 출력 설정을 위한 헤더
using namespace std;
int main() {
char op;
double num1, num2; // double로 변경하여 소수점 수를 처리
while (true) { // 무한 루프
cout << "\n계산기 입니다\n";
cout << "끝내려면 0+0을 입력하세요\n"; // 종료 안내
cout << "계산하려는 수식(예: 10+20)을 입력하세요: ";
cin >> num1 >> op >> num2; // 수식 입력
if (num1 == 0 && num2 == 0) break; // 종료 조건
switch (op) {
case '+':
cout << "덧셈 결과는 " << num1 + num2 << "입니다.\n";
break;
case '-':
cout << "뺄셈 결과는 " << num1 - num2 << "입니다.\n";
break;
case '*':
cout << "곱셈 결과는 " << num1 * num2 << "입니다.\n";
break;
case '/':
if (num2 != 0) {
cout << fixed << setprecision(2); // 소수점 둘째 자리까지 출력
cout << "나누기 결과는 " << num1 / num2 << "입니다.\n";
} else {
cout << "0으로 나눌 수 없습니다.\n";
}
break;
default:
cout << "잘못된 연산자입니다. 다시 입력하세요.\n";
break;
} // switch~case문 끝
} // while문 끝
return 0;
}

 

결과 : 


계산기 입니다
끝내려면 0+0을 입력하세요
계산하려는 수식(예: 10+20)을 입력하세요: 13+53
덧셈 결과는 66입니다.

계산기 입니다
끝내려면 0+0을 입력하세요
계산하려는 수식(예: 10+20)을 입력하세요: 43*67
곱셈 결과는 2881입니다.

계산기 입니다
끝내려면 0+0을 입력하세요
계산하려는 수식(예: 10+20)을 입력하세요: 13234/52
나누기 결과는 254.50입니다.

변경 사항:
1. #include <stdio.h> 대신 #include <iostream>을 사용했습니다.
2. printfscanf 대신 cout 및 cin을 사용하여 출력 및 입력을 처리했습니다.
3. 피연산자 num1과 num2의 타입을 double로 변경하여 소수점 수를 처리할 수 있도록 했습니다.
4. 무한 루프를 while (true)로 설정하고, 0 + 0 입력 시 종료하도록 했습니다.
5. 곱셈과 나누기 연산을 추가하고, 나누기 결과는 소수점 둘째 자리까지 출력하도록 설정했습니다.
 

C C++에서 for문과 while문을 선택하는 기준을 정리한 표

기준 for  while 
반복 횟수 반복 횟수가 명확할 때 사용 반복 횟수가 불확실할 때 사용
초기화 및 조건 초기화, 조건, 증감이 한 줄에 표현 가능 초기화는 별도로 필요, 조건만 표현
가독성 반복 횟수가 명확할 때 가독성이 좋음 조건이 복잡할 때 가독성이 좋을 수 있음
사용 예시 배열 순회, 지정된 횟수 반복 시 사용 사용자 입력 처리, 조건에 따라 반복 시 사용
종료 조건 반복 횟수에 따라 종료 조건이 참일 때 계속 반복, 거짓일 때 종료
코드 구조 구조가 명확하고 간결함 유연한 조건 제어가 가능

설명

반복 횟수: for문은 반복 횟수가 정해져 있을 때 유용하며, while문은 조건에 따라 반복이 결정될 때 적합

가독성: 코드의 복잡성에 따라 다르지만, 일반적으로 for문은 반복 횟수가 명확할 때 가독성이 높다

사용 예시: for문은 배열이나 리스트의 요소를 순회할 때 자주 사용되며, while문은 사용자 입력과 같은 조건에 따라 반복할 때 유용

 while문과 do~while문의 차이점

do~while문
#include <stdio.h>
int main(void)
{
int n=1,sum=0;
do{
sum+=n;
++n;
}while(n<=100) ; (뒤에 세미클론을 꼭 붙여줘야한다)
printf("%d\n",sum);
return 0;
}

.

 

c언어에서 무한 반복하는 무한 루프를 만드는법
#include<stdio.h>
int main(void)
{
for (; ;) {
printf("Hi ");
}
return 0;
}
 
#include <stdio.h>
int main(void)
{
while (1) {
printf("Hi ");
}
return 0;
}
 
#include <stdio.h>
int main(void)
{
do {
printf("Hi ");
} while (1);
return 0;
}

 

 

프로그래밍 언어에서 break 문을 사용하는 방법과 예시를 정리한 표

언어 설명 예시
C 반복문 또는 switch 문에서 즉시 탈출 ```c
    for (int i = 0; i < 10; i++) {
    if (i == 5) break;
    printf("%d ", i);
    }
    // 출력: 0 1 2 3 4
------------ ---------------------------------------- -------------------------------------------
C++ C와 동일하게 사용 ```cpp
    for (int i = 0; i < 10; i++) {
    if (i == 7) break;
    cout << i << " ";
    }
    // 출력: 0 1 2 3 4 5 6
------------ ---------------------------------------- -------------------------------------------
Java 반복문 또는 switch 문에서 즉시 탈출 ```java
    for (int i = 0; i < 10; i++) {
    if (i == 3) break;
    System.out.print(i + " ");
    }
    // 출력: 0 1 2
------------ ---------------------------------------- -------------------------------------------
JavaScript 반복문에서 즉시 탈출 ```javascript
    for (let i = 0; i < 10; i++) {
    if (i === 4) break;
    console.log(i);
    }
    // 출력: 0 1 2 3
------------ ---------------------------------------- -------------------------------------------
Python break 문을 사용하여 반복문에서 탈출 ```python
    for i in range(10):
    if i == 5: break
    print(i, end=' ')
    # 출력: 0 1 2 3 4
------------ ---------------------------------------- -------------------------------------------
C# 반복문 또는 switch 문에서 즉시 탈출 ```csharp
    for (int i = 0; i < 10; i++) {
    if (i == 6) break;
    Console.Write(i + " ");
    }
    // 출력: 0 1 2 3 4 5

설명

C, C++, Java, C#: break 문은 반복문이나 switch 문에서 즉시 탈출하는 데 사용됩니다. 조건이 참일 때 루프를 종료합니다.

JavaScript: break 문은 반복문에서 사용되며, 조건이 참일 때 해당 루프를 즉시 종료합니다.

Python: break 문은 반복문 내에서 사용되며, 조건이 참일 때 루프를 종료합니다. Python에서는 들여쓰기로 블록을 구분합니다.

전달인자, 매개변수, 리턴값

전달인자(Argument)와 매개변수(Parameter)에 대한 좀 더 자세한 설명을 포함한 표

항목 매개변수 (Parameter) 전달인자 (Argument)
정의 함수 또는 메서드를 정의할 때 사용되는 변수 함수 또는 메서드를 호출할 때 전달되는 값
역할 함수가 호출될 때 외부 값을 수신하는 역할 함수의 매개변수에 실제 값을 제공하는 역할
위치 함수 정의에서 선언됨 함수 호출 시 사용됨
범위 함수 내부에서 유효하며, 함수가 종료되면 소멸 함수 호출 시 한정적이며, 함수 실행 중에만 유효
예시 코드 ```c ```c
  void add(int a, int b) { int x = 5;
  // ab는 매개변수 int y = 10;
  printf("%d", a + b); add(x, y); // xy는 전달인자
  } ```
데이터 타입 매개변수의 데이터 타입을 명시해야 함 전달인자는 변수, 리터럴 등 어떤 값도 가능
수의 제한 함수 정의 시 매개변수의 수를 지정할 수 있음 호출 시 전달인자는 매개변수의 수와 일치해야 함
기본값 설정 일부 언어에서는 기본값을 설정할 수 있음 기본값이 설정된 매개변수에 대한 전달인자로 사용 가능
예외 처리 매개변수의 타입이나 범위에 따른 오류 체크 가능 전달인자가 매개변수의 요구사항을 충족하지 않으면 오류 발생 가능

설명

정의: 매개변수는 함수 정의에서 사용되는 변수이고, 전달인자는 함수 호출 시 제공되는 값입니다.

역할: 매개변수는 함수 내부에서 외부 값을 수신하고, 전달인자는 그 값을 함수에 전달합니다.

범위: 매개변수는 함수 내부에서만 유효하며, 전달인자는 함수 호출 시에만 유효합니다.

예시 코드: 예시를 통해 매개변수와 전달인자의 차이를 명확하게 보여줍니다.

데이터 타입: 매개변수는 데이터 타입을 명시해야 하지만, 전달인자는 다양한 형태로 제공될 수 있습니다.

 

C 언어에서 가장 많이 사용하는 표준 라이브러리 함수들을 사용 빈도에 따라 정리한 표

함수 헤더 파일 설명 예시
printf <stdio.h> 형식화된 출력 함수 printf("Hello, World!\n");
scanf <stdio.h> 형식화된 입력 함수 scanf("%d", &num);
strlen <string.h> 문자열의 길이를 반환 int len = strlen("Hello");
strcpy <string.h> 문자열 복사 함수 strcpy(dest, src);
strcat <string.h> 문자열 연결 함수 strcat(dest, src);
strcmp <string.h> 두 문자열을 비교 int result = strcmp(str1, str2);
malloc <stdlib.h> 동적 메모리 할당 int *arr = (int *)malloc(sizeof(int) * n);
free <stdlib.h> 동적 메모리 해제 free(arr);
memcpy <string.h> 메모리 블록 복사 memcpy(dest, src, n);
fopen <stdio.h> 파일 열기 FILE *fp = fopen("file.txt", "r");
fclose <stdio.h> 파일 닫기 fclose(fp);
fgets <stdio.h> 파일에서 문자열 읽기 fgets(buffer, size, fp);
fprintf <stdio.h> 형식화된 출력, 파일에 쓰기 fprintf(fp, "Data: %d", num);
exit <stdlib.h> 프로그램 종료 exit(0);
rand <stdlib.h> 난수 생성 int r = rand();
C와 C++에서 현재 날짜와 시간을 알아내는 코드 예제
C 코드 예제
c
#include <stdio.h> // 표준 입출력 라이브러리
#include <time.h> // 시간 관련 함수 사용을 위한 라이브러리
int main() {
time_t t; // time_t 타입의 변수 t 선언
struct tm *tm_info; // tm 구조체 포인터 선언
time(&t); // 현재 시간을 t에 저장
tm_info = localtime(&t); // t를 로컬 시간으로 변환하여 tm_info에 저장
// 현재 날짜와 시간 출력
printf("현재 날짜와 시간: %04d-%02d-%02d %02d:%02d:%02d\n",
tm_info->tm_year + 1900, // 연도는 1900부터 시작하므로 1900을 더함
tm_info->tm_mon + 1, // 월은 0부터 시작하므로 1을 더함
tm_info->tm_mday, // 일
tm_info->tm_hour, // 시
tm_info->tm_min, // 분
tm_info->tm_sec); // 초
return 0; // 프로그램 종료
}

 

C++ 코드 예제
cpp
#include <iostream> // 입출력 라이브러리
#include <ctime> // 시간 관련 함수 사용을 위한 라이브러리
using namespace std; // std 네임스페이스 사용
int main() {
time_t t; // time_t 타입의 변수 t 선언
struct tm *tm_info; // tm 구조체 포인터 선언
time(&t); // 현재 시간을 t에 저장
tm_info = localtime(&t); // t를 로컬 시간으로 변환하여 tm_info에 저장
// 현재 날짜와 시간 출력
cout << "현재 날짜와 시간: "
<< tm_info->tm_year + 1900 << "-" // 연도는 1900부터 시작하므로 1900을 더함
<< tm_info->tm_mon + 1 << "-" // 월은 0부터 시작하므로 1을 더함
<< tm_info->tm_mday << " "
<< tm_info->tm_hour << ":" // 시
<< tm_info->tm_min << ":" // 분
<< tm_info->tm_sec << endl; // 초
return 0; // 프로그램 종료
}

 

C와 C++에서 1부터 6까지의 랜덤 수를 생성하여 주사위 게임을 구현한 코드
C 코드 예제
c
#include <stdio.h> // 표준 입출력 라이브러리
#include <stdlib.h> // rand()와 srand() 함수를 사용하기 위한 라이브러리
#include <time.h> // 시간 관련 함수 사용을 위한 라이브러리
int main() {
// 난수 생성을 위한 시드 설정
srand(time(NULL)); // 현재 시간을 시드로 사용하여 랜덤 수를 초기화
int dice_roll = (rand() % 6) + 1; // 1부터 6까지의 랜덤 수 생성
// 주사위 결과 출력
printf("주사위 결과: %d\n", dice_roll);
return 0; // 프로그램 종료
}
C++ 코드 예제
cpp
#include <iostream> // 입출력 라이브러리
#include <cstdlib> // rand()와 srand() 함수를 사용하기 위한 라이브러리
#include <ctime> // 시간 관련 함수 사용을 위한 라이브러리
using namespace std; // std 네임스페이스 사용
int main() {
// 난수 생성을 위한 시드 설정
srand(static_cast<unsigned int>(time(0))); // 현재 시간을 시드로 사용하여 랜덤 수를 초기화
int dice_roll = (rand() % 6) + 1; // 1부터 6까지의 랜덤 수 생성
// 주사위 결과 출력
cout << "주사위 결과: " << dice_roll << endl;
return 0; // 프로그램 종료
}
설명 :
난수 생성 라이브러리: C에서는 <stdlib.h>를, C++에서는 <cstdlib>를 포함하여 난수 생성 함수인 rand()와 srand()를 사용할 수 있습니다.(rand()와 srand()를 사용해야 매번 다른 숫자가 나온다)
시드 설정: srand(time(NULL))를 사용하여 현재 시간을 시드로 설정합니다. 이를 통해 매번 실행할 때마다 다른 난수를 생성할 수 있습니다.
랜덤 수 생성: rand() % 6은 0부터 5까지의 랜덤 수를 생성하고, 여기에 1을 더하여 1부터 6까지의 범위를 얻습니다.
결과 출력: C에서는 printf를, C++에서는 cout을 사용하여 주사위 결과를 출력합니다.

 

c++ 사용자 정의 함수 예제

#include <iostream>
using namespace std;
// 사용자 정의 함수: 두 수의 합을 반환
int add(int a, int b) {
return a + b; // 두 수를 더한 결과 반환
}
int main() {
int num1 = 5, num2 = 10;
int sum = add(num1, num2); // 함수 호출
cout << "합: " << sum << endl; // 결과 출력
return 0;
}

 

c 사용자 정의 함수 예제

#include <stdio.h>
// 사용자 정의 함수: 두 수의 합을 반환
int add(int a, int b) {
return a + b; // 두 수를 더한 결과 반환
}
int main() {
int num1 = 5, num2 = 10;
int sum = add(num1, num2); // 함수 호출
printf("합: %d\n", sum); // 결과 출력
return 0;
}

 

 

함수 정의, 호출, 선언
- 함수 정의
 함수 만들기
 이름, 매개변수, 리턴형, 기능
void display(void)
{
printf("안녕");
}

 

- 함수 호출
 함수 사용하기
 이름, 매개변수
display();
 
- 함수 선언
 함수의 사용법
 이름, 매개변수, 리턴형
 컴파일러에게 함수에 대한 정보를 미리 준다.
void display(void);

 

#include <iostream>
void display(void) //매개변수와 리턴값이 없는 함수를 void를 꼭 써줘야한다 함수 정의
{
std::cout << "하이\n";
}
int main(void)
{
display(); // 호출, call
std::cout << "Hi!\n";
display();
return 0;
}
 
함수 선언은 프로토타입 중간고사 문제, 

 

void display(void) //매개변수와 리턴값이 없는 함수를 void를 꼭 써줘야한다 함수 정의
{
std::cout << "하이\n";
}을 뒤로 보내기 위해서는 선언을 해야하는데 선언한 코드는
#include <iostream>
void display(void); // 선언, 프로토타입(prototype)
int main(void)
{
display(); // 호출, call
std::cout << "Hi!\n";
display();
return 0;
}
void display(void) //매개변수와 리턴값이 없는 함수를 void를 꼭 써줘야한다 함수 정의
{
std::cout << "하이\n";
}
 
 
c++의 두배해서 출력하는 함수

#include
<iostream> // iostream 헤더 파일 포함
// PDN 함수의 프로토타입 선언, 매개변수 x가 정의되어야 함
void PDN(int x);
// display 함수의 프로토타입 선언
void display(void);
int main(void) {
display(); // display 함수 호출
PDN(3); // PDN 함수 호출, 3은 아규먼트
return 0;
}
// PDN 함수 정의
void PDN(int x) { // x는 매개변수
std::cout << x * 2 << std::endl; // x를 2배하여 출력
}
// display 함수 정의
void display(void) {
std::cout << "하이\n"; // "하이" 출력
}
return 값이 있으면 x에다 보관했다가 사용한다.
#include <iostream>

void display(void);
void PDN(int x);
int returnPDN(int x);
int add(int x, int y);
double divide(int x, int y);

int main(void) {
    double result;
    result = divide(3, 2);
    std::cout << "결과: " << result << std::endl;
    return 0;
}

double divide(int x, int y) {
    return static_cast<double>(x) / static_cast<double>(y);
}