C语言
文章平均质量分 55
WuDi_Quan
一步一脚印 付出总有回报
展开
-
时间复杂度和空间复杂度
时间复杂度和空间复杂度时间复杂度:同一问题可用不同算法解决,而一个算法的质量优劣将影响到算法乃至程序的效率。算法分析的目的在于选择合适算法和改进算法。计算机科学中,算法的时间复杂度是一个函数,它定性描述了该算法的运行时间。这是一个关于代表算法输入值的字符串的长度的函数。时间复杂度常用大O符号表述,不包括这个函数的低阶项和首项系数。使用这种方式时,时间复杂度可被称为是渐近的,它考察当输入值大...原创 2018-05-25 22:02:47 · 171 阅读 · 0 评论 -
变量的生命周期和作用域
变量的生命周期和作用域内存区域的划分:变量的生命周期和作用域:放大:全局变量:定义在函数外部的变量(默认值为0)static:静态,值可以变,主要用于修饰函数 //本函数只能被本文件中其他函数使用局部变量:定义在函数内部的变量,包括形参(默认值为随机值)#include “Max.h”先找自己...原创 2018-05-25 23:08:16 · 5864 阅读 · 0 评论 -
数组首元素不同应用下的意义
数组首元素不同应用下表示的意义不同对于一个数组int arr[10]={1,2,3,4,5,6,7,8,9,10};这里我们输出 arr,&arr,&arr[0]三个是相等的可实际效果应该是不同的我们先来看arr+1和 &arr+1这里可以看到 arr+1 只加了4个字节而&arr+1 加了整整...原创 2018-05-27 15:55:32 · 198 阅读 · 0 评论 -
自定义数据类型(结构体)
自定义数据类型(结构体)//struct + 结构体名称例如:struct Student{char name[20];int age;//struct Student*p;可以定义一个包含自身的指针//struct Student h;//error 不可以定义一个包含自身的指针}//自定义数据类型,定义完成后,其和内置类型一样使用。//比如和 in...原创 2018-05-30 00:28:07 · 2834 阅读 · 0 评论 -
结构体内存对齐
结构体内存对齐//结构体大小,存在内存对齐问题例如:①:我们先定义一个结构体A,并将其初始地址设为100我们普通认为,其内存申请应该这样申请,a先申请1个字节大小空间,b再申请4个字节大小空间,结构体A 共5个字节。如图:而实际情况却非如此:那我们来看看结构体真正的内存申请情况:因为计算机读取数据时,一般标准化4个4...原创 2018-05-31 17:09:56 · 407 阅读 · 0 评论 -
typedef
typedef//typedef:类型定义,给类型起外号(别名)typedef unsigned long long int uint64;//大小8字节 表示64位无符号整数typedef unsigned long int uint32;==typedef unsigned int uint32;//大小4字节 表示32位无符号整数一:之前我们学过一个宏定...原创 2018-05-31 22:34:43 · 227 阅读 · 0 评论 -
C语言---求n的阶乘后面有多少个连续的0
C语言---求n的阶乘后面有多少个连续的0题目描述:给定一个正整数n,返回n的阶乘尾部连续0的个数。例如:(5,5*4*3*2*1=120,则返回1),(10,10*9*8*7*6*5*4*3*2*1=3628800,则返回2)题目分析:首先拿到这道题,直接可以想到最简单的方法就是,通过循环算出这个值,然会取个位,减个位,统计一下个数即可。但是运行后就发现不可行,因为如果n稍微大...原创 2019-01-31 23:57:48 · 4310 阅读 · 0 评论 -
C和C++的区别
C和C++的区别首先我们先简单介绍一下C语言和C++:①:C语言的介绍C语言是一个结构化语言,它的重点在于算法和数据结构。C语言的设计首要考虑的是如果通过一个过程对输入进行运算处理得到输出。 C语言可以做任何用处,但最大的用处还是写写操作系统和编译器之类的。 C语言是非常有效率的,作为一个底层编译语言,可以通过指针直接去对内存进行管理,另外很多语言都是用C语言来设计的,如java,...原创 2019-02-02 00:19:44 · 712 阅读 · 1 评论 -
结构体和联合体字节对齐问题
结构体和联合体字节对齐问题实例在之前刷题的过程中遇到了一道题目:它是长这样的:typedef union {long i; int k[5]; char c;} DATE; struct data { int cat; DATE cow; double dog;char cmd} too; DATE max; 语句 printf("%d"...原创 2019-07-24 00:31:27 · 1112 阅读 · 1 评论 -
递归算法和经典的汉诺塔,斐波那契数列
递归算法和经典的汉诺塔,斐波那契数列递归算法:①:在计算机科学中是指一种通过重复将问题分解为同类的子问题而解决问题的方法。②:递归式方法可以被用于解决很多的计算机科学问题,因此它是计算机科学中十分重要的一个概念。③:绝大多数编程语言支持函数的自调用,在这些语言中函数可以通过调用自身来进行递归。我们可以看看例题:第一题:求数字1->n的和//1+2+3+...+n...原创 2018-05-18 16:19:19 · 707 阅读 · 0 评论 -
魔方阵(奇数行列,偶数行列(能被4整除的,不能被4整除的))
魔方阵①:奇数行列//奇数(行,列)voidMagicSquare1(){#defineROW 5#defineCOL ROWassert(ROW%2!=0);//ROW&1==1intarr[ROW][COL] = {0};arr[0][COL/2] = 1;intcurrow = 0;intcurcol = COL/2;...原创 2018-05-05 04:15:48 · 955 阅读 · 0 评论 -
动态内存的申请和释放
动态内存的申请和释放一:申请1:malloc定义:当我们需要在堆中申请一块连续且指定大小的内存块时的内存时,我们可以使用动态内存。使用:指针类型+变量名=(指针类型)+malloc+(n*sizeof(数据类型));例:int *arr=(int *)malloc(sizeof(int));等同于 int arr[n]; //error 2012上非法...原创 2018-05-02 14:28:32 · 1053 阅读 · 1 评论 -
数组
数组和指针定义数组:①:数据类型+数组名+[]int arr [10];②:在这里我们初始化时可以直接给值int brr [10]={1,2,3,4,5,6,7,8,9,10};③:也可以初始化一部分,剩余都是0int crr [10]={1,2,3,4,5};***注意:进行整体赋值时只有在初始化时。***④:定义数组也可以不写长度,长度由系统自行...原创 2018-04-08 16:19:43 · 168 阅读 · 0 评论 -
指针
指针①:int a=10;int b=20;指针就是地址,地址就是指针。//******指针 == 地址******这里a的地址为10000(虚设),这里b的地址为20000(虚设)。你可以将指针当成名牌号,也可以当成一个人的身份证,独一无二,生活中可能不经常用,可它实实在在存在着,我们可以通过这个独一无二的身份证找到本人。②:int * 表示后面的变...原创 2018-04-08 23:09:53 · 204 阅读 · 0 评论 -
字符串
字符串①:以“”包含的字符,其特征为默认自带‘\0’②:字符串的标记‘\0’之前我们学过数组,我们先定义一个字符数组:char arr[10]={‘a’,’b’,’c’,’d’,’e’};类似,我们今天定义一个字符串:char brr[10]={“abcde”};也可以这样写:charbrr[10]="abcde";你会发现结果一摸一样,我们可以得出结...原创 2018-04-11 00:16:10 · 198 阅读 · 0 评论 -
指针的运算
指针的运算(指针运算时,需要考虑权重)一:指针加数字//1、指针+数字//指针加法需要调整,调整的权重为sizeof(指针去掉一个*)在我们学习中,经常会用到指针,不可避免的会遇到指针++的情况,今天我们就来研究一下这个指针+1到底加的是1个什么。现在有三个可能:1:加一个字节2:加一个数组长度3:加一个格子现在我们一个一个来看第一种情...原创 2018-04-19 22:44:07 · 220 阅读 · 0 评论 -
由乘法求未知进制
由乘法求未知进制问题Q:在n进制下,下列等式成立567*456=150216,求n的值:A:9B:10C:12D:18①:我们把式子展开(5n^2+6n+7) * (4n^2+5n+6) = (n^5+5n^4+2n^2+n+6)进一步整理:20n^4+24n^3+28n^2+25n^3+30n^2+35n+30n^2+36n+42 = n^5+5n...原创 2018-04-19 23:33:14 · 876 阅读 · 0 评论 -
const的应用
constconst的用法:①:定义常变量(变量值不能修改),将变量变成只读。(定义常变量时要初始化,没有初始化为随机值)从这里可以看来,变量a,b的值可以修改,而变量ca,cb的值不允许修改,编译器通不过。而定义常变量时一定要初始化②:数据类型对于const而言是透明的int const cb=200 = = con...原创 2018-04-21 00:03:45 · 297 阅读 · 0 评论 -
字符串的应用
字符串的应用在前些日子里,我们学习了字符串的定义,由于生活中经常会经常用到字符串,今天我们就吧字符串的基本用法了解一下1:字符串连接 des+=src库函数 strcat我们自己来试着实现一下这个函数我们可以先将des这个指针指向字符串最后的’\0’;然后利用拷贝函数将src依次拷贝到des中代码如下:运行一下:这里出现了程序崩...原创 2018-04-30 20:51:59 · 2021 阅读 · 0 评论 -
数组指针和指针数组
数组指针和指针数组定义:数组指针:数组指针可以看作数组的指针,首先明确它是一个指针,指针中放着一个数组的首元素地址。指针数组:指针数组可以看作指针的数组,首先明确它是一个数组,这个数组中放着的元素都是指针。使用:数组指针:我们定义一个3*4的二维数组,因为按照行优先原则,我们依次放入1->12:下面我们将这个二维数组传参给定义的数组指针:...原创 2018-04-30 23:43:34 · 180 阅读 · 0 评论 -
一维数组和二维数组
一维数组和二维数组一维数组:在程序中可以使用下标变量,即说明这些变量的整体为数组,数组的每个变量的数据类型是相同的。当数组中每个元素都只带有一个下标时,称这样的数组为一维数组。例:int arr[4];这时,我们分析一下 arr , arr+1 , arr[2] 的数据类型可以看出arr指的是数组首元素arr[0]的地址 数据类型是 int *...原创 2018-05-01 01:51:29 · 526 阅读 · 0 评论 -
串的朴素算法和KMP模式匹配算法
串的朴素算法和KMP模式匹配算法串的朴素算法(BF算法又称暴力搜索):首先待匹配串与模式串首先左对齐,然后从左向右开始逐个进行匹配,如果出现失配情况,则从待匹配串下一个字符开始进行匹配,直到模式串匹配成功。例如: 待匹配串:a b d a b c a b 模式串 :a b c开始进行匹配:BF算...原创 2018-11-06 22:43:37 · 904 阅读 · 0 评论