C语言
牧童遥指杏花村丫
这个作者很懒,什么都没留下…
展开
-
全局变量和局部变量的比较
4种内存区域:(1) 代码段 (2) 全局(静态)变量区 (3) 栈 (4) 堆 变量的原创 2017-08-17 11:51:27 · 723 阅读 · 0 评论 -
约瑟夫环
例题:有n个人围成一圈,报3的退出,问剩下的一个人的序号是多少?int Circle(int n)//约瑟夫环{ int *arr = (int *)malloc(n*sizeof(int)); int i; for(i=0;i<n;i++) { arr[i] = 1; } int count = n; //存活的人数 int times = 0;//报的数字 i = 0原创 2017-10-01 09:33:03 · 188 阅读 · 0 评论 -
数组冒泡排序和字符串冒泡排序
数组冒泡排序void BubbleSort(int *arr,int len){ int tmp; for(int i=0;i<len-1;i++) { for(int j=0;j<len-1-i;j++) { if(arr[j] > arr[j+1]) { tmp = arr[j]; arr[j] = arr[j+1]; arr[j+1]原创 2017-10-01 09:38:56 · 423 阅读 · 0 评论 -
判断矩阵是否为单位矩阵
判断矩阵是否为单位矩阵单位矩阵:除了主对角线上的元素值为1,其余元素全部为0bool identity_matrix(int *arr,int n)//n表示n阶矩阵{ for(int i=0;i < n;i++) { for(int j = 0;j < n;j++) { if(i == j && *(arr+i*n+j) != 1)//用一维数组越界到下一行表原创 2017-10-01 12:23:20 · 5084 阅读 · 0 评论 -
回文问题
回文问题1、什么是回文?答:如果是一个字符串的话,从左到右读和从右到左读是完全一样的,例如:”aaabaaa”,”level”等; 如果是一个数字的话,就是:1234321等等类似这样的。 回文字符串:首先来判断一个字符串是否是回文字符串。//判断是否是回文字符串bool IscircleString(char *str,int len){ char *tmp原创 2017-10-22 10:34:17 · 455 阅读 · 0 评论 -
两数相乘选择进制问题
例题:假设在n进制下,下面的等式成立,567*456=150216,n的值是:A 9 B 10C 12D 18解答:假设n进制,则有以下等式成立:(5*n^2+6*n^1+7*n^0)*(4*n^2+5*n^1+6*n^0)=1*n^5=5*n^4+0*n^3+2*n^2+1*n^1+6*n^0简化以后得到:15*n^4+49*n^3+86*n^2+70*n=n^5原创 2017-10-14 20:37:42 · 456 阅读 · 0 评论 -
C/C++中预编译(预处理)、编译、汇编、链接
C/C++中预编译(预处理)、编译、汇编、链接一、预编译读取C/C++源程序,对其中的伪指令(以#开头的指令)进行处理作用:处理关于 “#” 的指令(1)删除#define,展开所有宏定义。例#define portnumber 3333(2)处理条件预编译 #if, #ifdef, #if, #elif,#endif(3)处理“#inclu原创 2017-10-21 18:13:19 · 513 阅读 · 0 评论 -
递归、时间复杂度和空间复杂度
一、递归概念:函数自身调用自身二、时间复杂度概念:执行的次数和问题规模之间的函数关系,它定量描述了该算法的运行时间。 (1)只考虑高阶项,低阶项直接丢弃; (2)不要系数三、空间复杂度概念:实现该算法所需要的额外辅助空间和问题规模直接的函数关系例题:有五个小孩在一起聊天,第五个小孩比第四个小孩大两岁,第四个原创 2017-08-17 11:12:36 · 7519 阅读 · 0 评论 -
typedef和#define的区别
先说一下两者的概念1、#define预处理阶段进行简单的字符串替换,没有安全性检查2、typedef在自己的作用域内给一个已经存在的类型一个别名,编译阶段。两者的区别(1)执行时间不同#define在预处理(预编译)阶段,进行替换工作typedef在编译阶段,会进行类型检查(2)作用域不同#define:无论在哪定义过,在其他地方都可以使用typedef:只能在定义的作用域内使用(3)对指针的操作...原创 2018-06-21 17:34:31 · 317 阅读 · 0 评论 -
gcc和g++的区别
首先,gcc和g++都是GNU(组织)的一个编译器。1、后缀为.c的文件,gcc会把它当做C程序,g++会当做C++程序; 后缀为.cpp的文件,gcc和g++都会当做C++程序。2、编译阶段:g++会调用gcc程序3、链接阶段:由于gcc命令自动和C++程序使用的库链接,所以通常用g++完成链接...原创 2018-06-19 16:25:36 · 211 阅读 · 0 评论 -
深拷贝与浅拷贝
深拷贝与浅拷贝浅拷贝:多个指针指向同一段内存(生活中的共享) 字符串常量就是浅拷贝 特点:不能修改#include//浅拷贝int main(){ char buf[100]; char *str[3];//指针数组 int i; for(i = 0;i < 3;i++) { scanf("%原创 2017-10-01 08:41:04 · 184 阅读 · 0 评论 -
指针的算术运算
指针的算术运算指针加法需要调整,调整的权重为指针本身去掉一个*号,求sizeof()。例1:#includeint main(){ int *p = (int *)100; printf("%d\n",p + 2); //108 printf("%d\n",(char **)p + 2); //108 printf(原创 2017-09-30 20:35:42 · 179 阅读 · 0 评论 -
字符串复制函数的优化过程
//版本1void Mystrcpy1(char *des,char *src){ int i; for(i=0;src[i]!='\0';i++) { des[i]=src[i]; } des[i]='\0';}//版本2void Mystrcpy2(char *des,char *src){ while(*src!='\0') {原创 2017-08-13 09:39:34 · 299 阅读 · 0 评论 -
结构体的大小
#include//内存对齐:不同平台内存对齐规则不统一struct A{ int a;//4 int b;//4};//8struct B{ char a;//1+3 必须是下面数据类型的整数倍 所以+3 int b;//4};//8struct C{ char a;//1+1 必须是下面数据类型的整数倍 所以+1 short b;//2 int c;//4原创 2017-08-20 20:05:39 · 233 阅读 · 0 评论 -
穷举
例题:两个乒乓球队进行比赛,各出3人,甲队为A,B,C3人,乙队为X,Y,Z3人,以抽签决定比赛名单,有人向队员打听比赛的名单,说他不和X比,C说他不和X,Z比,请编写程序找出3对比赛名单。#includevoid Match(){ for(char a = 'X';a //A的对手 { for(char b = 'X';b //B的对手 {原创 2017-08-26 09:26:47 · 399 阅读 · 0 评论 -
有关动态内存的几个函数
1、malloc():申请动态内存 int *p = (int *)malloc(n*sizeof(int));//申请n个int型 char *p1 = (char *)malloc(10*sizeof(char));//申请10个char型 double *p2 = (double*)malloc(10*sizeof(double));//申请10个double型 ch原创 2017-08-26 10:01:16 · 323 阅读 · 0 评论 -
文件、文件系统、关于文件的函数
缓存:用于高速设备和低速设备过渡缓冲:流媒体虚拟内存:硬盘上的一个区域,把RAM当ROM用ROM:磁盘,硬盘RAM:内存(平时所说的内存)文件系统:用于管理文件 NTFS(微软最新) Fat32(U盘的文件系统)1、打开文件char *path = "D:\\1.txt";原创 2017-08-26 10:49:08 · 275 阅读 · 0 评论 -
有关内存覆盖
例题:有n个整数,使前面各数顺序向后移动m个位置,最后m个数变成最前面的m个数。写一个函数实现以上功能,在主函数中输入n个整数和输出调整后的n个数。如下图:原创 2017-08-28 19:00:48 · 458 阅读 · 0 评论 -
运算符的优先级
运算符的优先级优先级由高到低:(),[],->,.++,--,!,~,-,*,(类型),&,sizeof*,/,%+,->,>===,!=&^|&&||?:=,圆方括号、箭头一句号自增自减非反负、针强地址长度乘除加减再移位小等大等等等不等八位与七位异六位或五与、四或、原创 2017-09-06 21:14:25 · 496 阅读 · 0 评论 -
限制长度的字符串函数
#include#include#includevoid Mystrncpy(char *des,char *src,int count){ int i; for(i=0;i<count&&src[i]!='\0';i++) { des[i] = src[i]; } while(i < count) { des[i++] = '\0'; } printf("%s原创 2017-09-23 18:35:46 · 627 阅读 · 0 评论 -
泛型(高级指针)指针编程
void *:通用指针、高级指针、泛型指针,用于存储地址,不能解引用,也不能进行算术运算C语言不支持函数重载的原因:它只在函数名前加_例如:Max(int,int) ->_Max Max(float,float) ->_MaxC++支持函数重载的原因:要求参数列表不一样,因为它生成的符号会根据参数产生例如:Max(int,int) ->(?Max@@YAHH原创 2017-09-29 22:46:13 · 836 阅读 · 0 评论 -
考虑到进制问题的itoa函数
#includevoid Reverse(char *str)//字符串逆置 { char *p = str; while(*p != '\0') { p++; } char tmp; for(p--;str < p;str++,p--) { tmp = *p; *p = *str; *str = tmp; }}void Myitoa(int num,原创 2017-09-30 09:50:55 · 286 阅读 · 0 评论 -
“暴力”枚举(穷举)
枚举法最成功的例子:1、八皇后问题#include int Queen8(){ int count = 0; for(int q1=0;q1<8;q1++) { for(int q2=0;q2<8;q2++) { if(q1==q2 || q1-1==q2 || q1+1==q2) {原创 2017-09-30 08:42:46 · 606 阅读 · 0 评论 -
可变参数编程
可变参数编程原创 2017-09-19 21:38:16 · 316 阅读 · 0 评论 -
实现统计字符串中第一个空字符前面的字符长度——递归
举例:char buf[] = { 'a', 'b', 'c', 'd', 'e', 'f', '\0', 'x', 'y', 'z' };字符串buf,当输入n=10或者20时,期待输出结果为6;当输入n=3或者5时,期待输出结果为3或者5。 代码实现:#include <iostream>using namespace std;//统计字符串中第一...原创 2018-08-20 12:04:14 · 476 阅读 · 0 评论