day07c笔记

文章介绍了C语言中二维数组的声明、初始化以及如何通过指针获取数组的地址和长度。此外,还讲解了冒泡排序算法的应用,并展示了如何使用基本操作符如%、<<、>>、^、&和|进行算术和位操作。最后,通过交换变量的按位异或技巧展示了C语言中的高效编程实践。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值