C/C++
C++程序员
生活中那些闪闪发光的东西,美好精致的人生,不会是一蹴而就的,都要靠自己一步步走出来!
展开
-
C++类型转换
要提到C++的类型转换那就不得不先回顾一下C语言中的类型转换,C语言中的类型转换分为隐式类型转换和显示类型转换,具体代码体现如下:// C语言中的类型转换:可读性差,一旦出错难以追踪错误类型void Test1() { int a = 10; double b = 3.14; a = b; // 在C语言中d会被隐式转为int型,虽然编译会通过,但是会有警告:精度丢失 ...原创 2019-08-16 21:18:58 · 164 阅读 · 0 评论 -
NO.9————浅谈Github安装及注册过程
Github———全球最大的“同性交流”网站(官网:http://github.com/)主要解决以下三个问题:1、代码托管;2、方便多人协同开发;3、产品经理反复修改需求,需要同时维护多个版本。Github安装及使用教程:1、进官网 注册自己的账号2、注册完成后开始创建项目3、为了便于本地管理代码,下...原创 2018-12-05 13:51:50 · 142 阅读 · 0 评论 -
NO.10————打印乘法口诀表
//实现一个函数,打印乘法口诀表,口诀表的行数和列数自己指定,//输入9,输出9 * 9口诀表,输入12,输出12 * 12的乘法口诀表。//实现乘法口诀表函数int Multiplication_table(int k){int i, j;for (i = 1; i <= k; i++){for (j = 1; j <= i; j++){printf("%d*%d...原创 2018-12-08 17:41:48 · 162 阅读 · 0 评论 -
NO.8————猜数字游戏、折半查找、模拟实现银行登录界面
#define _CRT_SECURE_NO_WARNINGS 1#include &amp;amp;lt;stdio.h&amp;amp;gt;#include &amp;amp;lt;stdlib.h&amp;amp;gt;#include &amp;amp;lt;math.h&amp;amp;gt;#include &amp;amp;lt;time.h&amp;amp原创 2018-12-02 16:34:41 · 159 阅读 · 0 评论 -
NO.11————交换两个数字
使用函数实现两个数的交换。//实现俩个数交换的函数void Swap(int* x, int* y){*x = *x ^ *y;*y = *x ^ *y;*x = *x ^ *y;}//主函数int main(){ int a, b;printf("请输入两个整数:");scanf("%d %d", &a, &b);Swap(&a, &...原创 2018-12-08 18:13:30 · 117 阅读 · 0 评论 -
NO.12————判断闰年
//实现一个函数判断year是不是润年。//能被4整除但不能被100整除,或者能被400整除//判断闰年函数void leap_year(int n){if ((n % 100 != 0 && n % 4 == 0) || (n % 400 == 0)){ printf("是闰年!");}else{ printf("不是闰年!");}}//主函数...原创 2018-12-08 18:27:31 · 121 阅读 · 0 评论 -
NO.13————判断素数
实现一个函数,判断一个数是不是素数。素数:只能被1和它本身整除// 判断素数函数void Is_prim(int n){int i;for (i = 2; i < sqrt(n); i++){ if (n%i == 0) { printf("该数不是素数!\n"); } else { printf("该数字是素数。\n"); }}}//主函数i...原创 2018-12-08 19:48:09 · 165 阅读 · 0 评论 -
NO.14————斐波那契数列
// 递归和非递归分别实现求第n个斐波那契数// 递归法:int fib(int n){if (n &amp;lt;= 2){ return 1;}else{ return fib(n - 1) + fib(n - 2) ;}}// 非递归法:int fib(int num){int i, f1 = 1, f2 = 1, f3 = 0; ...原创 2018-12-24 11:51:25 · 159 阅读 · 0 评论 -
NO.15 ----求n^k
// 编写一个函数实现n^k,使用递归实现// 分析:nk=n*n(k-1)int index(int n,int k){if (n == 0){ return 0;}else if (k == 1){ return n;}else{ return n*index(n, k - 1);}}int main(){int num, k;printf("请输...原创 2018-12-24 11:54:16 · 172 阅读 · 3 评论 -
NO.16 ---- 求一个整数的各位数字之和
// 写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,// 例如,调用DigitSum(1729),则应该返回1 + 7 + 2 + 9,它的和是19int DigitSum(n){if (n &gt; 0){ return n % 10 + DigitSum(n/10) ;}return 0;}int main(){ int num;...原创 2018-12-24 11:56:40 · 337 阅读 · 0 评论 -
NO.17 ----字符串翻转
// 编写一个函数 reverse_string(char * string)(递归实现)// 实现:将参数字符串中的字符反向排列。// 要求:不能使用C函数库中的字符串操作函数。void reverse_string(char * string){if (*string == '\0'){ return 0;}else{ reverse_string(string + 1...原创 2018-12-24 12:08:01 · 109 阅读 · 0 评论 -
NO.7————水仙花、打印半菱形
//1.在屏幕上输出以下图案://*//***//*****//*******//*********//***********//*************//***********//*********//*******//*****//***//*#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#...原创 2018-11-28 17:29:18 · 154 阅读 · 0 评论 -
NO.6————交换两个等长数组中的内容
// 将数组A中的内容和数组B中的内容进行交换。(数组一样大)#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){ int A[10] = { 1,2,3,4,5,6,7,8,9,0 };int B[10] = { 0,9,8,5,6,12,3,56,...原创 2018-11-26 11:53:38 · 285 阅读 · 0 评论 -
NO.5————交换两个整型变量的内容
//给定两个整形变量的值,将两个值的内容进行交换#define _CRT_SECURE_NO_WARNINGS 1//方法一:酱油瓶装醋,醋瓶子装酱油#include <stdio.h>#include <stdlib.h>int main(){int a = 10;int b = 20;int c;c = a;a = b;b = c;print...原创 2018-11-24 21:10:39 · 298 阅读 · 0 评论 -
红黑树浅析
1、红黑树概念:红黑树是一种特殊的二叉搜索树,它在二叉搜索树的基础上对每一个节点进行着色,通过对着色的限制来保证树的近似平衡。红黑树的搜索最坏时间为O(logN),2、红黑树性质:①每个节点非黑即红②根结点比为红③每条路径的黑节点树相同(保证最长路径不会比最短路径长两倍)④两个红节点不能连续⑤每个叶子节点(空节点)为黑色3、红黑树结构:4、红黑树的插入步骤...原创 2019-08-10 22:53:48 · 156 阅读 · 0 评论 -
AVL树的特性分析及插入中旋转的实现
在上一篇中我们谈到了二叉搜索树,虽然锁二叉搜索树能够大大提高查找效率,但是如果数据有效或者当二叉搜索树退化为单支树时,此时查找效率就会根树的高度成正比,导致效率极低,显然这种情况不是我们所期待的。因此就有了一种新的策略,就是在插入或删除元素后,如果能保证二叉搜索树的左右高度差的绝对值不超过1,就可以降低树的高度,从而保证二叉搜索树的查找效率保持在O(logN),我们把具有这种结构的树就称为AVl树...原创 2019-08-09 11:52:04 · 150 阅读 · 0 评论 -
二叉搜索树模拟实现及性能分析
在上一篇文章中我们已经将二叉搜索树的基本性质看了,本片文章将介绍二叉树的模拟实现与性能分析,下面给出二叉树的模拟实现:#include <iostream>using namespace std;// 定义二叉搜索树结点template<class T>struct BSTNode { BSTNode(const T& data = T())...原创 2019-08-09 10:34:52 · 247 阅读 · 0 评论 -
STL之树形结构关联容器
1、关联式容器:关联式容器相对于序列式容器来说,序列式容器存储的是元素本身,而关联式容器存储的是<key, valuse>这样的键值对,因此相对于序列式容器来说检索速度就更快。2、树形关联式容器:本文看的是树形结构的关联容器,主要有map, multimap, set, multiset;下面为四种容器的对比以及常见操作的使用:容器名称 底层结构 查询元素效率...原创 2019-08-02 12:15:06 · 828 阅读 · 0 评论 -
线程安全的单例模式的几种实现方法
单例模式分为饿汉模式:在单例类定义时就会进行实例化* 和懒汉模式:只要到需要用到类的时候才会进行实例化** 特点:访问量较少时使用懒汉模式,以时间换空间;访问量较大时* 或者访问的线程较多时需要使用饿汉模式,以空间换时间** 实现单例模式的key point:* 1、线程安全* 2、构造函数声明为private 或者 protected防止被外部函数实例化*...原创 2019-08-01 16:02:54 · 395 阅读 · 0 评论 -
NO.31 ----调整数组
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>调整数组使奇数全部都位于偶数前面。题目:输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中所有的奇数位于数组的前半部分,所有偶数位于数组的后半部分。// 思路:遍历数组,先打印出奇数,再打印出偶数voi...原创 2019-01-07 12:18:07 · 218 阅读 · 0 评论 -
No.1——从零开始,有始有终
本人是一名计算机专业大三的学生,由于前两年荒废了大量的时间,到现在为止没有掌握一门编程语言,知道现在才意识到时间的紧迫和形势的严峻,所以打算认真的学习编程,确保能在明年的九月份秋招中拿到一份满意的offer。关于语言的选择,经过一番深思熟虑之后我选择C语言作为开始,之所以选择C语言是因为它相对于其它编程语言更为经典,也更为强大。我打算每周利用25个左右的小时去学习C语言,并且每天保证...原创 2018-11-01 21:52:15 · 179 阅读 · 0 评论 -
NO.2 斐波那契数列的几种解法
//打印斐波那契数列//当n<3时,f1=1,f2=1;当n>=3时,fn=f(n-2)+f(n-1);#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>int main(){//方法一: int n = 1;printf("请输入你想打印的斐波那契数列...原创 2018-11-19 14:26:06 · 326 阅读 · 0 评论 -
NO.3 一元二次方程求实根中关于double类型scanf()问题的总结
//求方程ax^2+bx+c=0的根//分析:1、方程有根即:△=b^2-4ac&gt;=0; 2、方程无实根:△&lt;0#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;math.h&gt;int main(){ d原创 2018-11-21 17:46:08 · 291 阅读 · 0 评论 -
NO.4————打印100~200之间的素数
//打印100——200之间的素数(只能被1和它本身整除)//所需知识:for循环,break跳出循环;整除(i%j)//方法:开方法,遍历法#define _CRT_SECURE_NO_WARNINGS 1#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;math.h&gt;//函数法int is_prim...原创 2018-11-24 00:53:27 · 199 阅读 · 0 评论 -
NO.18 ---- 模拟实现strlen
// 递归和非递归分别实现strlen// 递归法:int strlen(char str[]){if (*str == '\0') return 0;return 1 + strlen(str + 1);}// 非递归法:int strlen(char string[]){char *p = string;while (*string != '\0') stri...原创 2018-12-24 12:15:18 · 114 阅读 · 0 评论 -
NO.19 ---- 求n!
// 递归和非递归分别实现求n的阶乘// 分析:n!=n*n(n-1)!// 递归法:int factorial(int n){if (n == 1) return 1;return n*factorial(n - 1);}// 非递归法:int factorial(int n){int i;int ret =1 ;for (i = 1; i <= n; ...原创 2018-12-24 12:18:20 · 143 阅读 · 0 评论 -
NO.20 ---- 打印整数的每一位
// 递归方式实现打印一个整数的每一位void print_num(int n){if (n > 9){ print_num(n / 10) ;}printf("%d ", n % 10);}int main(){ int n;printf("请输入一个整数:");scanf("%d", &n);print_num(n);printf("\n");...原创 2018-12-24 12:20:18 · 143 阅读 · 0 评论 -
NO.36 ----C语言中动态内存管理相关函数的使用
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>// 动态内存相关int main(){ // 内存扩容使用realloc,函数原型:void* relloc(void* ptr,size_t size);——>ptr是要调整的内存地址,size为调整之后的新si...原创 2019-03-06 19:12:34 · 97 阅读 · 0 评论 -
NO.37 ----C语言库函数中字符串相关函数的模拟实现
#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>#include <assert.h>#include <string.h>模拟实现strlen 函数(求字符串长度)的实现 函数原型:size_t strlen(const char* str);i...原创 2019-03-08 20:19:44 · 339 阅读 · 0 评论 -
NO.30 ----C语言入门阶段总结
0原创 2019-03-12 13:31:23 · 97 阅读 · 0 评论 -
NO.38 ----喝汽水问题and找不同问题
喝汽水:一瓶汽水1元,两个空瓶换一瓶,问:20元能喝多少瓶汽水.思路:20-&gt;10-&gt;5-&gt;2-&gt;1…1int DrinkWater(int money){int sum = 0;sum = money * 2-1;return sum;}void test1(){int money = 0;printf("请输入你要买气水的钱:");scanf...原创 2019-03-13 16:13:30 · 141 阅读 · 0 评论 -
C++基础知识001
1、C++简介C++是在C语言的基础上进一步优化而来的,它既可以进行C语 言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行面向对象的程序设计。2、命名空间:用来避免标识符命名污染与命名重复的。命名空间的定义及使用// 命名空间:用来避免C语言中的命名冲突// :: 作用域限定符// 命名空间的定义// 命名空间的使用:// N::a...原创 2019-05-09 21:44:09 · 241 阅读 · 0 评论 -
C++智能指针总结及模拟实现
1、为什么需要智能指针?智能指针是一种预防型的内存泄漏的解决方案。智能指针在C++没 有垃圾回收器环境下,可以很好的解决异常安全等带来的内存泄漏问题。2、什么是智能指针?简单的来说就是设计一个类,让它能够具有指针的行为(重载 * 和 -> ),同时能够自主管理资源的申请与释放(体现在构造函数与析构函数);以下为一个简单的只能指针的代码实现:template<cla...原创 2019-07-17 20:03:18 · 335 阅读 · 0 评论 -
C++三大特性之继承
1、继承的概念及定义>>继承是面向对象程序设计语言实现代码复用的一种手段,它允许你定义一个新类(派生类)对基类进行功能的拓展,类似于人类的遗传,派生类拥有基类的一部分(或全部)特性,也拥有自己的特性。继承的定义格式:class 派生类名称 : 继承权限(public、protected、private) 基类名称>>单继承:class <派生类名>...原创 2019-07-10 18:40:59 · 229 阅读 · 0 评论 -
C++中的异常处理
1、C语言中处理错误的方式:①assert,当程序发生错误时终止程序,如内存错误等②打印错误状态信息,perro、errno③C标准库中的setjmp和longjmp的组合使用首先设置一个跳转点(setjmp() 函数可以实现这一功能),然后在其后的代码中任意地方调用 longjmp() 跳转回这个跳转点上,以此来实现当发生异常时,转到处理异常的程序上,在其后的介绍中将介绍如何实现。...原创 2019-07-13 21:35:49 · 371 阅读 · 0 评论 -
C++三大特性之多态
1、多态的概念①多态的字面意思就是同种事物的不同形态②多态的分类:静态绑定(编译期间确定的多态)和动态绑定(程序运行时确定的多态)③动态多态的实现条件:前提必须是在继承体系中>>基类中必须包含有虚函数,在派生类中必须对基类中的虚函数进行重写>> 在调用虚函数必须通过基类的指针或引用④表现形式>>在程序运行时基类的指针或引用指向不同的类...原创 2019-07-09 21:34:52 · 199 阅读 · 0 评论 -
C++基础知识002【类和对象的定义和使用】
1、类的定义:C++中用户自定义的一种数据类型,与C语言中的结构体相比,类能够更好的反应被描述的类型,勒种既可以包含成员变量,也可以包含成员函数。2、类的声明形式:class class_name {public: 公有成员变量或者成员函数private: 私有成员变量或者成员函数protected: 受保护的成员变量或者成员函数};3、类声明的内容:...原创 2019-05-16 21:42:28 · 422 阅读 · 1 评论 -
NO.35 ---- 文件操作相关知识
**文件操作相关函数介绍:1、文件打开函数fopen 用法:FILE fp=fopen( 参数一, 参数二 );参数一:可以直接写文件名,例如:test.txt;也可以写文件的绝对路径,例如: D:/test.txt参数二:打开文件之后的操作方式,主要有以下几种:*“r”.为读而打开文本文件.(不存在则出错)“w”.为写而打开文本文件.(若不存在则新建,反之,则从文件起始位...原创 2019-03-06 14:26:32 · 149 阅读 · 0 评论 -
NO.34 ---- 杨氏矩阵
杨氏矩阵有一个二维数组. 数组的每行从左到右是递增的,每列从上到下是递增的. 在这样的数组中查找一个数字是否存在。 时间复杂度小于O(N); O(N)代表一个函数如f(n)=n2就是O(n2)时间复杂度为n的平方。思路:根据该数组特点依次递增的特性,则可以先从数组的每一行的最一个元素开始,如果相等就直接输出,如果小于要查找的数则用下一行的最后一个元素再去比较。如果大于就用该行...原创 2019-01-30 19:18:42 · 147 阅读 · 0 评论 -
NO.33 ----调整数组使奇数全部位于偶数前面
题目描述:调整数组使奇数全部都位于偶数前面。思路分析:遍历数组,如果左边是奇数则继续,同时如果右边是偶数继续,否则停止#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <stdlib.h>// 使得数组中所有的奇数位于数组的前半部分,偶数位于后半部分int sort(int arr[10],...原创 2019-01-30 18:47:41 · 116 阅读 · 0 评论