by Sean. 2018 spring.
cout<<變數名稱
cout<<"字串內容"
cin>>變數名稱
int
(4 byte = 32 bit)long long
(8 byte = 64 bit)float
(4 byte)double
(8 byte)long double
(16 byte)char
string
bool
變數型態 變數名稱;
變數型態 變數名稱 = 初始值;
最好養成給定初始值的習慣
cout<<變數
變數名稱 = 指派值
A=A+1
-
A+=1
-
A++
-
++A
A=A-1
-
A-=1
-
A--
-
--A
A=A/2
-
A/=2
A=A*3
-
A*=3
int a=1,b=3;
b+=a++;
a=??? b=???
int A,B;
A>B
,若 A 確實大於 B 則此式代表 True,反之為 FalseA<B
,若 A 確實小於 B 則此式代表 True,反之為 FalseA==B
,若 A 確實等於 B 則此式代表 True,反之為 False。
注意 : 盡量避免進行兩個小數的 等於 關係運算
A>=B
,若 A 確實大於或等於 B 則此式代表 True,反之為 FalseA<=B
,若 A 確實小於或等於 B 則此式代表 True,反之為 FalseA!=B
,若 A 確實不等於 B 則此式代表 True,反之為 False
bool A,B;
AND
A&&B
&& | 0 | 1 |
---|---|---|
0 | 0 | 0 |
1 | 0 | 1 |
OR
A||B
|| | 0 | 1 |
---|---|---|
0 | 0 | 1 |
1 | 1 | 1 |
NOT
!A
if(condition_1){
do something...
}else if(condition_2){
do something...
}else if(condition_3){
do something...
}else{
do something...
}
switch(char or int){
case case_1:
...
break;
case case_2:
...
break;
default:
...
}
for(一開始做的事;要繼續執行的條件;最後要做什麼事){
要做的事
}
for(int i=0;i<10;i++){
for(int j=0;j<10;j++){
cout<<i*j<<" ";
}
}
while(condition){
do something...
}
do{
do something...
}while(condition);
會跳離開「最近」的一個迴圈
for(...){
for(...){
if(condition){
break;
}
}
}
int a;
while(cin>>a){
cout<<a+1;
}
//資料型態 陣列名稱[陣列長度];
int score[20];
int score[5]={50,60,80,90,100}; //陣列內容為[50,60,80,90,100]
int score2[5]={70,95}; //內容為[70,95,0,0,0]
int score3[5]={0}; //內容為[0,0,0,0,0]
int size;
cin>>size;
int* score;
score=new int[size];
int* 代表的是一個記憶體位置,是一種型態。此型態代表的就是一個存放 int 的記憶體位置
score = new int[size] 則表示從 score 這個記憶開始配置 size 個 int 空間
從 0 開始數!!
//陣列名稱[第幾格]
score[4]=77;
cin>>score[3];
cout<<score[0];
int a[2][3];
int a[2][3]={1}
1 | 0 | 0 |
---|---|---|
0 | 0 | 0 |
int a[2][3]={1,2}
1 | 2 | 0 |
---|---|---|
0 | 0 | 0 |
int a[2][3]={{1,1},{2,2}}
1 | 1 | 0 |
---|---|---|
2 | 2 | 0 |
int x,y;
cin>>x>>y;
int** a;
a = new int*[x];
for(int i=0;i<x;i++){
a[i]=new int[y];
}
int** 代表的是一個記憶體位置,是一種型態。
此型態代表的就是一個存放「int 的記憶體位置」的位置
a = new int*[x] 則表示從 score 這個記憶開始配置 x 個 int * 空間
for 迴圈則是讓每個型態為 int * 的陣列,都配置一個長度是 y 的 int 空間
從 0 開始數!!
//陣列名稱[第幾格]
a[0][2]=77;
cin>>a[1][2];
cout<<a[0][1];
如果 cout<<a[0] 會怎樣?
因為最外層的型態是陣列位址,所以只會印出位址!
char a='c';
cout<<a;
cin>>a;
a='#';
char a = 'A';
int b=65;
cout<<(int)a<<endl; //輸出65
cout<<(char)b<<endl; //輸出a
利用字元距離的性質! 與字元’0’相減即可。
char c='7';
cout<<'7'=0; //輸出55
cout<<'7'-'0'; //輸出7
char a[1000];
cin>>a;
scanf("%s",&a);
cout<<a;
string a="hello world";
cin>>a;
cout<<a;
string a="apcs";
cout<<a[3]; //輸出 s
使用 cin 時要特別注意空格的處理
string a;
getline(cin,a);
字串名稱.length()
字串1=字串2+字串3;
b.assign(a,從哪個字元開始,取幾個字元);
b.append(a,從哪個字元開始,取幾個字元);
a.find(b,n);
string::npos
a.insert(n,b);
回傳型態 函式名稱(參數1型態 參數1名稱,...){
函式黑盒子的運作程式碼
return 某個答案 //此答案型態必須跟所宣告的回傳型態相同。若回傳型態是void,則可忽略這行
}
例如
int adds(int a,int b,int c){
int ans=a+b+c;
return ans;
}
int main(){
int a=1,b=2,c=3;
cout<<adds(c,a,b); //輸出 6
}
function 的實作 (implement) 或宣告 (declare) 一定要在呼叫 function 的前面
錯誤範例,無法編譯
int main(){
int a=1,b=2,c=3;
cout<<adds(c,a,b); //輸出 6
}
int adds(int a,int b,int c){
int ans=a+b+c;
return ans;
}
可以改成這樣
int adds(int,int,int);
int main(){
int a=1,b=2,c=3;
cout<<adds(c,a,b); //輸出 6
}
int adds(int a,int b,int c){
int ans=a+b+c;
return ans;
}
不斷層層呼叫自己的 funciton,直到某次滿足條件 return 了之後,才會層層 return 得到答案
例如,一個計算次方的 function,其數學式為
遞迴 function 可寫成
int power(int base,int pow){
if(pow==0){
return 1;
}else{
return(base*power(base,pow-1));
}
}