2017年9月16日 星期六

C++ 入門筆記

#include<iostream>                     //引入必要工具iostream
using namespace std;                 //以後跟各位說,設置一個絕對領域避免被他人汙染,領域名稱std
int main()                                     //所有的C++一定要有一個主程式,程式的進入點
{
cout << "Hello" << endl;      //cout = c out = 輸出到螢幕
}                                                   //endl = 換行

----------------------------------------------------------------------------------------------------------------------------------------------

int num_1, num_2;              //宣告兩個名叫num_1和 num_2的整數
cin >> num_1 >> num_2     //由使用者輸入num_1和 num_2的值

----------------------------------------------------------------------------------------------------------------------------------------------

控制小數點
使用setprecision(),而括弧內放輸出位數,在使用之前要記得先打上#include<iomanip>舉例來說:
cout << setprecision(3) << 1.23456 << endl;
結果: 1.23
cout << setprecision(4) << 1.23456 << endl;
結果: 1.235 
//因四捨五入所以結果為1.235而非1.234

setprecision()前加上fixed後,setprecision()弧內放的就變小數點的位數,舉例來說:
cout << fixed << setprecision(1) << 1.23456 << endl;
結果: 1.2
cout << fixed << setprecision(3) << 1.23456 << endl;
結果: 1.235
//因四捨五入所以結果為1.235而非1.234

由於setprecision()會影響在他之後cout的輸出結果,如果不想被影響,可以加上
cout.unsetf( ios::fixed );舉例來說:
cout << fixed << setprecision(3) << 1.23456789 << endl;
cout << 1.23456789 << endl;
結果: 
1.235
1.235
cout << fixed << setprecision(3) << 1.23456789 << endl;
cout.unsetf( ios::fixed );
cout << 1.23456789 << endl;
結果: 
1.235
1.23

----------------------------------------------------------------------------------------------------------------------------------------------

多筆測資
cin 會傳值是否有讀到輸入值

以下是範例 
while( cin >> a >> b)
  cout << (a+b) << endl;

若a和b沒得到值
則會跳出while迴圈結束程式


----------------------------------------------------------------------------------------------------------------------------------------------

if判斷
if(判斷式)    
    cout << num_1/num_2-1 << "..." << num_1%num_2+num_2 << endl;    
else    
     cout << num_1/num_2 << "..." << num_1%num_2 << endl; 

----------------------------------------------------------------------------------------------------------------------------------------------

四捨五入、無條件進位、無條件捨去到整數位
四捨五入 : round()
無條件進位 : ceil()
無條件捨去 : floor()

----------------------------------------------------------------------------------------------------------------------------------------------

for迴圈
for(初始值 ; 判斷式 ; 遞增/遞減)
{
    敘述式;
    ... ... ...;
}
舉例如下, i 從 0 開始,只要 i 符合小於10 的條件就執行{ }內的程式碼,執行完後 i ++(就是 i + 1 的意思) ; = 1依舊符合小於10的條件,繼續執行{}內的程式碼
for(int i = 0; i <10 ; i++) 
{
    cout << i << endl;
}

----------------------------------------------------------------------------------------------------------------------------------------------

大整數運算
int 這個變數型態,記憶體大小為 32 bit ,可以儲存數值範圍為 -2³¹ 到 2³¹ - 1 的整數。
long long 這個變數型態是 64 bit 的,可以儲存數值範圍為 -2⁶³ 到 2⁶³ - 1 的整數,其值範圍為 -9,223,372,036,854,775,808 到 9,223,372,036,854,775,807。

----------------------------------------------------------------------------------------------------------------------------------------------

Switch
switch(判斷的值) { 
        case 10: 
        case 9: 
            cout << "得A" << endl; 
            break; 
        default: 
            cout << "得E(不及格)" << endl; 

    } 

----------------------------------------------------------------------------------------------------------------------------------------------

陣列
一維陣列 : int a[5] = {0};    //宣告陣列a長度為5,且數值都是0。
結果 : 0 0 0 0 0

二維陣列 : int a[5][2] = {0};
結果:
0 0 
0 0
0 0
0 0
0 0

陣列長度 sizeof()
int a[4];
sizeof(a);                       //結果: 16
sizeof(a)/sizeof(a[0]);    //結果: 4

----------------------------------------------------------------------------------------------------------------------------------------------

C++四捨五入到小數點第一位
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main() {
double square;                                 // 宣告一個double變數square
cin >> square;                                  // cin = 使用者輸入
square = square * 10 + 0.5;             // 把變數 *10 變整數 , +0.5讓>=0.5的小數點進位
square = floor(square);                    // 無條件捨去到整數位
square = square  / 10;                     // /10 變成原本的數
cout << fixed << setprecision(1) << square << endl;
}

----------------------------------------------------------------------------------------------------------------------------------------------

C++絕對值
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;

int main() {
int num;                                 // 宣告一個double變數square
cin >> num;                                   // cin = 使用者輸入
if(num < 0)
{
num = abs(num);
}
cout << num << endl;
}

----------------------------------------------------------------------------------------------------------------------------------------------

英文字母轉大寫或小寫
#include <iostream>

#include <stdio.h>
#include <ctype.h>
using namespace std;

int main() {
char small = 'g';
cout << "small = " << small << endl;
cout << "small的大寫 = " << (char)toupper(small) << endl;

char big = 'A';
cout << "big = " << big << endl;
cout << "big的小寫 = " << (char)tolower(big) << endl;
return 0;
}
結果 : 
small = g
small的大寫 = G
big = A
big的小寫 = a

----------------------------------------------------------------------------------------------------------------------------------------------

指標
#include <iostream>
using namespace std;

int main() {
int a= 10;
int *p;           //宣告一個整數變數p為指標,只儲存位址
p = &a;         //把變數a的位址儲存在變數p內
cout << p << endl;
return 0;

}
結果 : 
0x7ffc0f63548c
說明 













----------------------------------------------------------------------------------------------------------------------------------------------

搜尋字元
#include <iostream>
#include <cstring>
using namespace std;

int main() {
char s[] = "I have a dream"; 
        char t = 'a'; 
        char *test;                  //宣告一個字元變數指標test
        test = strchr(s, t);       //搜尋在陣列s中搜尋字元t,並存入test裡
        cout << test << endl;
return 0;
}
結果 : 
ave a dream

----------------------------------------------------------------------------------------------------------------------------------------------

關鍵字 : C++, 入門, 使用者輸入, 輸出, 控制小數點, 多筆測資, if判斷, 四捨五入, 無條件進位, 無條件捨去, for迴圈, 大整數運算, switch, 陣列, 絕對值, 英文字母轉大寫或小寫, 指標, 搜尋字元

沒有留言:

張貼留言