-
02. 제어와 배열C++ 2021. 1. 21. 11:26
제어와 배열
- 관계 연산자 -> 결과 bool
< ex01_rel.cpp >
#include <iostream> using namespace std; int main(int arg, char const *argv[]){ bool b; b = (1 == 2); cout << std::boolalpha; // 설정을 바꾸겠다 // bool을 숫자 말고 true, false로 출력하도록 설정을 바꾸겠다 cout << b << endl; return 0; }
< ex02_rel.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]){ bool b; int x = 3; int y = 3; cout << std::boolalpha; b = (x == 3) && (y == 3); cout << b << endl; y = 2; b = (x == 3) && (y ==3); cout << b << endl; }
< ex03_if.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]){ int x = 100; if(x == 100){ cout << "100입니다." << endl; } }
- if - else
- 괄호와 중괄호 꼭 기입
< ex03_if_else.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { int x, y; cout << "x : "; cin >> x; cout << "y : "; cin >> y; if(x > y){ cout << "x가 y보다 큽니다" << endl; } else { cout << "y가 x보다 크거나 같습니다" << endl; } return 0; }
< ex06_multi-if.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { int x, y; cout << "x값을 입력하세요"; cin >> x; cout << "y값을 입력하세요"; cin >> y; if(x > y) cout << "x가 y보다 큽니다." << endl; else if (x < y) cout << "x가 y보다 작습니다." << endl; else cout << "x와 y가 같습니다." << endl; return 0; }
- 파이썬과 다르게 else if이다
< ex07_switch.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { int number; cout << "숫자를 입력하세요:"; cin >> number; switch(number) { case 0: cout <<"zero\n"; break; case 1: cout <<"one\n"; break; case 2: cout <<"two\n"; break; default: cout <<"many\n"; break; } return 0; }
- switch문
- if - else if를 여러개 쓴 효과
- default(위의 경우가 다 아니라면 적용될 것)는 생략 가능하다
- break문을 만날 때 스위치문을 벗어난다
- 만약, break문이 없을 경우 계속 실행이 다음으로 넘어간다
- 숫자만 가능하다, 정수만 가능하다
< ex08_switch.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { int number; cout << "숫자를 입력하세요:"; cin >> number; switch(number) { case 0: cout <<"zero\n"; case 1: cout <<"one\n"; case 2: cout <<"two\n"; default: cout <<"many\n"; break; } return 0; }
< ex09_while.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { int n = 10; while(n>0) { cout << n << " "; n--; } cout << "fire!" << endl; return 0; }
< ex10_while.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { int n; int i = 1; cout << "구구단 중에서 출력하고 싶은 단을 입력하세요: "; cin >> n; while( i<=9 ) { cout << n << " * " << i << " = " << n*i << endl; i++; } return 0; }
< ex10_while.cpp >
#include <iostream> using namespace std; int main(int argc, char const *argv[]) { string str; do { cout<<"문자열을 입력하세요:"; getline(cin, str); // getline -> 사용자의 입력을 뒤의 변수에 넣어준다 // cin과 차이점 cout << "사용자의 입력: " << str << endl; } while(str != "종료"); return 0; }
-
getline과 cin의 차이점
-
입력 문자열에 공백이 있는 경우
-
getline은 공백이 있어도 변수에 저장이 된다, 엔터를 칠 때까지 데이터를 취하겠다는 뜻
-
데이터 안에 엔터는 빼고 저장해준다
-
- cin은 공백을 만나게 되면 데이터 하나로 간주한다
< ex12_for.cpp >
#include <iostream> using namespace std; int main() { int sum = 0; for(int i=0; i<=10; i++) { sum += i; } cout << "1부터 10까지 정수의 합 = " << sum << endl; return 0; }
for 루프
-
- for (초기식; 조건식; 증감식){}
-
c++에서 +연산자는 문자열+문자열만 지원한다
-
문자열 + 숫자는 지원하지 않는다
-
continue
- continue를 만나면 반복문으로 돌아가 다시 루프를 돈다
< ex16_array.cpp >
#include <iostream> using namespace std; int main() { const int STUDENTS = 10; int scores[STUDENTS]; int sum = 0; int i, average; for(i=0; i<STUDENTS; i++) { cout << "학생들의 성적을 입력하시요: "; cin >> scores[i]; } // 루프를 돌면서 배열값 초기화 for(i=0; i<STUDENTS; i++) { sum += scores[i]; } average = sum / STUDENTS; cout << "성적 평균= " << average << endl; return 0; }
- 배열
- 데이터타입 배열이름[배열크기];
- 데이터타입이 동일한 데이터가 순차적으로 메모리에 저장되는 자료 구조
- 각각의 요소들은 인덱스를 사용하여 독립적으로 접근 가능
- 대용량의 데이터를 동일한 이름으로 쉽게 저장하고 처리 가능
- 처음 선언할 때 배열의 크기를 알려줘야 하고, 변경 불가능
- 처음 해야 할 일 -> 루프를 돌리면서 배열을 초기화하기
- 배열의 개수 관리를 상수를 통해서 해주기(중요)
- 배열의 개수를 지정하지 않을 경우 데이터 개수를 보고 요소의 개수 결정한다
- 초기화되지 않은 요소는 0으로 자동 초기화된다
- 배열 전체를 0으로 초기화하고 싶을 때
- ex) int score[STUDENTS] = {
- 0,
- }
< ex17_array_init.cpp >
#include <iostream> using namespace std; int main() { const int STUDENTS = 5; int scores[STUDENTS] = { 100, 200, 300, 400, 500 }; int sum = 0; int i, average; for(i=0; i<STUDENTS; i++) { sum += scores[i]; } average = sum / STUDENTS; cout << "성적 평균= " << average << endl; return 0; }
< ex18_advanced_for.cpp >
#include <iostream> using namespace std; int main() { int list[] = {1, 2, 3, 4, 5, 6 ,7, 8, 9, 10};// 밑의 for문을 돌면서 i에 들어간다 int sum = 0; for(int i : list) { // 중요 // 값의 복사 sum += i; } cout << sum << endl << endl; for(int& i : list) { // 값의 복사가 되지 않는다!!, 오버헤드가 줄어든다(시간상의 이점이 생긴다) // i가 리스트를 가리키는 게 달라진다 // &는 참조형 변수를 뜻한다 // c++의 변수(참조 변수, 일반 변수, 포인터 변수) // int &total = sum -> 데이터는 하나만 존재하나 저장공간을 가리키는 이름이 두 개(sum, total)이 되는 것, total을 위한 공간이 하나 더 생긴 것이 아니다 (참조 변수); // int total = sum; -> total이라는 변수를 하나 더 만든 것 sum을 위한 공간 원래 있고, total을 위한 공간이 새로 만들어짐 total의 공간에 sum에 있던 값이 복사가 되는 것 cout << i << " "; } cout << endl; for(auto& i : list) { // 중요 cout << i << " "; } return 0; }
범위 기반 for문
- for(변수 : 범위){}
'C++' 카테고리의 다른 글
04. 클래스와 객체 (0) 2021.01.27 [열혈 C++] 02. C언어 기반의 C++ 2 (0) 2021.01.22 [열혈 C++] 01. C언어 기반의 C++ 1 (0) 2021.01.22 03. 제어구조와 배열2 (0) 2021.01.22 01. C++ 기초사항 (0) 2021.01.21