C\C++
文章平均质量分 56
doctor_xiong
喜欢天空一般的简约白!
展开
-
【C】比较数组中有或没有相同的数,有就输出"有",没有则输出"没有"
第一种方法(不建议采用):int main(){ int arr1[] = {1,3,5,7,9}; int arr2[] = {2,4,6}; ... int i = 0; for(i=0; i<sizeof(arr1)/sizeof(arr1[0]); i++) //用siseof(arr1)来求取arr1中数组的长度 { ...i int j = 0原创 2017-03-21 22:33:15 · 853 阅读 · 1 评论 -
【C】平均分问题
问题:青年选手大赛,共有10名裁判。设计一个程序计算平均分(除去一个最高过分和一个最低分)#include#includeint main(){ int i=0, a=0,max=0,min=0,sum=0,num=0; double average=0; for(a=1;a<=10;a++) { printf("第%d个评委的打分:",a); scanf("原创 2017-03-19 15:49:03 · 839 阅读 · 0 评论 -
【C++】模板函数总结!!!
模板函数:模板函数代表的是一个函数家族,模板函数和类型无关。在模板函数使用的时候被实例化,根据实例化参数的类型产生函数的特定类型版本。要使用函数模板,用到的关键字是template,定义模板参数列表的形式:template,这里的class可以换成typename,T是模板形参的名称。这里可以使用class来替换typename,但是不可以使用struct来替换,这也是class和stru原创 2017-10-15 14:04:07 · 556 阅读 · 1 评论 -
【C++】浅谈C++里面的类!!!
在C++里面类是一个面向对象的开始,同时也是C++的精髓之一。其实在我个人理解的类就是一张盖房子的图纸,有了图纸就可以建造出来很多的大楼。C++里面也一样,有一个类类型,那么我们就可以用这个类创建出来很多的对象。例如:class Date{public: void SetDate(); Date(): ~Date();private: int _year; int _mon原创 2017-09-11 21:48:38 · 575 阅读 · 0 评论 -
【C++】初识多态!!!
在C++里面多态是一种重要的机制,多态是指“一种形式,多种方式”,在继承体系里面,对象通过基类的指针或引用来调用函数。多态分为静态多态和动态多态:静态多态:1、函数的重载 2、泛型编程特点:在编译器编译期间就确定好函数的形式(前期绑定)。动态多态:在程序运行期间才会确定函数的形式(动态绑定)。要实现动态绑定必须要满足两个条件:1、函数必须是虚函数 2、必须通过基类的指针原创 2017-10-11 22:55:57 · 273 阅读 · 0 评论 -
【C++】智能指针auto_ptr/unique_ptr/shared_ptr/weak_ptr!!!
在C++里面开辟空间和内存的释放都存在的内存泄漏的隐患,在C++里面引进了智能指针。auto_ptr:auto_ptr的实现机制是依靠资源的转移,在拷贝构造和赋值运算符重载的时候进行赋值对象的指向转换。unique_ptr:防拷贝,将拷贝构造函数和赋值运算符的重载放在protect里面,同时只给出这两个函数的声明。scoped_ptr:这个指针只能够管理单独的空间sha原创 2017-11-02 20:56:00 · 435 阅读 · 0 评论 -
【C++】模板类、特化以及偏特化!!!
模板类的定义和模板函数的定义类似,同样是已template的形式定义的。举个栗子:templateclass Example{public: Example() :data(NULL) {} Example(const T& d) :data(d) {} ~Example() {}private: T* data;};注意:在模板参数列表里面使用class和原创 2017-10-23 17:46:40 · 2149 阅读 · 0 评论 -
【C++】利用list和vector实现stack和queue!!!
stack的特点:stack在C++Reference里面有5个函数,分别是:empty(),size(),top(),push(),pop()。stack在数据进出时是:先进后出、后进先出。利用vector实现可以利用里面的push_back()和pop_back()函数实现。代码如下:template>class Stack{public: Stack()原创 2017-10-26 22:41:35 · 1270 阅读 · 0 评论 -
【总结】C++总结!!!
基础:1、C/C++的不同点关键字:C++98----->63文件后缀.c/.cpp源文件--->工程不同----->编译器不同--->语法不同函数----->默认类型:C里面默认int,C++没有默认 参数列表:C语言--->没有参数:可传可不传原创 2017-11-04 22:39:56 · 262 阅读 · 0 评论 -
【总结】C语言总结!!!
基础:1、在c语言里面C99标准里面有32个关键字2、for循环的执行流程:for(int i=0;i {} 流程: int i --->i{}---->i++3、goto语句仅能够在函数体的内部进行跳转。4、什么是数组? 概念:相同元素在原创 2017-11-04 22:39:01 · 729 阅读 · 0 评论 -
【C++】异常处理!!!
C异常处理:1、直接终止程序,比如在除法算式里面讲除数不小心给成了0.2、返回一个能够表示错误的值,附加错误码。3、调用一个已经准备好的错误情况下调用的函数。4、暴力解决的方式,直接将程序使用return或者exit退出。5、使用goto语句进行跳转。6、使用setjmp()和longjmp().注意:1、setjmp()和 longjmp()必须先调用,在异常的位原创 2017-11-04 22:53:04 · 375 阅读 · 0 评论 -
【目标】行动编织梦想!
哈喽,很高兴你能看到我的博客。 我是一名大二的科大学子,学的是“高大上”的信息与计算科学。是不是以为它是计算机系的专业呢? 回答是,那你就真的大错特错了,其实它是让人“生不如死”的数学系的!要是回答不是,那一定就是见多识广了。(ps:和本宝宝比还是有一定差距的啦!)。。。。哈哈,和大家开个玩笑了。相信大家一定比我见多识广多了。 我可是从高中就开始喜欢编原创 2017-03-18 21:30:06 · 455 阅读 · 2 评论 -
【其他】字符串的解析!!!
在操作字符串的时候经常会碰到,一类是如何将字符串的部分替换,另一类就是如何将字符串进行重新组合。一、如何将‘aaa@@@@bbbbbb@@@@@cccccccc@@@@@@dddddddddddd’,替换成‘aaa bbbbbb ccccccc dddddddddddd’ 要求:时间复杂度O(1),空间复杂度O(1)方法: 定义两个指针开始时候都指向字符开头,当另外一个走到需要去掉的字...原创 2018-02-08 19:16:44 · 291 阅读 · 0 评论 -
【C++】标准文件的输入输出!!!
在C++里面的IO都是以流的形式存在的,所以在对文件进行操作的时候也是以流的形式操作的。 主要的流:ifstream、ofstream、fstream,都包含于fstream头文件里面。 ifstream:从内存将文件数据读在硬盘 ofstream:从硬盘将文件数据读到内存 fstream:可以对打开的文件进行读写操作ofstream的继承关系 ifstream的继承关系 ...原创 2018-02-08 17:43:12 · 521 阅读 · 0 评论 -
【C】用c语言编写一个猜字游戏!!!!
首先,编写一个猜字游戏需要用户选择页面其次是,在游戏过程中如果猜错就需要重新输入(即需要用到循环结构)当用户猜对了,就需要停止程序。(使用break)#define _CRT_SECURE_NO_WARNINGS#include#include#include void menu(){ printf("******************************\n"); p原创 2017-03-28 23:23:47 · 4646 阅读 · 0 评论 -
【C】设计程序在屏幕输出一个菱形!!!
#include using namespace std;int main(){ int i, j ,k; for(i=0;i<=7;i++) { for(k=7;k>=i;k--) { cout<<" "; } for(j=0;j<=i;j++) {原创 2017-03-29 23:24:22 · 1092 阅读 · 0 评论 -
【C】数组排列顺序中冒泡法和选择法的比较
冒泡法:for (j=1;j<10;j++) { for(i=0;i<10-j;i++) { if (arr[i]>arr[i+1]) { t=arr[i]; //将最大的数向后移 arr[i]=arr[i+1]; arr[i+1]=t; } } }选择法:for(j=原创 2017-04-07 22:36:38 · 689 阅读 · 1 评论 -
【C++】new和delete隐藏的秘密!!!
在c语言里面有malloc、realloc和calloc来动态的开辟内存,对于这些函数的用法,在之前的文章里面有具体的用法介绍。但是在C++里面有new和delete来动态的开辟内存,同时C语言里面的动态开辟内存的函数也是可以使用的,那么有函数可以实现动态的内存开辟,为什么还要重新定义new和delete关键字来动态的开辟内存呢?这里注意,new和delete是关键字而不是函数,下面是一个原创 2017-09-16 20:16:51 · 421 阅读 · 0 评论 -
【C++】重载“<<"操作符和关键字static!!!
首先,重载已经在上一篇博客里面有简单的介绍,这篇博客来简单说一下重载“当我第一次想到重载“class Date{public: void operator<<(ostream &_cout); Date(int year,int month,int day) :_year(year) ,_month(month) ,_day(day) {}private: int _原创 2017-09-14 20:34:25 · 729 阅读 · 0 评论 -
【C++】多态机制的剖析!!!
C++里面实现多态需要两个条件:1、基类里面的函数为虚函数,并且在派生类里面对基类里面的虚函数进行重写 2、通过基类的指针或者引用来进行调用虚函数:因为在使用虚函数的时候会在对象的里面添加一张虚函数表,用来存储类里面的虚函数的地址。但是在这里,虚表的最后面不一定是0x00000000,这个和使用的编译器有关系。原创 2017-10-12 20:25:04 · 339 阅读 · 0 评论 -
【C++】继承的简单了解!!!
继承机制在C++里面是程序设计使代码可以重复利用的一种重要的手段,它允许在原有类的基础上进行扩展、丰富程序的功能。这样产生的类被称为派生类(子类),这个被继承的类就是基类(父类)。这里的继承类型和类里面的数据访问权限很类似:虽然在理论上有三种继承方式,但是在实际应用中常用的是public继承。class Base{public: int _pub;private原创 2017-10-06 14:44:31 · 342 阅读 · 0 评论 -
【C++】浅拷贝和深拷贝以及怎样实现一个简单的string类!!!
浅拷贝:在C++里面很多的时候都会用到用一个对象去给另外一个对象赋值,在表面上看到的两个不同的对象只是两个对象的值是相同的而已,其实在内部两个对象的地址其实是一样的。如下图:string s1 = "abcdef";string s2 = s1;这样的代码存在一个很大的问题,那就是在两个对象指向同一个内存的时候,当有一个对象被销毁的时候,那么这一块内存也会被delete,这样这块原创 2017-09-24 20:45:48 · 429 阅读 · 0 评论 -
【c】链表的操作!!!
void PushFront(pNode *head,Datatype d) //push data from front{ Node *p = *head; Node *New = malloc(sizeof(Node)); if (New == NULL) { perror("::"); exit(EXIT_FAILURE); } New->data原创 2017-08-02 22:08:57 · 287 阅读 · 0 评论 -
【C】单链表的简单实现和应用!!!
在单链表里面,每个节点包含一个指向下一个节点 的指针。链表的最后一个节点的指针字段是一个值为NULL的指针,他的作用就是提示链表后面不再有其他的节点。在你找到链表的第一个节点的时候调用节点里面的指针就可以依次访问剩下所有的节点。为了记住链表的起始位置,可以用一个根根指针。根指针指向链表的第一个节点,注意这里根指针只是一个指针,它不包含其他的任何数据。它的作用仅仅就是指向链表的开始节点,调用根指针就原创 2017-07-28 18:21:12 · 1031 阅读 · 1 评论 -
【C】动态内存开辟(2)——动态内存开辟实例!!!
//contact.h文件#ifndef __CONTACT_H__ #define __CONTACT_H__ #include #include #include #include //#define MAX 1000 #define NAME_MAX 20 #define SEX_MAX 5 #define ADDR_MAX 30 #define TELE_MA原创 2017-07-25 22:55:35 · 463 阅读 · 0 评论 -
【C】文件输入和输出!!!
c语言里面ANSI c标准采用缓冲文件系统处理文件,当处理数据的时候系统自动在内存区 为每一个正在使用文件开辟一个文件缓存区。从内存向磁盘输出数据必须先经过内存里面的缓冲区,当缓冲区充满之后,所有的文件一起被送到程序的数据区:在缓冲系统里面每个被使用的文件都在内存里面开辟一个相应的文件信息区,用来存放文件的相关信息,,因此就有一个文件类型的指针,简称文件指针。文件指针原型如下:#ifndef原创 2017-07-22 14:59:47 · 543 阅读 · 0 评论 -
【C】简单动态内存开辟(1)!!
malloc函数在c语言标准库里面提供了函数malloc,这个函数是想内存池里面申请内存(字节为单位)。当一个程序另外需要一些内存的时候就可以调用malloc函数来获取一块适合的内存,当用户调用成功时,函数会返回一个内存的地址。注意:这里申请成功的内存并没有初始化,里面存的是一些随机值,因此当申请成功一块内存的时候初始化非常有必要。#include#include #include原创 2017-07-09 17:08:10 · 349 阅读 · 0 评论 -
【C】浅谈c语言里面的结构体和位段!!!
结构体的定义:首先,在c语言里面的结构体定义所用到的关键字是struct,看下面一段代码:#define _CRT_SECURE_NO_WARNINGS 1#include struct A{ int i; char j;}q,w; //直接在结构体类型后面定义结构体变量struct S{ int a; double b; c原创 2017-07-07 14:12:53 · 537 阅读 · 1 评论 -
【C】指针的个人体会!!!
指针是c语言的重要部分,也是c语言的魅力所在。 首先指针是一个可以存储地址的变量,是要找到一个地址就可以干很多事情。比如:int a = 10;这是一个整形变量a,那么a就有一个对应的地址普通指针: 如果要定义一个指针可以存储a的地址,那么就可以int* p = &a;这样就可以将a的地址存储到指针变量里面,如果要对a的值进行修改就可以*p = ?进行修改。对于c原创 2017-06-30 21:59:41 · 375 阅读 · 0 评论 -
【C】函数整个调用过程即函数栈帧!
在c语言中,函数从内存的角度来分析函数的整个调用过程呢!1、首先了解两个寄存器变量,esp和ebp,他们分别是存放的是栈顶的地址和栈底的地址。2、要观察函数的调用过程需要从汇编代码开始分析。#include int Add(int x,int y){ int z = 0; z = x+y; return z;}int main (){ int a = 10; i原创 2017-05-14 23:00:32 · 374 阅读 · 0 评论 -
【C】c语言模拟实现strcopy函数和strlen函数!!
#define _CRT_SECURE_NO_WARNINGS 1#include int My_strlen(const char *ch) //加const是为了不要让其他的条件改变ch的值{ int count = 0; //定义一个计数器count while((*ch++)!='\0') //只要ch数组里面的字符串不是\0则计数器原创 2017-05-05 22:20:21 · 859 阅读 · 1 评论 -
【C】c语言里常见的一些错误用法!!!!
1.书写标识符时,忽略了大小写字母的区别。 main() { int a=5; printf("%d",A); } 编译程序把a和A认为是两个不同的变量名,而显示出错信息。C认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 2.忽略了变量的类型,进行了不合法的运算。 main() { float a,原创 2017-04-26 22:34:55 · 447 阅读 · 0 评论 -
【C】数组中sizeof的一些常见用法!!!
//一维数组int a[] = {1,2,3,4};printf("%d\n",sizeof(a)); 16//单个数组名做括号内参数代表整个数组大小printf("%d\n",sizeof(a+0)); 4//a+0表示数组的第一个元素大小printf("%d\n",sizeof(*a)); 4//*a表示数组中元素的大小printf("%d\n",sizeof原创 2017-04-16 22:31:19 · 4975 阅读 · 2 评论 -
【C++】TopK问题!
问题描述:在无序的数组中查找最大(最小)的前K个元素?例如:arr[] = {9,1,6,2,3,8,3,4,7,0}最大的四个元素是6,7,8,9思路:使用小堆,先将数组中的K个元素插入到堆中,然后再从第K个开始遍历数组,如果数组中的元素大于,堆顶元素,就将对顶元素pop,然后再将数组中的元素push进堆里面去实现代码:#include<iostream>u...原创 2018-07-17 16:35:49 · 1689 阅读 · 0 评论