C语言
Aff ''
你是我的文艺复兴
展开
-
【C语言】实现strcat,strncat,strcpy,strncpy,strcmp,strncmp函数
#include <stdio.h>#include <string.h>#include <assert.h>char Mystrcat(char *des,const char *src)//字符串的链接{ char *p = des; while(*des != '\0')//找尾巴 { des++; } while(*des+...原创 2018-06-10 17:46:36 · 242 阅读 · 0 评论 -
【C语言】判断任意位整数位数,并且按正序,逆序输出
思路:在求整数位数时,我们可以通过整数n/10进行的次数来判断位数 在正序输出整数时,例:1234,先将1234/1000=1,保留234,再将234/100=2,34/10=3,3/10=3,依次进行按位输出 在逆序输出整数时,例:1234,1234%10=4,保留123,再将123%10=3,12%10=2,1%10=1,依次输出 #include<stdio.h>...原创 2018-03-30 21:17:06 · 3936 阅读 · 1 评论 -
【C语言】指针基础
首先要清楚一个最重要的定义:指针==地址,获取地址的途径:&变量==地址 int *p = &a; //整型地址(指针)变量保存整型地址值*p = 100; //间接访问符(通过p访问a) 【解引用】p = &b; //定义时有*,不定义时可不用*p = 200; //200赋值给b* 变量名,...原创 2018-03-30 23:06:10 · 384 阅读 · 0 评论 -
【C语言】指针算术运算(指针 +- 数字,指针 - 指针)
指针 +- 数字 // 需要调整,调整的权重为sizeof(指针只去掉一个*)指针+1:加一个单元格首先要清楚占用字节数 char 1 short 2 int 4 long 4 long long 8 float 4 double 8int main(){ int *p = (int *) //赋值2000(强行转换) printf...原创 2018-04-07 12:10:30 · 1455 阅读 · 0 评论 -
【C语言】判断字符串中有多少个单词
判断依据:前一个是字母成立,下一个不成立则判断是一个单词。//判断英文单词个数#include<stdio.h>#include<assert.h>#include<ctype.h>int Fun1(const char *str){ assert(str != NULL); ...原创 2018-04-12 14:59:14 · 6041 阅读 · 0 评论 -
【C语言】实现字符串的链接strcat,以及字符串常见错误
实现字符串的链接[ strcat ] #include<stdio.h>#include<assert.h>char *Mystrcat(char *des,const char *src){ assert(des != NULL && src != NULL); char *p = des; while(*...原创 2018-04-12 17:38:05 · 584 阅读 · 0 评论 -
【C语言】一维数组和二维数组
一维数组:类型名 数组名[元素个数],其中在书写时,元素个数可省略,系统会自行判断。 二维数组:本质上是以数组作为数组元素的数组,即“数组的数组” 类型说明符 数组名[常量表达式][常量表达式] 行优先原则 eg:a[ ][ ] 第一个中括号内容可省略,第二个不可以省略...原创 2018-04-18 00:19:16 · 3849 阅读 · 0 评论 -
时间复杂度和空间复杂度
时间复杂度是指执行算法所需要的计算工作量,它是一个函数,定性描述了该算法的运行时间。空间复杂度是指执行这个算法所需要的内存空间。将1,2,3的时间复杂度加起来 f(n) = 3n^2+3n+1但是在计算时间复杂度时候有以下规则:1.只保留高阶项,低阶项直接丢弃2.系数去掉 3.O(1)代表执行次数是常数在计算f(n)的时间复杂度时,可以直接计算最内...原创 2018-04-18 23:36:39 · 223 阅读 · 0 评论 -
【C语言】斐波那契数列的两种算法(循环,递归)
#include<stdio.h>int Fabio(int n) //循环{ int i; int f1 = 1; int f2 = 1; int f3 = 1; for(i = 2;i<n;i++) { f3 = f1 + f2; f1 = f2; f2 = f3; } return f3;}int Fabio1(int n) ...原创 2018-04-19 23:53:47 · 28853 阅读 · 0 评论 -
【C语言】汉诺塔问题(递归)
汉诺塔问题,是三根高度相同的柱子和一些大小及颜色不同的圆盘,三根柱子分别为起始柱A、辅助柱B及目标柱C。 要求:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。 我们可以将问题简化,移动过程可以分为三步骤(假设有n个盘子): 1.先将前n-1个圆盘从起始柱A移动...原创 2018-04-20 14:31:06 · 1742 阅读 · 1 评论 -
【C语言】筛选法求素数
筛选法又称筛法,具体做法是:先把N个自然数按次序排列起来。1不是质数,也不是合数,要划去。第二个数2是质数留下来,而把2后面所有能被2整除的数都划去。2后面第一个没划去的数是3,把3留下,再把3后面所有能被3整除的数都划去。3后面第一个没划去的数是5,把5留下,再把5后面所有能被5整除的数都划去。这样一直做下去,就会把不超过N的全部合数都筛掉,留下的就是不超过N的全部质数。 ...原创 2018-04-23 21:11:36 · 6926 阅读 · 0 评论 -
【C语言】malloc,calloc,realloc以及free的用法(动态内存)
头文件:<stdlib.h> malloc:(申请字节数) malloc(n*sizeof(int)); //申请n个int类型的内存 int *p = (int *)malloc(n*sizeof(int)); // == int p[n] 强转 ...原创 2018-04-23 22:04:01 · 308 阅读 · 0 评论 -
【C语言】将字符串转化成整数,正序(逆序)输出
字符串转化为数字:—‘0’ 数字转化为字符串:+‘0’ #include <stdio.h>#include <stdlib.h>#include <vld.h>#include <assert.h>#include <ctype.h>#include <string.h>void...原创 2018-04-23 22:33:46 · 837 阅读 · 0 评论 -
结构体内存
struct A{ int a;//4 int b;//4};//4+4 结构体A占用内存为8字节 struct B{ char a;//1+3 int b;//4};1+3+4 结构体B占用内存为8,char类型占用字节数为1,但要保证前一个字节数是后一个字节数倍数,所以需要在char类型后+3 +3的原因: ...原创 2018-05-06 23:58:00 · 249 阅读 · 0 评论 -
【C语言】结构体
struct 类型名 自定义数据类型,定义完成以后,等同于内置类型 1.结构体不能定义一个包含自身的普通成员,但可以定义一个指向自身的指针 struct A{ int a; char b; struct A c;//error 结构体不能定义一个自身的普通成员变量 struct A *p;//ok 结构体可以定义一个指向...原创 2018-05-03 01:06:57 · 258 阅读 · 0 评论 -
类型转换
类型转换 1. 显示转换 //char的范围是-128~127 char a = (char)200 //-56 //200-56 如果不加(char),在运行时会有警告 int b = (int)12.5 2. 隐式转换 char c = 100; int d = c + 25 //125 隐式转换条件: 1.)默认由窄的数据...原创 2018-05-21 20:53:41 · 145 阅读 · 0 评论 -
【C语言】将数组,字符串,二进制数,数字逆序输出
#include <stdio.h>#include <string.h>void Reverse(int a[10]) //数组的逆序{ int i; int temp; for(i = 0;i < 10/2;i++) //交换次数为数组数的一半! { temp = a[i]; a[i] = a[10-i-1]; ...原创 2018-05-24 11:19:53 · 1390 阅读 · 0 评论 -
【内存重叠】memcpy函数和memmove函数的实现
memcpy函数:从源内存地址的起始位置开始拷贝n个字节到目标内存地址void *memcpy(void *dest,const void *src,size_t n){ char *tmp = (char *)dest; char *s = (char *)src; while(n--) { *tmp++ = *s++; } return dest;}strcpy函...原创 2019-09-06 13:53:05 · 179 阅读 · 0 评论