•
후위, 전위 표현식
++, --
전위표현식이 후위보다 우선순위가 높음.
•
while 반복문
#include<iostream>
using namespace std;
int main() {
int count = 0;
while (count < 10) {
cout << "Hello World!" << endl;
count++;
}
return 0;
}
C++
복사
•
여러 번 입력받기
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int score;
int sum = 0;
double average;
int counter = 0;
while (counter < 4) {
cout << "점수 입력(0~100): ";
cin >> score;
sum = sum + score;
counter++;
}
average = static_cast<double>(sum) / 4;
cout << fixed << setprecision(2) << showpoint; // 소수점 아래 2개까지 출력. 정밀도 조정
cout << "점수 평균: " << average;
return 0;
}
C++
복사
•
수열의 합 구하기
#include<iostream>
using namespace std;
int main() {
int sum1 = 0, sum2 = 0, sum3 = 0;
int n;
cout << "n값 지정: ";
cin >> n;
int counter = 1;
while (counter <= n) {
sum1 += counter;
sum2 += counter * counter;
sum3 += counter * counter * counter;
counter++;
}
cout << "n값: " << n << endl;
cout << "sum1값: " << sum1 << endl;
cout << "sum2값: " << sum2 << endl;
cout << "sum3값: " << sum3 << endl;
return 0;
}
C++
복사
•
센티넬 제어
구문을 정지하기 위한 특수한 장치
ex) 양의 정수 리스트에서 -1을 입력하면 구문 중지.
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int sum = 0;
int num;
// 입력
cout << "정수 입력 (-1 입력시 정지): ";
cin >> num;
while (num != -1) {
sum = sum + num;
cout << "정수 입력 (-1 입력시 정지): ";
cin >> num; // 센티넬 갱신
}
// 출력
cout << "합은: " << sum;
return 0;
}
C++
복사
•
EOF 제어 반복문
EOF : ctrl + z 를 말함.
•
주의사항
반복하지 않는 반복문 / 무한하게 반복하는 반복문 / 본문이 없는 반복문 / 조건으로 부동 소수점을 사용하는 반복문
위의 반복문들은 사용 시 주의해야함.
•
while 반복문의 조건 확인 횟수는 반복 횟수보다 언제나 1만큼 큼.
•
for 반복문
7로 나눌 수 있는 숫자를 출력.
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int n;
cout << "출력 최대값 입력 : ";
cin >> n;
int col = 1; // 행 출력 개수 제한
// 입력
for (int i = 1; i < n; i++) {
if (i % 7 == 0) {
cout << setw(4) << i; // setw(n) : n만큼 공간을 확보 후 출력
col++;
}
if (col > 10) {
cout << endl;
col = 1; // 초기화
}
}
return 0;
}
C++
복사
•
한 달을 달력 형태로 출력
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int monthday, startday;
int col = 1; // 행 출력 개수 제한
do {
cout << "해당 월 일수 - (28, 29, 30, 31): ";
cin >> monthday;
} while (monthday < 28 || monthday > 31);
do {
cout << "시작 요일 - 일(1)/월(2)/화(3)/수(4)/목(5)/금(6)/토(7): ";
cin >> startday;
} while (startday < 1 || startday > 7);
// 달력 형태 출력
cout << "Sun Mon Tue Wen Thu Fri Sat" << endl;
cout << "--- --- --- --- --- --- ---" << endl;
// 시작일 공백
for (int i = 1; i < startday; i++) {
cout << " ";
col++;
}
// 날짜 출력
for (int j = 1; j <= monthday; j++) {
cout << setw(3) << j << " ";
col++;
if (col > 7) {
cout << endl;
col = 1;
}
}
return 0;
}
C++
복사
일수와 시작요일을 지정하면 달력이 출력된다.
•
do-while 문
적어도 한 번 이상 반복문을 실행해야 하는 경우에 사용.
데이터 유효성 검사에 활용이 가능함.
#include<iostream>
using namespace std;
int main() {
int score;
char grade;
do {
cout << "0에서 100 사이 숫자 입력: ";
cin >> score;
} while (score < 0 || score > 100);
switch (score / 10) {
case 10: grade = 'A';
break;
case 9: grade = 'A';
break;
case 8: grade = 'B';
break;
case 7: grade = 'C';
break;
case 6: grade = 'D';
break;
default: grade = 'F';
}
cout << "성적은 " << grade << " 입니다." << endl;
return 0;
}
C++
복사
•
중첩 반복문
C 처음 공부할 때 같은 과 선배가 구구단 표랑 모양 만들기만 죽어라 시켰던 기억이 네..
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int size;
do {
cout << "사이즈를 입력하세요 (2~10): ";
cin >> size;
} while (size < 2 || size > 10);
for (int i = 1; i <= size; i++) {
for (int j = 1; j <= size; j++) {
cout << setw(4) << i * j;
}
cout << endl;
}
return 0;
}
C++
복사
•
반복문 관련 구문
return, break, continue, goto 가 있음.
return, continue 구문이 아니라면 굳이 사용하지 않는 것을 추천.
•
return 구문 사용
소수인지 확인하는 프로그램
#include<iostream>
using namespace std;
int main() {
int n;
do {
cout << "Enter a positive integer: ";
cin >> n;
} while (n <= 0);
if (n == 1) {
cout << "1 is not a composite nor a prime.";
return 0;
}
for (int i = 2; i < n; i++) {
if (n % i == 0) {
cout << n << " is composite." << endl;
cout << "The first divisor is " << i << endl;
return 0;
}
}
cout << n << " is a prime." << endl;
return 0;
}
C++
복사
•
입력받은 수의 합과 곱 구하기
#include<iostream>
#include<iomanip>
using namespace std;
int main() {
int size;
do {
cout << "Enter a non-negative integer value for size: ";
cin >> size;
} while (size < 0);
double num;
double sum = 0;
double product = 1;
for (int i = 0; i < size; i++) {
cout << "Enter the next number: ";
cin >> num;
sum += num;
product *= num;
}
cout << fixed << setprecision(2);
cout << "sum = " << sum << endl;
cout << "product = " << product << endl;
return 0;
}
C++
복사
•
팩토리얼 구현
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int n;
unsigned long long factorial;
// 입력
do {
cout << "Enterthe factorial size: ";
cin >> n;
} while (n < 0);
// 초기화
factorial = 1;
// 처리
for (int i = 1; i < n + 1; i++) {
factorial *= i;
}
// 출력
cout << n << "! = " << factorial;
return 0;
}
C++
복사
•
거듭제곱 구하기
밑(base)과 지수(exponent)를 입력 받아서 거듭제곱 구하기
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int base, exponent;
unsigned long int power, temp; // 4294967295가 최대
bool overflow;
// 입력
do {
cout << "Enter base: ";
cin >> base;
} while (base < 0);
do {
cout << "Enter n: ";
cin >> exponent;
} while (exponent < 0);
// 초기화
power = 1;
temp = power;
overflow = false;
// 처리
for (int i = 1; (i <= exponent) && (!overflow); i++) {
power *= base;
if (power / base != temp) {
overflow = true; // 반복을 종료
}
temp = power;
}
// 출력
if (overflow) {
cout << "Overflow occurred! Try again with smaller b or n.";
}
else {
cout << base << "^" << exponent << " = " << power;
}
return 0;
}
C++
복사
•
최소값, 최대값
리스트 내부의 최소, 최대값 찾기
#include<iostream>
#include<limits>
using namespace std;
int main() {
// 변수 선언
int size;
int smallest, largest;
// 초기화
smallest = numeric_limits<int> :: max();
largest = numeric_limits<int> :: min();
// 입력
do {
cout << "Enter the size of list: ";
cin >> size;
} while (size <= 0);
int num;
// 처리
for (int i = 1; i <= size; i++) {
cout << "Enter the next item: ";
cin >> num;
if (num < smallest) {
smallest = num;
}
if (num > largest) {
largest = num;
}
}
// 출력
cout << "The smallest number is " << smallest << endl;
cout << "The largest number is " << largest << endl;
return 0;
}
C++
복사
•
any, all 조건 충족
적어도 하나가 그런지 확인하는 경우 (any) 기준에 맞는 항목을 찾는 순간 탈출,
모두 그런지 확인하는 경우 (all) 기준에 맞지 않는 항목이 하나라도 있으면 탈출.
→ 7로 나눠지는 수를 찾으면 종료 (센티넬 조건)
#include<iostream>
using namespace std;
int main() {
// 변수 선언
int size;
bool success;
// 초기화
success = false;
// 입력
do {
cout << "Enter the number of items in the list: ";
cin >> size;
} while (size < 0);
// 처리
int item;
for (int i = 0; (i < size) && (!success); i++) {
cout << "Enter the next item: ";
cin >> item;
success = (item % 7 == 0);
}
// 출력
if (success) {
cout << "The number " << item << " is divisible by 7." << endl;
}
else {
cout << "None of the number is divisible by 7." << endl;
}
return 0;
}
C++
복사