CPP 예제들
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | /* 5개 정수 입력받아 합을 출력하는 프로그램 */ #include <iostream> int main() { int num = 0; int sum = 0; for(int i=0; i<5; i++) { std::cout << i + 1 << "번째 정수 입력: " ; std::cin >> num; sum = sum + num; } std::cout << "합계 :" << sum << std::endl; return 0; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | /* 이름과 전화번호를 문자열 형태로 입력받아 출력하는 프로그램 */ #include <iostream> int main() { char name[100]; char phoneNum[200]; std::cout << "이름 : "; std::cin >> name; std::cout << "전화번호 : "; std::cin >> phoneNum; std::cout << "이름은 " << name << "이고 " << "전화번호는 " << phoneNum << "이다 "<<std::endl; return 0; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | /* 숫자를 입력받아 그 숫자에 해당하는 단을 출력하는 구구단 프로그램 (5 입력시 구구단 5단 출력) */ #include <iostream> int main() { int dan; std::cout << "구구단 출력할 단 입력 : "; std::cin >> dan; for (int i = 1; i < 10; i++) std::cout << dan << " X " << i << " = " << dan*i << std::endl; return 0; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | /* 급여 계산 프로그램 기본 급여는 50만원, 물품 판매 가격의 12% 예) 판매금액이 100만원일 때, 50+100x0.12 = 62 (만원) 판매금액 입력받아 급여를 출력 (-1이 될때까지 입력이 계속되야 함) */ #include <iostream> int main() { int pay; while(1) { std::cout << "판매 금액 입력 (만원단위, -1 입력시 종료) : "; std::cin >> pay; if (pay == -1) break; std::cout << "이번 달 급여: " << 50 + pay*0.12 << " 만원\n"; } std::cout << "프로그램 종료" << std::endl; return 0; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | /* main함수에서 필요로 하는 swap 함수를 오버로딩으로 구현 */ #include <iostream> void swap(int *ptr1, int *ptr2) { int temp = *ptr1; *ptr1 = *ptr2; *ptr2 = temp; } void swap(char *ptr1, char *ptr2) { char temp = *ptr1; *ptr1 = *ptr2; *ptr2 = temp; } void swap(double *ptr1, double *ptr2) { double temp = *ptr1; *ptr1 = *ptr2; *ptr2 = temp; } int main() { int num1 = 20, num2 = 30; swap(&num1, &num2); std::cout << num1 << " " << num2 << std::endl; char ch1 = 'A', ch2 = 'Z'; swap(&ch1, &ch2); std::cout << ch1 << " " << ch2 << std::endl; double dbl1 = 1.111, dbl2 = 5.555; swap(&dbl1, &dbl2); std::cout << dbl1 << " " << dbl2 << std::endl; return 0; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /* 매개 변수의 디폴트 값 지정 형태를 함수 오버로딩의 형태로 재구현 (main함수 변경없이 동일한 실행결과가 나오도록) */ #include <iostream> int BoxVolume(int length, int width, int height) { return length*width*height; } int BoxVolume(int length, int width) { return length*width*1; } int BoxVolume(int length) { return length * 1 * 1; } int main() { std::cout << "[3, 3, 3] : " << BoxVolume(3, 3, 3) << std::endl; std::cout << "[5, 5, D] : " << BoxVolume(5, 5) << std::endl; std::cout << "[7, D, D] : " << BoxVolume(7) << std::endl; // std::cout<<"[D, D, D] : "<<BoxVolume()<<std::endl; lengh에는 default값이 지정되지 않았으므로 컴파일 에러 return 0; } | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <iostream> inline int SQUARE(int x) { return x*x; } int main() { std::cout << SQUARE(5) << std::endl; std::cout << SQUARE(12) << std::endl; return 0; } | cs |
#include <iostream>
namespace BestComImpl
{
void SimpleFunc(void)
{
std::cout<<"BestCom이 정의한 함수"<<std::endl;
}
}
namespace ProgComImpl
{
void SimpleFunc(void)
{
std::cout<<"ProgCom이 정의한 함수"<<std::endl;
}
}
int main(void)
{
BestComImpl::SimpleFunc();
ProgComImpl::SimpleFunc();
return 0;
}
|
Output:
#include <iostream>
namespace BestComImpl
{
void SimpleFunc(void);
}
namespace ProgComImpl
{
void SimpleFunc(void);
}
int main(void)
{
BestComImpl::SimpleFunc();
ProgComImpl::SimpleFunc();
return 0;
}
void BestComImpl::SimpleFunc(void)
{
std::cout<<"BestCom이 정의한 함수"<<std::endl;
}
void ProgComImpl::SimpleFunc(void)
{
std::cout<<"ProgCom이 정의한 함수"<<std::endl;
}
|
Output:
다음 예제에서와 같이 namespace를 둘 이상의 영역으로 나눌 수도 있으며, 동일한 namespace에 정의된 함수는 직접 호출이 가능하다
#include <iostream>
namespace BestComImpl
{
void SimpleFunc(void);
}
namespace BestComImpl // 3,8행과 같이 namespace를 둘 이상의 영역으로 나뉘어 선도 가능
{
void PrettyFunc(void);
}
namespace ProgComImpl
{
void SimpleFunc(void);
}
int main(void)
{
BestComImpl::SimpleFunc();
return 0;
}
void BestComImpl::SimpleFunc(void)
{
std::cout << "BestCom이 정의한 함수" << std::endl;
PrettyFunc(); // 동일 이름공간
ProgComImpl::SimpleFunc(); // 다른 이름공간
}
void BestComImpl::PrettyFunc(void)
{
std::cout << "So Pretty!!" << std::endl;
}
void ProgComImpl::SimpleFunc(void)
{
std::cout << "ProgCom이 정의한 함수" << std::endl;
}
|
다음과 같이 namespace를 중첩시키는 것도 가능하다.
#include <iostream>
namespace Parent
{
int num = 2;
namespace SubOne
{
int num = 3;
}
namespace SubTwo
{
int num = 4;
}
}
int main(void)
{
std::cout << Parent::num << std::endl;
std::cout << Parent::SubOne::num << std::endl;
std::cout << Parent::SubTwo::num << std::endl;
return 0;
}
|
/* 하나의 소스파일을 다음과 같이 3개의 파일로 분할 컴파일 하기
헤더파일 : main 함수를 제외한 나머지 두 함수의 선언 삽입
소스파일1 : main 함수를 제외한 나머지 두 함수의 정의 삽입
소스파일2 : main 함수만 삽입
*/
온라인에서 컴파일 및 실행해보기
-> https://goo.gl/eHaIhO
namespace에 대해 공부했기 때문에 std::cout은 namespace std에 선언된 cout이라는 의미임을 알 수 있다.
using을 이용한 namespace 명시
Output: |
위의 예제는 using선언이 main함수내에 존재하는데, 이러한 경우 지역변수의 성격과 동일하다.
따라서 프로그램 전체 영역에 효력을 미치게 하려면 전역변수와 같이 함수밖에 선언을 한다.
함수밖에 using선언
#include <iostream>
using std::cout;
using std::endl;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}
|
Hello, World! |
다음과 같이 namespace std에 선언된 모든 것에 접근할 때에 namespace 지정을 생략하도록 선언할 수도 있다.
하지만 이와 같은 선언은 이름충돌이 발생할 확률이 상대적으로 높아지기에 적절한 판단하에 쓰는 것이 중요하다.
#include <iostream>
using namespace std;
int main()
{
cout << "Hello, World!" << endl;
return 0;
}
|
Hello, World! |
namespace 중첩시 별칭을 주기위한 선언
#include <iostream>
using namespace std;
namespace AAA
{
namespace BBB
{
namespace CCC
{
int num1;
int num2;
}
}
}
int main()
{
namespace ABC = AAA::BBB::CCC; // AAA::BBB::CCC를 namespace ABC로 별칭함
AAA::BBB::CCC::num1 = 20; // 별칭없이 중첩된 namespace에 차례로 접근
ABC::num2 = 30; // 별칭을 이용해 namespace에 접근
cout << AAA::BBB::CCC::num1 << endl; // 별칭없이 접근
cout << ABC::num2 << endl; // 별칭 ABC를 통해 접근
return 0;
}
|
지역변수 이름이 전역변수와 이름이 같은 경우, 전역변수는 지역변수에 의해 가려진다.
SimpleFunc 함수내에서 전역변수 val에 접근할 때에는 범위지정 연산자 :: 를 사용하면 된다.
#include <iostream>
int val = 100; // 전역변수 선언
int main()
{
int val = 20; // 지역변수
val += 3; // 지역변수 val의 값 3 증가
::val += 7; // 전역변수 val의 값 7 증가
return 0;
} |
'Study > C++' 카테고리의 다른 글
생성자와 소멸자, 클래스 (0) | 2016.09.26 |
---|---|
class (0) | 2016.09.25 |
CPP-Object Oriented Programming (객체지향 프로그래밍) (0) | 2016.09.23 |
c++ Class (0) | 2016.09.22 |
c++ 기초3 (0) | 2016.09.21 |