把內存想象成長帶,帶子上有許多方格,每一個方格有8位(8bit)ios
2^10 = 1024c++
1B = 8 bide
1KB = 1024Byte學習
MB、GB、TB、PB……ui
分類:spa
基本型 int(32bit)code
短整形 short/short int(16bit)對象
長整形 long/long int(32bit)ip
C標準沒有具體規定以上各種數據所佔的內存字節數,只要求long不短於int,short不長於int內存
sizeof運算符,用於計算某種類型的對象在內存中所佔的字節數
根據有符號、無符號,在前加signed和unsigned便可,若是不標註,程序默認爲有符號數
存儲:
負數補碼的求法:
打印一個數的十六進制表示:
int a = -123; cout<<hex<<a<<endl;
打印一個數的八進制表示:
int a = -123; cout<<oct<<a<<endl;
打印一個數的十進制表示:
int a = -123; cout<<dec<<a<<endl;
0x表示16進制數
03表示8進制數
最大的整數:無符號大約42億,有符號大約21億
最小的整數:無符號0,最小-21億(當最高位是1,其餘位是0時,最高位既表示負號,也表示整數最高位1)
結論:用int就好了
使用須知:在定義變量時,必定要緊接着賦初值。
分類:
cout<<setprecision(10)<<a<<endl; //setprecision()設置精度
存儲:
1位符號位+8位指數位(exponent)+23位二進制小數位(fraction)
(把數字都轉換成科學計數法)
float a = 0; a = 123456.789e5; // 科學計數法,e5=10^5
使用須知:
避免將一個很大的數和很小的數直接相加or相減,不然就會「丟失」小的數。
const double PI = 3.1415926
類型:
學習數據成分的關鍵是瞭解但不陷入細節,等用到時再細究它。
#include <iostream> using namespace std; int succedent[300]; //用於保存一個猴子的後一位是誰 int precedent[300]; //用於保存一個猴子的前一位是誰 int main() { int n,m; while (true) { cin >> n >> m; if( n == 0 && m == 0) break; for (int i = 0; i < n - 1; i++) { succedent[i] = i + 1; precedent[i + 1] = i; } succedent[n-1] = 0; precedent[0] = n-1; int current = 0; while (true) { for (int count = 0; count < m - 1; count++) current = succedent[current]; int pre = precedent[current]; int suc = succedent[current]; succedent[pre] = suc; precedent[suc] = pre; if(pre == suc) { cout<< pre+1 << endl; break; } current = suc; } } return 0; }
#include <iostream> using namespace std; int main() { int n; cin >> n; int sumn = 0, sumd = 1; while (n--) { int num, deno; char slash; cin >> num >> slash >> deno; sumn = sumn*deno + num*sumd; sumd = sumd*deno; } int a = sumd, b = sumn, c; while(a != 0) { //歐幾里得法 c = a; a = b % a; b = c; } int gcd = b; sumd /= gcd; sumn /= gcd; if(sumd > 1) cout << sumn << '/' << sumd<<endl; else cout<< sumn <<endl; return 0; }
#include <iostream> #include <iomanip> using namespace std; int main() { int numAll = 0, numA = 0, numB = 0, numC = 0,numD = 0; cin >> numAll; for (int i = 0; i < numAll; i++) { int temp; cin >> temp; if(temp <= 18) numA++; else if(temp >= 19 && temp <= 35) numB++; else if(temp >= 36 && temp <= 60) numC++; else numD++; } cout<<"1-18: "<<fixed<<setprecision(2)<<(double)numA/(double)numAll*(double)100<<"%"<<endl; cout<<"19-35: "<<setprecision(2)<<(double)numB/(double)numAll*(double)100<<"%"<<endl; cout<<"36-60: "<<setprecision(2)<<(double)numC/(double)numAll*(double)100<<"%"<<endl; cout<<"60-: "<<setprecision(2)<<(double)numD/(double)numAll*(double)100<<"%"<<endl; return 0; }
#include <iostream> using namespace std; int main() { int score; cin >> score; if(score <= 100 && score >= 95) cout<<"1"<<endl; if(score < 95 && score >= 90) cout<<"2"<<endl; if(score < 90 && score >= 85) cout<<"3"<<endl; if(score < 85 && score >= 80) cout<<"4"<<endl; if(score < 80 && score >= 70) cout<<"5"<<endl; if(score < 70 && score >= 60) cout<<"6"<<endl; if(score < 60 ) cout<<"7"<<endl; return 0; }
#include <iostream> using namespace std; int main() { //從最大的數開始逐個尋找並逐個刪除,直到找到第k個 int n,k,index,temp = 0; cin>>n>>k; int a[n]; for (int i = 0; i < n; i++) { cin>>a[i]; } for (int i = 0; i < k; i++) { for (int j = 0; j < n; j++) { if(a[j] > temp) { temp = a[j]; index = j; } } a[index] = 0; if(i == k-1) cout<<temp<<endl; else temp = 0; } }
#include <iostream> using namespace std; int main() { int num,n100,n50,n20,n10,n5,n1; cin>>num; n100 = num / 100; num -= n100*100; n50 = num / 50; num -= n50*50; n20 = num / 20; num -= n20*20; n10 = num / 10; num -= n10*10; n5 = num / 5; num -= n5*5; n1 = num; cout<<n100<<"\n"<<n50<<"\n"<<n20<<"\n"<<n10<<"\n"<<n5<<"\n"<<n1<<endl; return 0; }