自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 C部分库函数的模拟实现

模拟实现strlen方法1:int my_strlen( const char*src){ int count = 0; assert(src != NULL); while(*src != '\0') { count++; src++; } return count;}方法2:int my_strlen( const char*src){ char*p...

2019-09-23 00:18:45 177

原创 重载的限制

运算符函数的格式如下:operatorop(argument-list)多数C++运算符都可以通过这样的方式进行重载。但是还存在着一些限制。重载后的运算符必须至少有一个操作数是用户自定义的类型,这将防止用户为标准类型重载运算符。使用运算符时不能违反运算原来的句法规则。不能创造新的运算符。不能重载下面的这些运算符。sizeofsizeof运算符.:成员运算符...

2019-09-14 13:11:26 333

原创 字符串类String的构造函数

写出字符串类String的默认构造函数、拷贝构造、析构函数和重载赋值运算符。已知类String的模型为:class String{public: String(const char *pStr = NULL); String(const String &other); ~String(void); String &operate = (const String &am...

2019-09-13 13:50:54 1763

原创 有1,2,3,..n 的无序数组,求排序算法

有1,2,3,…n 的无序数组,求排序算法。要求时间复杂度 O(n), 空间复杂度O(1)。使用交换,而且一次只能交换两个数。(2020届鼎信通讯现场笔试题)未排序的数组为arr1[] = {10,6,9,5,2,8,4,7,1,3},排序后的数组为arr2[]={1,2,3,4,5,6,7,8,9,10}。观察arr1与arr2的对应关系可知:arr1[i]在arr2中的下标为arr1[i]-...

2019-09-13 11:57:43 620

原创 八皇后

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8×8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。C语言实现的代码如下:#define _...

2019-07-29 15:45:25 138

原创 蛇形数组

如下图所示,代码实现蛇形数组的打印。代码如下所示:#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#define N 4void DisPlay(int arr[N][N]) //显示整个数组{ int i = 0; int j = 0; for(i=0;i<N;i++) { for(j=0;...

2019-07-28 21:07:17 217

原创 C语言实现简单日历

其实时间采用的是计算机起始时间1970年1月1日(纪元时间)。#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>int months[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31}, {0,31,29,31,30,31,30,31,31,30,31,30,31}...

2019-07-28 11:45:37 1262

原创 查找一组数据中单独出现的三个数字

查找一组数据中单独出现的三个数字一组数据中只有三个数字单独出现,其余数字都是成对出现的,请找出这三个数字。要解决这个问题,我们先来看一下下面这两个问题:一组数据中只有一个数字单独出现,其余数字都是成对出现,请找出这个数字。根据异或的性质:相同为0,相异为1,可得自己异或自己结果为0。一组数据中只有一个数字单独出现,其余数字都成对出现,将所有的数据进行异或,成对出现的数字异或结果都为0,故这...

2019-07-27 16:09:45 604

原创 MATLAB中eye()函数的用法

MATLAB中eye()函数返回的是单位矩阵。eye(N),返回N*N大小的单位矩阵;eye(M,N)、eye([M,N]),返回M*N的单位矩阵;eye(size(A))返回和矩阵A一样大小的单位矩阵;eye无参数时表示标量1.例:>> eye(2)ans = 1 0 0 1>> eye(2,3)ans ...

2019-05-27 10:26:31 66612 1

原创 期刊如何不分栏添加项目来源

期刊如何不分栏添加项目来源发表小论文的时候期刊经常要求添加项目来源,且摘要部分不分栏,正文部分分栏,有时候项目来源太长添加脚注就会分栏,通过以下步骤就可以解决这个问题,符合期刊的要求。将光标放置在正文首行首个文字前,在菜单栏中选择引用>脚注。点击上图中右下角的小箭头,弹出脚注和尾注界面。如图所示,选择脚注——页面底端;格式——自定义标记选择空格。点击插入,如图...

2019-05-20 21:17:48 1047

原创 C语言执行程序时,控制窗口结果一闪而过

C语言执行程序时,控制窗口结果一闪而过在C语言执行程序过程中,会出现控制窗口的结果一闪而过。解决方法如下:方法一:getchar()在程序后边加上getchar();即获取字符,这样就可以看到结果。当程序中出现scanf()函数时,需要在scanf函数后边加上fflush(stdin)清空标准输入,刷新输入缓冲区。(scanf和getchar都是从输入缓冲区中获取字符)方法二:sy...

2019-05-20 20:13:20 13826

原创 如何解决WARNING C4996问题

如何解决WARNING C4996问题在VS编译器中经常会出现warning C4996警告问题,如:warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WAR...

2019-05-20 19:55:43 8827 1

原创 链表面试题(四)

复杂链表的复制。一个链表的每个节点,有一个next指针指向下一个节点,还有一个random指针指向这个链表中的一个随机节点或者NULL,现在要求实现复制这个链表,返回复制后的新链表。思路:要实现这个功能,可以通过一下几个步骤。每次创建新节点放在旧节点后边,先将所有的节点复制过来;遍历所有老节点,设置老节点后面的新节点的random;把链子拆开。 ...

2018-06-03 22:19:21 173

原创 链表面试题(三)

1、判断两个链表是否相交,若相交,求交点。(假设链表不带环)函数实现的功能为,判断相交,相交返回交点的数据,不相交返回-1。函数实现源程序//判断是否相交,不带环int HasCross(SList *pHead1,SList *pHead2){ SList *pNode1 = pHead1; SList *pNode2 = pHead2; if((p...

2018-06-03 10:31:47 182

原创 链表面试题(二)

1、单链表排序(冒泡排序)用三个指针来实现该功能,p1初始化为pHead,p2初始化为pHead-&amp;amp;amp;gt;pNext,pEnd初始化为NULL,当p2不等于pEnd时,p1和p2的data进行比较,如果p1的data大于p2的data,p1和p2的值交换,否则p1和p2继续向后访问,pEnd指向pHead-&amp;amp;amp;gt;pNext时,循环结束。 优化:创建一个标志位IsChange,如果交换将其置...

2018-06-02 17:41:06 252

原创 链表面试题(一)

本文所有的函数都是在上一篇单链表的基础上建立的。1、从尾到头打印链表分析:如下图所示,单链表为1、2、3、4、NULL,题目要求从尾到头打印,即打印的效果为4、3、2、1、NULL。我们可以用递归和循环来实现这一功能。 递归:递归的结束条件为pNodet为空,代码比较简单。循环:可以定义两个指针,一个用来遍历链表,一个用来结束循环。如图所示,用pNode来遍历链表,让pNode从...

2018-06-01 18:47:18 552

原创 双向链表

双向链表头文件DList.h:#ifndef __DLIST_H__#define __DLIST_H__#include &lt;stdio.h&gt;#include &lt;assert.h&gt;#include &lt;stdlib.h&gt;typedef int DataType;typedef struct DList{ DataType d...

2018-06-01 18:44:48 225

原创 单向链表

单向链表该程序实现了单向链表的增、删、查。头文件:#ifndef __SLIST_H__#define __SLIST_H__#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;assert.h&gt;typedef int DataType;typedef struct SList{ ...

2018-06-01 18:40:13 323

原创 时间复杂度以及空间复杂度

  为了编写出一个“好”程序,必须分析待处理的对象的特征以及各处理对象之间存在的关系。一般来说,用计算机解决一个具体问题时,大致需要以下几个步骤:首先要从具体的问题抽象出一个适当的数学模型,其次设计一个解决该数学模型的算法,编写出程序,并进行测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间的关系,然后用数学加以描述。 因此,我们可以说程序设计=数...

2018-05-28 17:34:06 606 1

原创 注释转换

我们都知道在C语言中有两种注释风格,一种是C风格注释/* */,可以注释多行,但是不能嵌套使用;另一种是C++风格注释//,可以嵌套使用。 今天我们来写一个注释转换,什么是注释转换呢?为了统一,我们将C风格的注释全部转换为C++风格的注释。 分析:我们采用有限状态机(Finite state Machine)的思想来写这个代码。实现注释转换,大概可以分为这几种状态 :不是注释准备进入注释...

2018-05-22 16:43:06 334

原创 文件格式的简易通讯录

上一篇写了一个简易的通讯录,但是这个通讯录每次打开的时候都要重新录入信息,十分麻烦。所以今天我们来实现一个文件版本的通讯录,在创建的工程中新建一个文档用来存放通讯录里的信息(我在这里创建的是contact.txt),这样我们每次打开程序的时候就可以看见之前保存的通讯录信息了。头文件#ifndef __CONTACT_H__#define __CONTACT_H__#inclu...

2018-05-20 10:35:49 1826 1

原创 C语言实现简易通讯录

实现一个通讯录: 通讯录可以用来动态存储个人信息,每个人的信息包括: 姓名、性别、年龄、电话、住址 提供方法: 1. 添加联系人信息 2. 删除指定联系人信息 3. 查找指定联系人信息 4. 修改指定联系人信息 5. 显示所有联系人信息 6. 清空所有联系人 7. 以名字排序所有联系人 1. 头文件#ifndef __CONTACT_H__#def...

2018-05-13 21:50:37 803 2

原创 【自定义类型】

在c语言中常见的自定义类型有结构体、枚举和联合(共用体),上一篇我们介绍了结构体(有兴趣的可以看一下链接 ),今天我们就来看看枚举和联合。1、枚举枚举从字面意思理解就是将可能取的值一一列举出来,枚举类型没有成员 可言,里边存放的是可能取值。枚举类型的定义enum Day{ Mon, Tues, Wed, Thur, Fir, Sat, S

2018-05-10 11:28:00 207

原创 结构体

1、结构体的基础知识  在存储数据时,有时候需要将某些值存放在一起,C语言提供了两种可以同时存储多个数据的类型,一个是数组,一个是结构体。数组是相同类型的元素的集合,结构也是一些值的集合,这些值称为成员变量,结构的每个成员可以是不同类型的变量。2、结构声明在声明结构时,必须列出它包含的所有成员。如: struct Stu{ char name[10]; char sex[5];

2018-05-08 17:48:49 335

原创 喝汽水

喝汽水,1瓶汽水1元,2个空瓶可以换一瓶汽水,给20元,可以多少汽水。编程实现。 看到题目时我们可以先分析一下,不用着急写代码。 首先我们有20元,1元1瓶汽水,可以直接买20瓶,然后2个空瓶可以换一瓶汽水。 最开始的时候,有多少钱就可以买多少瓶汽水创建一个余数项,判断每次兑换完是否有空瓶剩余每次的空瓶数等于上次的空瓶数除以2再加上余数剩余1个空瓶时将不能再进行兑换(这里不考虑借空瓶)#

2018-05-06 16:51:17 196

原创 指针相关知识

指针在c语言中,我们会频繁的使用指针,那么什么是指针?首先我们来看一段代码。#include int main(){ int a = 10;//在内存中开辟一块空间 int *p = &a;//将a的地址存放在指针变量p中 return 0;} 如图所示,假如创建的变量a的地址为0x0000ff11,那么指针变量指向变量a,存放的是变量a的地址。

2018-04-27 11:31:55 235 1

原创 可变参数列表

在函数的原型中列出了函数所期望的参数个数以及类型,但是原型只能显示固定的参数个数。那么函数能不能接受1个或者任意个不固定的参数呢?答案是肯定的,这就要用到C语言中的可变参数列表了。下面我们来看一个例子。#include <stdio.h>int Add(int x,int y){ return x+y;}int main(){ int ret = 0; ret = Ad

2018-04-22 12:58:23 203

原创 函数调用

函数调用  函数之间的调用关系是用栈维护的,每 一次函数调用都是一个过程,该过程称为函数的调用过程。该过程需要为函数开辟空间,用于本次函数的调用中临时变量的保存、现场保护,开辟的空间就称为函数栈帧,也叫函数运行时堆栈。接下来我就简要介绍一下函数调用过程中,栈帧的创建与销毁。栈帧的创建需要用到两个寄存器:ebp和esp,在函数调用过程中这两个寄存器存放了维护这个栈的栈底和栈顶指针。ebp存放了指向函数

2018-04-19 16:52:13 450

原创 写一个宏交换一个数的偶数位和奇数位

要实现用宏交换一个数的偶数位和奇数位,首先要清楚如何使用宏,其次要有用宏实现该功能的整体思路。例如:将数字5(0101)的奇数位和偶数位进行交换,得到10(1010);将数字10(A)的奇偶位交换,得到5。那么假设我们要将x的奇偶位进行交换,我们可以将x&amp;(0x55555555)得到x的奇数位,其偶数位都为零,然后左移一位,即(x&amp;(0x55555555))&lt;&lt;1将x的...

2018-04-15 11:19:06 195

原创 字符串旋转

将一个字符串向左旋转k位。法一:将字符串(eg:ABCD)的首位(A)通过创建临时变量保存起来,其余部分向左移动一位(BCD_),再将保存起来的首位放在此时移动后的字符串的最后一位(BCDA),至此字符串整体像左移一位。重复进行上述操作,便可得到向左旋转k位的字符串。如此例4所示旋转2次和旋转6次得到的结果相同,令len为字符串的长度,那么可以旋转n%len次,得到结果。#include

2018-04-15 11:16:15 778

原创 大小端

大小端模式介绍大端(存储)模式:是指一个数据的低位字节序的内容放在高地址处,高位字节序存的内容放在低地址处。 小端(存储)模式:是指一个数据的低位字节序内容存放在低地址处,高位字节序的内容存放在高地址处。(可以总结为“小小小”即低位、低地址、小端) 在计算机系统中,我们是以字节为单位存放数据的,每个地址单元都对应着一个字节,一个字节为8bit。但在C语言中存在不同的数据类型,占用的字节数也各不相

2018-04-13 11:46:40 464

原创 数组相关知识总结

数组相关知识总结数组是C语言中比较重要的一部分,在编程中会经常使用。数组是一组有序数据的集合,数组中的每一个元素都属于同一个数据类型,下表代表数据在数组中的位置。一维数组定义一维数组的一般形式为: 类型名 数组名[常量表达式];eg:int arr[10];在定义数组时,需要制定数组中元素的个数,方括号中的常量表达式用来表示数组的大小。(注意:方括号中必须为常量表达...

2018-04-12 17:01:51 255

原创 C语言实现扫雷

扫雷

2018-04-10 18:34:30 776 2

原创 C语言实现三子棋

三子棋、五子棋

2018-04-10 18:02:38 451

原创 字母字符转换

从标准输入读取字符,并把它们写到标准输出中。将大写字母转换为小写字母,其它所有的字符输出形式和它的输入形式完全相同。采用库函数tolower#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;#include &lt;ctype.h&gt;int main(){ int ch; while((ch=getchar())!=E...

2018-04-01 12:07:53 883

原创 字母字符在输出前进行加密

编写一个程序,从标准输入读取字符,并把它门写到标准输出中。所有非字母字符都完全按照它的输入形式输出,字母字符在输出前进行加密加密规则是给每个字母被修改为在字母表上距其13个位置(前或后)的字母。例如,A被修改为N,B被修改为O,Z被修改为M。#define _CRT_SECURE_NO_WARNINGS 1#include int main(){ int ch = 0;

2018-04-01 11:54:54 780

原创 二进制数中1的个数

求二进制数中1的个数:#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;//法一int count_one_bits(int n){ int count = 0; while(n) { n=n&amp;(n-1); count++; } return count;}int main(){ int n...

2018-03-31 19:50:08 162

原创 C语言操作符总结

C语言操作符总结

2018-03-31 11:32:07 163

原创 在屏幕上打印菱形,求前n项和

1.在屏幕上打印菱形;2.求Sn=a+aa+aaa+aaaa+aaaaa+...的前n项之和,其中a是一个数字;3.水仙花数。

2018-03-28 11:38:49 137

原创 前面部分程序的小改进

1.求10个数中的最大值。将arr[0]赋值给max,可以解决给出的10个数为负数的情况。#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;int main(){ int arr[10]={10,234,1,56,765,34,89,232,3,5}; int max = arr[0]; int i = 0; for(i...

2018-03-26 15:04:39 155

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除