1. 이 코드가 오류가 나는 이유
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
}
int main()
{
std::cout << "Hello World!\n";
}
main 함수가 두 번 정의되어 있기 때문입니다. C++에서는 하나의 프로그램에 main 함수가 정확히 한 번만 정의되어야 합니다.
2. 매개변수, 인자(argument), 리턴값
3. void
4. 1~6까지 랜덤한 숫자가 나오는 C++ 소스
#include <iostream> // 입출력을 위한 헤더 파일
#include <cstdlib> // rand(), srand() 함수를 사용하기 위한 헤더 파일
#include <ctime> // time() 함수를 사용하기 위한 헤더 파일
int main()
{
srand(time(0));
// 현재 시간을 이용해 난수 생성기 초기화. 이 작업으로 인해 매 실행마다 다른 결과가 나옴
int random_number = rand() % 6 + 1;
// rand() 함수는 임의의 수를 생성하고, "% 6" 연산으로 그 결과를 0~5 사이로 제한하고, "+1"로 최종적으로 1~6 사이의 수가 됨
std::cout << "Random number: " << random_number << std::endl; // 랜덤 숫자 출력
return 0;
}
5. 함수 정의, 호출, 선언
6. 함수 만들기 1 : 전광판 함수
//1번 소스 : display() 함수가 먼저 정의되어 있어서 정상적으로 호출
#include <iostream>
void display() //정의
{
std::cout << "kha\n";
}
int main()
{
std::cout << "Hello World!\n";
display(); //호출(call)
}
//2번 소스 : display() 함수가 호출 위치보다 뒤에 정의되어 있어서 컴파일 오류가 발생
#include <iostream>
int main()
{
std::cout << "Hello World!\n";
display(); //호출(call)
}
void display() //정의
{
std::cout << "kha\n";
}
//3번 소스 : display() 함수가 선언된 후에 호출되므로, 실제 정의 위치는 후순위이며 문제 없이 작동
#include <iostream>
void display(); //선언
int main()
{
std::cout << "Hello World!\n";
display(); //호출(call)
}
void display() //정의
{
std::cout << "kha\n";
}
7. 함수 만들기 2 : 두 배 해서 출력하기
#include <iostream>
void doubleInt(int x); //선언
int main()
{
doubleInt(3); //호출(call)
}
void doubleInt(int x) //정의
{
std::cout << x * 2;
}
8. return문
9. 함수 만들기 3 : 두 배 해서 리턴하는 함수
#include <iostream>
int doubleIntReturn(int x); //선언
int main()
{
int x;
std::cout << doubleIntReturn(2);
x= doubleIntReturn(4);
std::cout << x;
}
int doubleIntReturn(int x) //정의
{
return x * 2;
}
10. 함수 만들기 4 : 두 수를 더해서 리턴하는 함수
#include <iostream>
int add(int x, int y); //선언
int main()
{
std::cout << add(3, 6);
}
int add(int x, int y) //정의
{
return x + y;
}
11. 함수 만들기 5 : 자판기 함수
#include <iostream>
char vending(int x); //선언
int main()
{
std::cout << vending(1);
}
char vending(int x) //정의
{
if (x == 1) return 'A';
else return 'B';
}
12. 함수 만들기 6 : 문자 리턴 자판기 함수
#include <iostream>
const char* vending1(int x); //선언
std::string vending2(int x);
int main()
{
std::cout << vending1(1);
std::cout << vending2(1);
}
std::string vending2(int x) //정의
{
if (x == 1) return "커피";
else return "핫초코";
}
const char* vending1(int x)
{
if (x == 1) return "커피";
else return "핫초코";
}
13. 함수 만들기 7
#include <iostream>
double devide(int x, int y); //선언
int main()
{
std::cout << devide(10, 4);
}
double devide(int x, int y) //정의
{
return (double)x / y;
}
14. 함수의 정의와 선언(원형, prototype)
15. add 함수를 만들 때 int형 매개변수 x, y를 더해서 리턴하는 c, c#, c++, 자바, 파이썬 소스
//c
#include <stdio.h>
int add(int x, int y) {
return x + y;
}
int main() {
printf("%d", add(3, 4)); // 출력: 7
return 0;
}
//c#
using System;
class Program {
static int Add(int x, int y) {
return x + y;
}
static void Main() {
Console.WriteLine(Add(3, 4)); // 출력: 7
}
}
//c++
#include <iostream>
int add(int x, int y) {
return x + y;
}
int main() {
std::cout << add(3, 4); // 출력: 7
return 0;
}
//Java
public class Main {
public static int add(int x, int y) {
return x + y;
}
public static void main(String[] args) {
System.out.println(add(3, 4)); // 출력: 7
}
}
//Python
def add(x, y):
return x + y
print(add(3,4)) # 출력: 7
16. 구조체 변수
17. 변수/배열/구조체
18. C struct vs C++ class
19. 구조체 : C vs C++
c 구조체는 변수만 넣을 수 있고 c++ 구조체는 구조체 안에 함수도 넣을 수 있다.
20. Man형 구조체를 선언하고 변수를 만들어서 멤버에 접근
#include <iostream>
struct Man {
int age;
double weight;
std::string name;
};
int main()
{
int x = 10;
Man hee = { 7, 77.7, "gmo" };
Man kim;
std::cout << hee.name << " 나이는 " << hee.age << "살, 몸무게는 " << hee.weight << "kg 입니다.\n";
hee.age = 22; hee.weight = 50.5; hee.name = "Hee Ae";
kim = hee;
std::cout << kim.name << " 나이는 " << kim.age << "살, 몸무게는 " << kim.weight << "kg 입니다.\n";
std::cout << hee.name<<" 나이는 "<<hee.age<<"살, 몸무게는 "<<hee.weight<<"kg 입니다.\n";
}
구조체의 장점 : 멤버들이 각각 복사됨
21. 구조체를 활용한 가위바위보 게임 c++ 소스
#include <iostream>
#include <string>
#include <cstdlib> // rand와 srand 함수를 위해
#include <ctime> // time 함수를 위해
// 플레이어 정보를 저장하는 구조체
struct Player {
std::string name;
int score;
};
int main() {
srand(time(0)); // 랜덤 시드 초기화
int target = rand() % 100 + 1; // 1부터 100 사이의 랜덤 숫자 생성
Player player;
player.score = 0;
std::cout << "Enter your name: ";
std::cin >> player.name;
int guess;
do {
std::cout << "Guess the number (1 to 100): ";
std::cin >> guess;
player.score++; // 시도할 때마다 점수 증가
if (guess > target) {
std::cout << "Too high!\n";
} else if (guess < target) {
std::cout << "Too low!\n";
}
} while (guess != target); // 정답을 맞출 때까지 반복
std::cout << "Congratulations, " << player.name
<< "! You found the number in "
<< player.score << " tries.\n";
return 0;
}
C++ 강의 자료 참고했습니다.
'C++' 카테고리의 다른 글
[C++ 프로그래밍] 11주차 함수중첩, 디폴트 인자 (0) | 2023.11.16 |
---|---|
[C++ 프로그래밍] 10주차 const동적 메모리 할당(new, delete) (6) | 2023.11.09 |
[C++ 프로그래밍] 9주차 객체와 멤버 생성자 소멸자 this (0) | 2023.11.02 |
[C++ 프로그래밍] 7주차 멤버의 접근 속성클래스와 객체 만들기 (2) | 2023.10.19 |
[C++ 프로그래밍] 6주차 객체지향언어특징 클래스와객체 접근속성 (0) | 2023.10.12 |
[C++ 프로그래밍] 3주차 C문법 정리2 (0) | 2023.09.21 |
[C++ 프로그래밍] 2주차 C문법 정리1 (0) | 2023.09.14 |
[C++ 프로그래밍] 1주차 C++ 개요 (2) | 2023.09.08 |