把内存想象成长带,带子上有许多方格,每一个方格有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; }