20210930_C++_공부기록
- 수학함수 ( pow(), sqrt(), rand(), min, max, abs )
- 문자 데이터 유형
- ASCII 코드
- 형변환
- 문자 - 산술연산자, 문자비교
- 문자함수
- 이스케이프 시퀀스
- string
- 문자열 - 첨자 연산자, 연결, 비교, 입력
- 콘솔 출력 형식 (setprecision, fixed, setw-left,right)
c에는 기본 데이터 유형이 "4가지"가 있다.
1. 정수형
2. 실수형
3. bool
4. char ← 오늘 배우는 내용
1. 수학함수
일반적인 수학적 기능을 수행하기 위해 <cmath> <cstdlib> <algorithm> 헤더에서 유용한 함수를 제공함
<cmath>
▶pow(a,b) 함수는 지수 계산을 한다
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
cout << pow(2.0, 3) << endl;
return 0;
}
//8 (2의 3제곱)
▶sqrt(x) 함수는 x의 루트값을 반환한다.
#include <cmath>
using namespace std;
int main()
{
cout << sqrt(4) << endl;
return 0;
}
//2
<cstdlib>
▶rand() 함수는 0 ~ 32767(short함수의 max) 사이의 임의의 정수를 발생시킨다.
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
int num = rand() % 10; // 10으로 나누면 나머지가 0~9이기 때문에 0~9사이의 임의의 정수 발생
}
<algorithm>
▶min, max 함수는 두 수 중 최소값과 최대값을 반환
▶abs 함수는 절댓값을 반환
2. 문자 데이터 유형 char
- char는 하나의 문자를 표현 ( 1byte )
- 문자는 양쪽에 '작은 따옴표'를 기입
- 이진수만 읽는 컴퓨터 내부에 저장하기 위해 아스키코드의 숫자를 내부적으로 저장
*한글은 문자의 배열이나 string을 사용한다.
char letter = 'A';
char numChar = '4'; //'4'도 문자이다
char와 숫자 유형간의 형변환
char c = 65;
cout << c; // A 출력
char c = 65.26; //실수값이 형변환 할 때는, 실수가 정수로 먼저 변환. 그리고 char로 변환
cout << c; // A 출력
int i = 'A';
cout << i; // 65출력
문자에 대한 산술연산자
-char 유형은 내부적으로 바이트 크기의 정수이므로 모든 숫자연산은 char 연산에 적용될 수 있다.
-char 피연산자는 다른 피연산자가 숫자 도는 문자이면 자동으로 숫자로 형변환 된다.
int i= '2' + '3'; //'2'가 아스키 코드 50
cout << "i is " << i << endl; // 50+51 이므로 101 출력
int j = 2 + 'a';
cout << "j is " << j << endl; //'a'는 97이므로 정수형 j는 99 출력
cout << j << static_cast<char>(j) << endl; //아스키코드 99에 해당하는 'c'출력
문자 비교와 테스트
- ASCII 코드로 문자를 관계 연산자를 사용하여 비교 가능
'a' < 'b' // 거짓. 'a'는 97 'b'는 98
3. 문자함수
<cctype> 헤더파일에는 문자를 테스트하고 변환하는 몇가지의 함수가 포함되어 있다.
문자함수 (실습1)
#include <iostream>
#include <cctype>
using namespace std;
int main()
{
cout << "문자를 입력하시오: ";
char ch;
cin >> ch;
if (islower(ch))
{
char upperch = toupper(ch);
cout << "입력한 문자는 소문자 " << ch << endl;
cout << "대문자로 바꾸면 " << upperch << endl;
}
else if (isupper(ch))
{
cout << "입력한 문자는 대문자 " << endl;
cout << "소문자로 바꾸면 " <<
static_cast<char>(tolower(ch)) << endl;
}
else if (isdigit(ch))
{
cout << "입력한 문자는 숫자 " << ch << endl;
}
return 0;
}
//문자를 입력하시오: A
//입력한 문자는 대문자
//소문자로 바꾸면 a
이스케이프 시퀀스
특수문자를 표현하기 위해 사용
역슬래쉬 + 문자
4. string 유형
문자열 ○
기본타입 ×
class ○
- 문자열을 표현하기 위함
- string 유형을 객체유형이며, 행당변수를 선언함으로써 실제 객체가 선언
- <string> 헤더파일에 정의된 클래스
sring 유형 _ string인스턴스
함수 | 기능 |
length() | 문자열 내 문자의 수를 반환 |
size() | length() 와 동일 |
at(index) | 문자열에서 지정된 인덱스의 문자를 반환 |
#include <iostream>
#Include <string>
using namespace std;
int main()
{
string msg = "ABCD";
cout << msg.length() << endl; // 4출력
cout << msg.at(0) << endl; // A출력
string s = "bottom";
cout << s.length(); //6출력
cout << s.at(1); // o 출력 (0부터 시작하니까)
//문자열 첨자 연산자
s[0] = 'P'; //문자 P를 끌어옴
cout << s[0]; // P출력 at대신에 인덱스로 쓸 수 있음
}
문자열 연결&비교
//증강 += 연산자도 문자열 연결에 사용할 수 있다.
string msg = "programming";
msg += "C is fun";
cout << msg << endl; //programming C is fun
//두 개의 문자열을 비교하기 위해서 관계연산자를 사용한다.
string s1 = "ABC";
string s2 = "ABE";
cout << (s1 == s2) << endl; // 0출력 (거짓)
문자열 입력
getline() 함수 -> 공백을 포함하고 있는 문자열을 받기 쉬움
getlind(어디에서, 어디로, 어디까지) -> ex. getline(cin, city, '\n')
알파벳 순으로 화면에 출력하기 (실습2)
#include <iostream>
#include <string>
using namespace std;
int main()
{
string city1, city2;
cout << "Enter the first city: ";
getline(cin, city1);
cout << "Enter the second city: ";
getline(cin, city2);
cout << "The cities in alphabetical order are ";
if (city1 < city2)
cout << city1 << " " << city2 << endl;
else
cout << city2 << " " << city1 << endl;
return 0;
}
//Enter the first city: los angeles
//Enter the second city: new york
//The cities in alphabetical order are los angeles new york
5. 콘솔 출력 형식
▶setprecision(n)
단독적으로 쓰일 때 : 실수에서 표시될 전체 자릿수를 지정
n이상이면 자르지 않고 그상태로 둔다.
변경될 때까지 유효한 상태
▶fixed 조종자
단독적으로 쓰일 때 : 과학적 표기법을 사용하지 않고 디폰트값으로 소수점 이하 6자리까지 나타냄
▶ fixed + setprecision(n)
연결시키면 소수점 이하의 자리수를 지정할 수 있음
▶setw 조종자
최소 열의 수를 지정할 수 있다.
setprecision(n)과 다르게 다음 출력에만 유효하다
지정된 폭보다 더 많은 공간이 필요할 때는 폭이 자동으로 증가된다.
출력하기 (실습3)
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double grade = 3.500;
cout << setw(12) << "학과:" << setw(15) << "컴퓨터공학" << endl;
cout << setw(12) << "학점:" << setw(15) << fixed << setprecision(1) << grade << endl;
cout << setw(12) << "이름:" << setw(15) << "\"홍길동\"" << endl;
return 0;
}
/*
학과: 컴퓨터공학
학점: 3.5
이름: "홍길동"
*/
'School Study > 2021-2' 카테고리의 다른 글
[week 07] C++ 복습_5장 반복문 (2) (0) | 2021.11.26 |
---|---|
[week 06] C++ 복습_5장 반복문 (1) (0) | 2021.11.26 |
[week 04] C++ 복습_3장 선택문 (2) (0) | 2021.10.16 |
[week 03] C++ 복습_3장 선택문 (1) (0) | 2021.10.07 |
[week 02] C++ 복습_2장 기본 프로그래밍 (0) | 2021.09.30 |