by 楓資27th程教們
一個不可忽視的存在--變數
a^2+2*a*b+b^2=(a+b)^2
x+y=4, x-y=2 x=3, y=2
y=f(x)=ax+b
a^2+b^2=c^2
...
int a = -2147483648;
char _b = 'b';
long long int c = 9223372036854775807;
float d = 3.1415926; //7位
double e = 3.141592653589793; //15位
...
(但是好棒棒的編譯器大哥其實會幫你用 粗體 或 不同顏色 標起來)
後面會講這個概念
型態 | 中文意思 | 英文字義 | 儲存空間(位元) | 數值範圍 |
---|---|---|---|---|
int | 整數 | Integer | 4 bytes/ 32 bits | -2^31~2^31-1 (10 位數) |
long long | 長整數 | long long integer | 8 bytes/ 64 bits | -2^63~2^63-1 (19 位數) |
float | 浮點數(小數) | floating point | 4 bytes/ 32 bits | 3.4E +/- 38 (7 位數) |
double | 倍精度浮點數 | double | 8 bytes/ 64 bits | 1.7E +/- 308 (15 位數) |
char | 字元(半形字) | Character | 1 byte/ 8 bits | 0~255(ASCII) |
bool | 布林(是非) | boolean | 1 byte/ 8 bits | false, true, 0~255 |
小數點後XX位
int num_1, num_2, num_3;
//宣告整數型, 分別叫num_1, num_2, num_3的變數
int num_4 = 3;
//宣告一個整數型, 叫num_4的變數, 並分配一個整數給它(賦值)
num_1 = 1; //賦值
cin>> num_2;
//輸入一個整數進num_2
num_3 = num_1 + num_2
cout<< num_1<<" "<< num_2<< " "<< num_3<< " "<<num_4;
//分別輸出值
Q: 要輸入己才能輸出"1 1 2 3"的費式數列??
A: 1
宣告 賦值 輸入/ 輸出
小學生就會的1+1=王田二 --運算子
int : ㄏㄚˋ,我才有的啦!
= : 賦值,把等號右邊的值指定或存取到左邊 的變數
if (我就爛 == true) -- 條件判斷
//語法
if(要判斷的條件){
//條件成立時要執行的指令
}
//例子
if(score>=60){
cout<<"pass";
}
//語法
if(要判斷的條件){
//條件成立時要執行的指令;
}
else{
//條件不成立時要執行的指令;
}
//例子
if(score>=60){
cout<<"pass";
}
else{
cout<<"fail";
}
//語法
if(條件1){
//條件1成立時要執行的指令
}
else if(條件2){
//不滿足條件1但條件2成立時要執行的指令
}
else if(條件3){
//不滿足以上條件但條件3成立時要執行的指令
}
. . .
else{
//以上條件皆不成立時要執行的指令
}
//例子
if(score==100){
cout<<"wow!!!";
}
else if(score>=80){
cout<<"excellent!!";
}
else if(score>=60){
cout<<"good!";
}
else{
cout<<"keep going~";
}
//語法
switch(變數名稱){
case 條件1:
//條件1成立時執行的指令
break;
case 條件2:
//條件2成立時執行的指令
break;
. . .
default:
//以上皆不成立時執行的指令
}
//條件只能為某個整數或字元,或者是整數或字元的區間
//例子(數字)
switch(score){
case 100:
cout<<"滿分";
break;
case 60 ... 99:
cout<<"及格";
break;
default:
cout<<"不及格";
}
//例子(字元)
switch(grade){
case 'A':
cout<<"90~100";
break;
case 'B':
cout<<"80~89";
break;
case 'C':
cout<<"70~79";
break;
case 'D':
cout<<"60~69";
break;
case 'E':
cout<<"0~59";
break;
case 'F' ... 'Z':
cout<<"error";
break;
}
一直一直一...直重複 --迴圈
while(condition){ //條件
statement; //內容
//do something...
}
while(1){
//do something...
}
無窮
for((宣告)初始化變數; 條件; 更新){
statement; //內容
//do something...
}
(int) i=0
i<5
i++
for(int i=0; i<5; i++){ //外層迴圈
for(int j=0; j>5; j++){ //內層迴圈
cin>> array[i][j];
}
}
巢狀
for(int i=0; i<5; i++){
if(i==3) break;
cout<< i<<" ";
}
//0 1 2
for(int i=0; i<5; i++){
if(i==3) continue;
cout<< i<<" ";
}
//0 1 2 4
#include<iostream>
using namesapce std;
int a=5;
int main(){
int x=1;
for(int i=0; i<3; i++){
cout<< i<< " "; //ok
cout<< x<< " "; //ok
cout<< a<< " "; //ok
}
cout<< i; //X
return 0;
}
老師你錯了 是從0開始不是1 --陣列
int a[10];
// 資料型態: 整數(陣列), 陣列名稱: a, 陣列大小: 10
// 沒有初始化的陣列
// 裡面也許長這樣 a = {-2147483648, 2147483657, ...}
double b[100] = {0.1, 0.05, 0.2};
// 資料型態: 浮點數(陣列), 陣列名稱: b, 陣列大小: 100
// 陣列值用大括號括
//除了初始化的3個數其他預設為0
char str[6];
// 資料型態: 字元(陣列), 陣列名稱: str, 陣列大小: 6
// 字元陣列會包含最後一個字元'\0', 因此開的大小要字數+1
// 但建議還是開大一點, 不開白不開, 你也不會少一塊肉
int a[6];
for(int i=0;i<=5;i++)
a[i]=i;
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] |
---|---|---|---|---|---|
1
0
5
4
3
2
int a[10];
cout<<a[100]<<endl;
cout<<a[1000]<<endl;
int n=2;
int a[n];
int a[5][2];
double b[7][1][2];
int a[3][3];
for(int i=0;i<3;i++){
for(int j=0;j<3;j++)
a[i][j]=i+j;
}
0 | 1 | 2 | |
---|---|---|---|
0 | |||
1 | |||
2 |
0
4
3
3
2
2
1
2
1
"逃離原意ing...\n" --跳脫字元
字元 | 意義 | 字元 | 意義 |
---|---|---|---|
\' | 單引號' | \t | 定位字元tab |
\" | 雙引號" | \b | 倒退backspace |
\\ | 反斜線\ | \n | 換行enter |
\0 | 空字元NULL | \a | 發出一聲警告 |
跟endl一樣,只是放的位置不同
#include<iostream>
using namespace std;
int main(){
cout<<" _\n";
cout<<" .\' `\'.__\n";
cout<<" / \\ `\'\"-,\n";
cout<<" .-\'\'\'\'--...__..-/ . | \\\n";
cout<<" .\' ; :\' \'. |\n";
cout<<" / | :. \\ o \\\n";
cout<<" ; \\\':. / ,-.__;.-;`\n";
cout<<" /| . \'--._ /-.7`._..-;`\n";
cout<<" ; | \' |`-\' \\ =|\n";
cout<<" |/\\ . -\' / / ; | =/\n";
cout<<" (( ;. ,_ .:| | / /\\ | =|\n";
cout<<" ) / `\\ | `\"\"`; / | | / / =/\n";
cout<<" | ::| | \\ \\ \\ \\ `--\' =/\n";
cout<<" / \'/\\ / ) |/ `-...-`\n";
cout<<" / | | `\\ /-\' /;\n";
cout<<" \ ,,/ | \\ D .\' \\\n";
cout<<" `\"\"` \\ nnh D_.-\'L__nnh\n";
cout<<" `\"\"\"`\n";
return 0;
}
"Hello word!!"--字元字串
char a='s';
cout<<a; //s
char b[7]="ZSISC";
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] |
---|---|---|---|---|---|---|
Z
C
S
I
S
\0
未知
strlen(s) | |
strcmp(s1,s2) | |
strcat(s1,s2) | |
strcpy(s1,s2) | |
strstr(s1,s2) |
指令
說明
回傳s1的長度
比較s1&s2的內容,一樣回傳0
將s2接到s1後面
將s2的值複製到s1上
回傳s2第一次出現在s1的位置
char a=65;
char b=48;
cout<<a;
//A
cout<<b;
//0
cout<<a+b;
//113
a=a+2;
cout<<a;
//C
char c[10]="ZSISC27";
cout<<c+2;
//ISC27;
string a="ZSISC";
cout<<a; //ZSISC
cout<<a[2]; //I
a[0] | a[1] | a[2] | a[3] | a[4] | a[5] | a[6] |
---|---|---|---|---|---|---|
Z
C
S
I
S
strlen(s) | s.length( ) or s.size( ) | |
strcat(s1,s2) | s1+s2 | |
strstr(s1,s2) | s1.find(s2,0) | |
strcpy(s1,s2) | s1=s2 | |
strcmp(s1,s2) | s1==s2 |
字串長度
字串串接
char
string
字串尋找
字串複製
字串比較