C的学习
C的学习
z果子
越努力越幸运
展开
-
数组和指针
“你有一个箱子,里面有你想要的东西,你用钥匙打开箱子拿到东西,这个钥匙就是一个一级指针。如果,这个钥匙不能直接打开你的箱子,但可以打开存放开你这个箱子钥匙的箱子,这个钥匙就是一个二级指针”。一级指针是一个存放地址的变量。二级指针是一个存放一级指针的地址的变量。 int a = 10; int *p = &a; int **p1 = &p1; printf...原创 2019-06-21 15:45:15 · 305 阅读 · 1 评论 -
C语言中的操作符
选择排序法以选择和交换来实现排序。首先在未排序序列中找到最小(大)数据,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)数据,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完成。选择排序法,对n 个数据进行排序时,无论数据是否有序,都要进行n-1补中间过程。平均速度为o(n^2),最坏情况o(n^2)效率不是很高。void SelectionSort(int *a...原创 2019-09-12 20:37:29 · 311 阅读 · 0 评论 -
等式成立,计算是在几进制下的运算方法
**1.式子7*15=133成立,用得是(8)进制(一般来说出选择题,根据排除法)假设使用的是n进制方法1:(7n^0)+(n^1+5n^0)=n^2+3n^1=3n^0.化简计算的到n2.式子456*567=150216成立,则使用的(18)进制。方法2:(6*7)%n=6(乘数和被乘数的个位乘积得到积的个位)(若是不懂,可以套用于十进制)6*6+5*7=71 (6*7)/n=m(通过...原创 2019-09-02 17:23:29 · 1357 阅读 · 0 评论 -
找字符串中第一个只出现一次的字符。
方法一(不要求时间复杂度,只要求做出来)两次循环嵌套,遍历字符串。int find_one(char str[], int len){ int i = 0; int j = 0; int count = 0; for (i = 0; i < len; i++) { for (j = 0; j < len; j++) { if (str[i] == str[...原创 2019-09-02 09:22:45 · 380 阅读 · 0 评论 -
利用位运算符进行的几种经典操作
1.判断一个数奇数还是偶数int main(){ int a = 18; if ((a & 1) == 1) { printf("该数是奇数\n"); } else { printf("该数是偶数\n"); } system("pause"); return 0;}2.不创建临时变量,实现两个数的交换,用位运算操作符。int main(){ in...原创 2019-06-18 11:19:13 · 291 阅读 · 0 评论 -
哦豁,看一下sizeof和strlen
sizeof和strlen的区别1.sizeof是操作符,strlen是库函数2.sizeof的返回值是size_t,是无符号的,保证能容纳建立的最大对象的所占内存字节大小typedef unsigned int size_tsize_t是无符号的,并且与平台无关,表示0-MAXINT的范围size_t是标准规定的一个同义词,它的定义放在stddef.h里面,不同的环境下,可以是typedef unsigned size_t;也可以是typedef unsigned long size_原创 2020-11-25 09:12:07 · 431 阅读 · 2 评论 -
指针,数组中常见的问题
目录数组和指针的区别一维整型数组sizeof的基本用法二维整形数组字符数组数组和指针的区别(1) 指针保存的是数据的地址。数组是用来保存数据的。(2) 指针访问数据 是通过数据的地址进行解引用,间接访问的。数组访问数据是直接的。(3) 指针通常用于动态数据结构数组用于存放固定数目而且类型相同的数据。(4) 指针通常指向匿名数据;数组通常存放已知的。一维整型数组int main(){ int a[] = { 1, 2, 3, 4 }; printf("%d\n", sizeo原创 2020-11-24 19:07:08 · 457 阅读 · 1 评论 -
自定义类型、结构体,枚举类型,联合类型
结构体结构体类型的声明结构的自引用结构体变量的定义和初始化结构体内存对齐结构体传参结构体实现位段枚举枚举类型的定义枚举的优点枚举的使用联合联合类型的定义联合的特点联合大小计算结构体的声明struct tag{ member_list;//成员列表,可以有多种类型}variable_list;//结构体变量列表struct Point{ int x; int y;}p1;//声明结构体的同时定义了结构体变量匿名结构体struct{原创 2020-09-07 19:40:07 · 213 阅读 · 0 评论 -
选择排序,堆排序
选择排序:第一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,然后再从剩余的未排序元素中寻找到最小(大)元素,然后放到已排序的序列的末尾。以此类推,直到全部待排序的数据元素的个数为零。选择排序是不稳定的排序方法。void select_sort(int arr[], int len){ int min = 0; int i = 0; int j = 0; int tmp = 0; for (i = 0; i原创 2020-08-07 11:32:53 · 111 阅读 · 0 评论 -
shell排序
shell排序(希尔排序),是对插入排序的一个改装。思想:void ShellSort(int *a, int len){ int temp = 0; int i = 0; int j = 0; int r = 0; //分解数组为多个序列(分组的依据) for (i = (len / 2); i >0; i = i / 2) { for (j = i; j < ...原创 2019-09-17 10:35:10 · 797 阅读 · 1 评论 -
插入排序法
插入排序法是按照比较和插入来实现的。流程如下:1.首先对数组前两个元素进行从小到大排序(从大到小)排序。2。将第三个数与前两个排好的数进行比较,插入合适的位置。3.将第四个数插入已经排好序的前三个数中。4.不断重复。排好为止。插入排序算法在对n个数字排序的时候,无论原数据是否有序,都要进行n-1次的中间排序。平均速度o(n^2),最坏情况o(n^2)void Insertionso...原创 2019-09-14 21:55:27 · 382 阅读 · 0 评论 -
快速排序
快速排序:冒泡排序的升级,也是通过就比较和交换来实现。通过一趟排序将要排序的数据分割成两部分,其中一部分的所有数据都要比另一部分的所有数据小,然后在按照此方法对着两个部分的数据分别进行快速排序。算法过程:(1)假设要求序列递增,首先设定一个基准值,通过该基准值将数组分成左右两部分。(2)将大于或等于基准值的数据集中到数组右边,小于基准值的数据集中到数组的左边。此时,左边部分中各元素都小于或等于基准值,而右边部分中各元素都大于或等于基准值。(3)然后,左边和右边的数据可以独立排序。对于左侧的数组数据,原创 2020-08-05 19:30:07 · 244 阅读 · 0 评论 -
冒泡排序
冒泡排序是所有排序算法中最简单,最基本的一种。思路就是交换排序,通过相邻数据的交换来达到排序的目的。对n个数进行排序,无论其是否有序,都要进行n-1步的中间排序。平均速度为o(n^2),最坏速度o(n^2)代码实现:#include<stdio.h>#include<string.h>#include<stdlib.h>void BubbleSort...原创 2019-09-11 21:22:45 · 247 阅读 · 0 评论 -
c语言中的关键字static,extern
static:(修饰变量和函数)1.static修饰局部变量(静态局部变量)改变了局部变量的生命周期。结果:解析:局部变量 编辑器默认初始化为任意值,存储于栈空间中的,当出了作用域(函数体花括号)后,变量就会立即被释放,其生命周期结束。若其被static修饰,编辑器默认会初始化为0,并且静态局部变量存储于进程的全局数据区,即使函数返回,他的值也会保持不变,改变了局部变量的生命周期。2...原创 2019-11-12 12:08:19 · 179 阅读 · 0 评论 -
c语言中的格式字符
**c语言的格式字符**格式说明由“%”和字符组成,作用是将输出的数据转化为指定的格式输出eg:格式字符有 d,o,x,u,c,s,f,e,g%d,%i :以有符号十进制整形输出(%i不常用)%-2d数据输出左对齐。%ld:以长整型输出%o:以无符号八进制整型输出%e:以指数形式输出实数%x:以无符号十六进制整型输出,或者输出字符串的地址(当%X格式输出,就是以大写字母输出)...原创 2019-06-17 20:56:48 · 7548 阅读 · 1 评论