day07笔记
一.二维数组
一维数组:
int arr1[] = {1,2};
int arr2[] = {3,4};
二维数组:
int arr[3][2] = {{1,2},{3,4},{5,6}}; //3*2=6 三行六列
声明(行和列必须要写)
int arr[5][5];
double arr3[5][5];
//声明的时候同时进行初始化
int arr2[3][3] = {{'a','b'},{'a','b','c'},{'a','b'}};
int arr3[3][3] = { 'a','b','a','b' ,'a','b' };
int arr4[][3] = { 'a','b','a','b' ,'a','b' };
int arr5[][5] = { 'a','b','a','b' ,'a','b' };
数组名代表地址,第一行第一列元素的地址
printf("%p\n", arr2);//打印带一行第一列元素地址
printf("%p\n", &arr2[0][0]);//打印带一行第一列元素地址
printf("%p\n", arr[1]);//打印带二行第一列元素地址
printf("%p\n", &arr[1][0]);//打印带二行第一列元素地址
获取数组的长度
int rows = sizeof(arr1) / sizeof(arr1[0]);//等于行数
获取列数
printf("%p\n", arr2[0]);
int cells = sizeof(arr1[0]) / sizeof(arr1[0][0]);
printf("rows=%d,cells=%d\n", rows, cells);
给二维数组元素赋值,通过下标进行赋值
arr2[2][0] = 143;
arr2[1][1] = 10;
用数组进行冒泡排序
void buddleSort();
int main() {
int arr[] = { 1,54,24,34,18,14,9,75,147 };
int length = sizeof(arr) / sizeof(arr[0]);
buddleSort(arr, length); // 数组名做为参数,代表的是数组首元素的地址
for (int i = 0; i < length; i++) {
printf("%d\n", arr[i]);
}
}
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
void buddleSort(int arr[], int length) {
for (int i = 1; i < length; i++) { // 表示轮数
// 第轮比较的次数
for (int j = 0; j < length - i; j++) {
if (arr[j] > arr[j + 1]) {
swap(&arr[j], &arr[j + 1]);// 传址调用
}
}
}
}
二.操作符
1.%(取模) /(除以)
整数相除或取余的结果都为整数,%只能对整数取模
类型转换:
printf("%lf\n", num1 * 1.0 / num2);
2.<< >>
向左移动1位,移的二进制位。左移操作符:左边抛弃,右边补零
int temp = num << 1;
temp = temp << 1;
printf("%d\n",temp);//等于×2
右移:算术移位(除2) 右边丢弃,左边补符号位
num = num >> 2;
printf("%d\n", num);//等于除以2
3.^(按位异或) &(按位与) |(按位或)
异或:两值不等时取1否则0
与:两值同时为1结果才为1
或:一个值为1结果就为1
int temp = a;
a = b;
b = temp;
a = a ^ b;
b = a ^ b;
a = a ^ b;
printf("a=%d,b=%d\n",a,b);//输出a=3,b=5