一、数据类型及字节
下表为数据类型对应字节数
int | 4 |
---|---|
char=bool | 1 |
float | 4 |
double | 8 |
long | 4 |
short | 2 |
long long | 8 |
long double | 8/12/16* |
注:*不同编译器分配的空间不同
二、数组
Eg:
int ar[10]={1,2,3,4,5,6,7,8,9,10};
sizeof(ar)=40;
数组下标从0开始,上例ar[1]=2;
三、
四、代码逻辑错误
int main()
{
for(int i=0;i<n;++i)
{
if(x) return i;
else return 0;
}
}
上述代码无论if条件是否成立,都有返回值,执行一次后循环无法继续;应改为:
int main()
{
for(int i=0;i<n;++i)
{
if(x) return i;
else;
return 0;
}
}
五、
# include<iostream>
using namespace std;
int main()
{
assert(br != NULL);
int* table = new int[n + 1];
for (int i = 0; i <= n; ++i) { table[i] = 0; }
int i = 0;
while (i < n)
{
int tmp = rand() % 100 + 1;
if (table[tmp] == 0)
{
table[tmp] = 1;
br[i] = tmp;
++i;
}
}
delete[] table;
六、冒泡排序
BubbleSort(ar,n)
{ int temp=0;
for (int i = 1; i <= n; ++i)
{
for (int j = 0; j < n; ++j)
{
if (ar[j] < ar[j - 1])
{
temp = ar[j];
ar[j] = ar[j - 1];
ar[j - 1] = temp;
}
else;
if (temp == 0) break;
else;
}
}
}
七、交换函数
int swap(int *a,int *b)
{ int temp;
temp = *a;
*a = *b;
*b= temp;
}
- *能起到的作用有
1.乘法
2.声明指针
3.解引用
八、进制转换
1.十进制与二进制.
(1)二进制转换为十进制
Eg. 将二进制数10110转换为十进制数
10110(2)=1 * 24 + 0 * 23+ 1 * 22 +1 * 21+0 * 20=22(10)
(2)十进制转换为二进制
Eg.将十进制数103转换为二进制数
首先,已知十进制数103介于26=64和27=128之间,列出如下表格,并在64栏填入1;
然后得出103-64=39,因39介于25=32与26=64之间,那么在32栏处填入1;
接下来计算39-32=7,因7介于22=4与23=8之间,那么在4栏处填入1;
以此类推,并在空栏处用0进行填充,得
64 | 1 |
32 | 1 |
16 | 0 |
8 | 0 |
4 | 1 |
2 | 1 |
1 | 1 |
因此,十进制数103转换为二进制数为1100111。
2.八进制
(1)八进制转换为十进制:原理同二进制。
(2)二进制转换为八进制:每三位二进制数就是一位八进制数。
Eg. 1 100 111 = 1 4 7
3.十六进制
(1)十六进制转换为十进制:原理同二进制。
(2)二进制转换为十六进制:每四位二进制数就是一位十六进制数。
Eg. 110 0111 = 6 7
4.进制格式控制
%o 八进制
%x 十六进制
0x 以0x开头的为十六进制
0 以0开头的为八进制
九、二进制计算
& | 按位与 | 碰见0是0 |
丨 | 按位或 | 碰见1是1 |
^ | 按位异或 | 不一样就是1 |
~ | 0变1,1变0 |
保留计算:用按位与
Eg. 1000 1010与0000 0110=1000 0010
函数
int Get1Bit(int x)
{
int sum = 0;
while(x!=0)
{
x = x & (x - 1);
sum += 1;
}
}