윤성우 열혈 c++ 프로그래밍 동영상 강의 : http://www.orentec.co.kr/teachlist/CPP_BASIC_1/teach_sub1.php
사용할 컴파일러 : 비쥬얼스튜디오 or 온라인컴파일러 GDB (https://www.onlinegdb.com/online_c++_compiler) GDB는 컴파일 뿐만 아니라 리눅스 방식?으로 디버깅도 되는 온라인컴파일러
파일 확장자는 .cpp
c++ 컴파일러로 컴파일된다.
입출력을 하기 위한 헤더파일 선언문 #include <iostream> 추가
헤더에 추가 이후 std, cout, endl 등을 사용할 수 있다.
헤더파일 확장자는 .h이지만 새로운 표준 라이브러리, 표준 헤더파일 선언에서는 <iostream>으로 생략 가능하다.
과거 표준 라이브러리는 <iosteram.h>로 사용한다. 점차 지원하지 않는 추세.
std::cout<< '출력대상' 로 출력
출력대상 위치에는 정수, 실수, 문자열, 변수 모두 사용 가능하다.
C의 printf처럼 %d 같은 서식문자를 써서 별도의 출력포맷을 지정안해도 된다. (입출력 모두)
<< 연산자를 사용하면 둘 이상의 출력대상을 연이어 출력할 수 있다.
<<std::endl 로 개행
개행 및 \n과 다르게 출력버퍼를 비운다. (https://yechoi.tistory.com/48)
std::cin >> 데이터 입력 (scanf를 대신하는 데이터 입력)
역시 #include <iostream> 헤더파일 선언문이 필요하다.
변수의 선언은 어디서든 가능하다.
// SimpleAdder.cpp
#include <iostream>
int main()
{
int val1;
std::cout<<"첫 번째 숫자입력: ";
std::cin>>val1;
int val2;
std::cout<<"두 번째 숫자입력: ";
std::cin>>val2;
int result = val1 + val2;
std::cout<<"덧셈결과: " <<result<<std::endl;
return 0;
}
C++에서는 데이터의 출력처럼 데이터의 입력도 별도의 포맷 지정이 필요 없다.
char str[100];
scanf("%s", str);
char str[100];
std::cin>>str;
C++의 지역변수 선언
함수 정의 시 C에서 지역변수 선언은 가장 먼저 등장해야 했으나,
C++의 변수의 선언은 위치에 제한을 두지 않는다.
#include <iostream>
int main(void)
{
int val1, val2;
int result=0;
std::cout<<"두 개의 숫자입력: ";
std::cin>>val1>>val2;
if(val1<val2)
{
for(int i=val1+1; i<val2; i++) { // C도 새 표준에서는 이런 식으로 변수선언 가능
result+=i;
}
}
else
{
for(int i=val2+1; i<val1; i++) {
result+=i;
}
}
std::cout<<"두 수 사이의 정수 합: " <<result<<std::endl;
return 0;
}
std::cin>>'변수1'>>'변수2'로 연속적인 데이터의 입력
데이터 입력 시 데이터 간 경계는 탭, 스페이스바, 엔터키의 입력과 같은 공백에 의해 나눠진다.
배열 기반의 문자열 입출력
#include <iostream>
int main()
{
char name[100];
char lang[200];
std::cout<<"이름은 무엇임?";
std::cin>>name;
std::cout<<"좋아하는 언어는?";
std::cin>>lang;
std::cout<<"내 이름은 "<<name<<"입니다.\n";
std::cout<<"제일 좋아하는 언어는 "<<lang<<"입니다."<<std::endl;
return 0;
}
문제 1 : 사용자로부터 5개의 정수를 각각 받아 합을 출력하는 프로그램
#include <iostream>
int main(void)
{
int result=0;
for(int val=1; val<6; val++) {
std::cout<<val<<"번째 정수 입력: ";
std::cin>>val;
result+=val;
}
std::cout<<"합계: " <<result<<std::endl;
return 0;
}
문제 2 : 프로그램 사용자로부터 이름, 전화번호를 문자열 형태로 입력받고, 입력받은 데이터를 출력하는 프로그램
#include <iostream>
int main(void)
{
int result=0;
char name[100]; //이름
char phoneNum[200]; //전화번호
std::cout<<"이름을 입력하세요: ";
std::cin>>name;
std::cout<<"번호를 입력하세요: ";
std::cin>>phoneNum;
std::cout<<name<<phoneNum<<std::endl;
return 0;
}
문제 3 : 숫자를 하나 입력받아서 그 숫자에 해당하는 구구단을 출력하는 프로그램
#include <iostream>
int main(void)
{
int result=0;
int number;
std::cout<<"구구단 몇단을 출력할까요? (숫자를 입력)";
std::cin>>number;
for(int multiplicationTables=1; multiplicationTables<10; multiplicationTables++) {
std::cout<<number<<"x"<<multiplicationTables<<"="<<number*multiplicationTables<<std::endl;
}
return 0;
}
문제 4 : 판매원들의 급여 계산 프로그램. 매달 급여는 50만원에 판매 물품의 가격에 판매원의 판매금액에서 12%를 추가 지급한다. 급여의 계산은 -1이 입력될 때까지 계속되어야 한다.
#include <iostream>
int main(void)
{
int sellMoney, pay;
while(sellMoney != -1) {
std::cout<<"판매 금액을 만원 단위로 입력(-1 to end): ";
std::cin>>sellMoney;
if(sellMoney == -1) {
std::cout<<"프로그램을 종료합니다"<<std::endl;
//continue;
} else {
pay = 50 + (sellMoney*0.12);
std::cout<<"이번 달 급여: "<<pay<<"만원"<<std::endl;
}
}
return 0;
}
개발하는데 키보드는 무접점 키보드를 추천한다
'C, C++ > 열혈 C++ 프로그래밍' 카테고리의 다른 글
02-1 챕터 02의 시작에 앞서 (0) | 2021.08.19 |
---|---|
01-5 이름공간 (0) | 2021.08.19 |
01-4 인라인 함수 (0) | 2021.08.18 |
01-3 매개변수의 디폴트 값 (0) | 2021.08.18 |
01-2 함수 오버로딩 (0) | 2021.08.18 |