自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 回溯算法 八皇后

#include <stdio.h>#include <stdlib.h>#define max 8 int queen[max], sum = 0; //queen数组内放的是皇后的纵坐标void show() //打印输出{ int i; for(i = 0; i < max; i++) { printf("(%d,%d)",i...

2018-11-27 02:30:35 147

原创 利用联合体判断大小端

小端:低地址存放低字节;大端:低地址存放高字节#include <iostream>using namespace std;int checkcpu(){ union w { int a; char b; }c; c.a = 1; return (c.b == 1);}int main(){ if(checkcpu() == 1) printf...

2018-03-06 14:05:14 644

原创 用递归的方法求n的阶乘

当n = 1 时,n = 1;当n > 1 时,n = n *(n - 1);#include <stdio.h>int rec(int n){ int t; if(n == 1) { t = 1; } else { t = n * rec(n - 1); } return t;}int main(){ int rec(int n); ...

2018-03-05 20:14:51 630

原创 拷贝构造的三种情况

1、用类的对象去初始化该类的另一个对象时;2、函数的形参时类的对象,调用函数进行形参和实参的结合时;3、函数的返回值时类的对象,函数执行完返回调用者时;#include <iostream>using namespace std;class Point{public: Point(Point &p); //拷贝构造 Point(...

2018-03-04 23:54:17 316

原创 多态性与虚函数

程序关联的两种方式 1、静态关联 关联工作在编译、链接阶段完成的情况称为静态关联。因为关联过程是在程序编译。链接期间完成的,因此有时也称早期关联或提前关联。在编译、链接过程中,系统就可以根据函数的参数类型或是个数等特征进行匹配后,确定要调用若干名函数中的哪一个。一般情况下,函数重载和运算符重载都属于静态关联。静态关联的主要优点是程序执行效率高,因为在编译、链接阶段有关函数调用和具体的执行代码的关系...

2018-03-03 19:42:42 153

原创 将I am from Shanghai变为 Shanghai from am I

#include <iostream>using namespace std;void RevStr(char *src){ char *start = src, *end = src, *ptr = src; while (*ptr++ != '\0') //遍历字符串 { if(*ptr == ' ' || *ptr == ...

2018-03-03 19:30:38 347

原创 不使用库函数实现strcpy,strlen函数

#include <stdio.h>char* strcpy(char * strDest, const char* strSrc){ int i = 0; if((strDest == NULL) || (strSrc == NULL)) //判断两个空间的有效性 { return NULL; } //char* strDestCopy = strDest; ...

2018-03-03 16:19:49 1021

原创 联合体题目

1. 结构和联合都是由多个不同的数据类型成员组成, 但在任何同一时刻, 联合中只存放了一个被选中的成员(所有成员共用一块地址空间), 而结构的所有成员都存在(不同成员的存放地址不同)。 2. 对于联合的不同成员赋值, 将会对其它成员重写,  原来成员的值就不存在了, 而对于结构的不同成员赋值是互不影响的。#include <stdio.h>union{ int i; char x[2]...

2018-03-03 15:59:52 433

原创 #pragma pack的作用

#pragma pack 用来设置对齐的数值,如#pragma pack(1),则是以1对齐,改变括号内的数值就改变了对齐的方式。#include #pragma pack(1)     //对齐长度变为1using namespace std;struct u         //u 的长度变为1+ 4 + 8 = 13{ char a; 

2018-02-01 09:57:23 236

原创 使用sizeof计算联合体(union)的大小

联合体的大小取决于他所有成员中占用空间最大的一个成员的大小。并且对于复合数据类型,如union,struct, class 的对齐方式为成员中最大成员的对齐方式。#include using namespace std;union u               //u的大小是其中最大的double类型成员a,所以sizeof(u) = sizeof(double)

2018-02-01 09:47:19 12154

原创 输入几个数(含有负数,小数),将他从小到大排序

第一种,推荐:#include int sequence(float a[], int num){ int i,j; float tmp; for(i = 0; i  {  for(j = i + 1; j   {   if(a[i] > a[j])   {    tmp = a[i];    a[i] = a[j];

2018-01-30 21:54:45 1181

原创 面试智力题五个嫌疑犯

题目有一个侦探逮捕了五个嫌疑犯。这五个人供出的作案地点有出入。进一步审讯了他们之后,他们分别提出了如下的申明:  A:五个人当中有一个人说谎。  B:五个人当中有两个人说谎。  C:五个人当中的三个人说谎。  D:五个人当中有四个人说谎。  E:五个人全说谎。  只能释放说真话的人,该释放哪几个人呢?---------------------

2018-01-30 09:34:49 1590

原创 直接选择排序

直接选择排序的基本思想:N个记录的直接选择排序后可以经过N-1次直接排序后得到的结果#include void SelectSort(int *a, int n){ int i, j; int temp = 0; int flag = 0; for (i = 0; i  {  temp = a[i];                   

2018-01-28 22:09:59 152

原创 有一分数数列:1/2,1/4,1/8.........用函数调用的方法,求值

#include double sum(int n){ double sum = 0; int i; for(i = 1; i  {  sum = sum + 1/(i * 2.0); } return sum;}int main(){ int n; printf("请输入要加几次\n"); scanf("%d",&n);

2018-01-26 21:56:04 1357 1

原创 编写一个函数实现2 的1000次方

一开始看到这题目,我觉得挺简单,后来写完后编译的时候才发现值为0。。。。才想起来溢出了,后来用数组做,然后倒着打印就可以了。#include #include using namespace std;int main(){ int a[1000] = {0}; int i,j,k; a[0] = 1; for(i = 0; i

2018-01-26 19:21:11 961

原创 编写一个程序,实现字符串逆序

#include #include #include int main(){    char str[100];    printf("请输入一个字符串:");    gets(str);    int i = 0;    char ch;    int len = strlen(str);    for(i = 0; i     {  

2018-01-26 14:36:43 3071

原创 sizeof和strlen的区别

区别如下1、sizeof 是操作符,strlen 是函数。2、sizeof操作符的结果类型是size_t,它在头文件typedef为unsigned int 类型,该类型保证能容纳所建立的最大对象的字节大小。3、sizeof可以用类型做参数,strlen 只能用char * 做参数,并且必须以“\0”结尾。4、数组做 sizeof 的参数不退化,要是传递给strlen 则退化为指针。5、大部分编译...

2018-01-26 10:19:04 144

原创 面试智力题三人决斗问题

题目三个小伙子同时爱上了一个姑娘,为了决定他们谁能娶这个姑娘,他们决定用手枪进行一次决斗。阿历克斯的命中率是30%,克里斯比他好些,命中率是50%,最出色的枪手是鲍博,他从不失误,命中率是100%。由于这个显而易见的事实,为公平起见,他们决定按这样的顺序:阿历克斯先开枪,克里斯第二,鲍博最后。然后这样循环,直到他们只剩下一个人。求各自正确策略下的存活概率。阿和克必须让鲍先死,鲍不死则必定杀

2018-01-25 20:09:45 2157

原创 库函数与系统调用的区别

库函数是语言本身的一部分,而系统函数是内核提供给应用程序的接口,属于系统的一部分。函数库调用是语言或应用程序的一部分,而系统调用是操作系统的一部分。用户应用程序访问并使用内核所提供的各种服务的途径即是系统调用。在内核和用户应用程序相交界的地方,内核提供了一组系统调用接口,通过这组接口,应用程序可以访问系统硬件和各种操作系统资源。 1.系统调用是为了方便应用使用操作系统的接口,而库函

2018-01-25 19:43:36 193

原创 快速排序

快速排序算法步骤: 1、从数列中挑出一个元素,称为 “基准”(pivot), 2、重新排序数列,所有元素比基准值小的摆放在基准左区间,所有元素比基准值大的摆在基准的右区间。在这个分区退出之后,该基准就处于数列的中间位置。这个称为分操作。3、递归地把小于基准值元素的子数列和大于基准值元素的子数列排序。递归的最底部情形,是数列的大小是零或一,也就是永远都已经被排序好了。虽然一直递归下去

2018-01-24 16:09:35 182

原创 shell(希尔)排序

希尔排序其实和直接插入排序差不多,只不过在直接插入排序前把数组变为基本有序的状态,效率有所提高。但也因此,希尔排序是不稳定的。#include using namespace std;void shellsort(int a[],int len){ int h,i,j,tmp;   h为步长 for(h = len/2; h > 0; h = h/2)  //希尔排

2018-01-24 11:13:18 181

原创 直接插入排序

直接插入排序类似打牌,一开始拿到一个数,接下来拿到的数与一开始的数比较若原来的数大,则下标加一,后来的数下标改为原来数的下标,若后来数较大,则原来数不变,后来数下标变为原来数下标加一#include using namespace std;void insertsort(int a[], int len){ int i,j,tmp; for(i = 1; i

2018-01-24 10:21:25 156

原创 冒泡排序

简单的冒泡排序,没什么好说的#include void BubbleSort(int array[], int len){ int i,j,tmp,exchange; for(i = 0; i  {  exchange = 0;  // 增加一个exchange参数  for(j = len - 1; j >= i; j--)  {   if(arr

2018-01-24 09:44:06 137

原创 局部变量能否和全局变量重名

1、局部变量能否和全局变量重名?     答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: " (域解析符)    局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。 

2018-01-23 19:26:49 16506

原创 面试智力题五束玫瑰花

题目:"一共有几位姑娘?"花店老板问。  "五位。"托马斯大叔答道。  "那么,您买五束玫瑰花吧。我想每束有八朵花比较合适。你要什么颜色的?黄的,还是粉色的、目的或者红的?每一种颜色都要一 点吧。"  "那也行。每种颜色来10朵花,一共40朵花。为了让五束花看 起来各有特色,我希望每一束花中不同颜色花朵的数量不全相同,不 "过每束花中每种颜色的花至少应该有一朵。"

2018-01-22 22:53:18 1111

原创 堆和栈的区别

首先,当一个C/C++编译的程序占用内存分为:栈(stack),堆(heap),全局区(静态区static),文字常量区以及程序代码区。堆:由程序员分配,若程序员在分配空间,到程序结束后没有释放则可能被操作系统(OS)回收栈:由系统自动分配以及释放,用来存放函数的参数值,局部变量的值。接着,聊一聊申请后系统的响应堆:操作系统有一个记录空闲地址的链表,当系统受到程序的申请时,

2018-01-22 22:30:31 138

原创 关键字static的作用

static关键字主要有三种用法第一点,static修饰全局变量当一个进程的全局变量被声明为static之后,他的中文名叫静态全局变量。静态全局变量和其他全局变量的存储地点并没有区别,都是在.data段(已初始化)或者.bss(未初始化)内,但是它只在定义它的源文件内有效,其他源文件无法访问它。第二点,static修饰局部变量普通的局部变量在栈空间上的分配,这个局部

2018-01-22 22:17:08 441

原创 C++中const的用法

C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。1.const 修饰成员变量 const修饰指针变量时:  (1)只有一个const,如果const位于*左侧,表示指针所指数据是常量,不能通过解引用修改该数据;指针本身是变量,可以指向其他的

2018-01-10 19:43:35 126

原创 Udp聊天室客户端

#ifndef _CHATING_H_#define _CHATING_H_#include #include #include #include #include #include #include #include #include #include #include #include #include #include #def

2017-12-29 14:53:29 378

原创 Udp聊天室服务器

#ifndef _UDP_NET_SOCKET_#define _UDP_NET_SOCKET_#include #include #include #include #include #include #include #include #define PORT            8888struct userinfo{ int fla

2017-12-29 14:51:07 386

转载 如何在scanf中输入带空格的字符串

写聊天室时,想输入带有空格的字符串(个性签名)C语言中scanf()函数提供的“%[]”格式串可以用来进行多个字符的输入,并对结束符进行自定义。 对于%[]还可以用^+任意字符(包括 eof)来结束字符串的输入,如%[^EOF]就是直到有EOF 输入,字符串才中止。参考代码:12345678#include void main

2017-12-27 17:47:52 4921

转载 sprintf的用法

写聊天室项目用到了这个函数说明1:该函数包含在stdio.h的头文件中,使用时需要加入:#include 说明2:sprintf与printf函数的区别:二者功能相似,但是sprintf函数打印到字符串中,而printf函数打印输出到屏幕上。sprintf函数在我们完成其他数据类型转换成字符串类型的操作中应用广泛。说明3:sprintf函数的格式:int s

2017-12-20 16:51:08 181

原创 Linux网络编程

Linux的优点之一就是在于它丰富而稳定的网络协议栈,其范围是从协议无关层(如通用的socket层接口和设备层)到各种网络协议的实现。对于网络理论介绍一般采用OSI模型,但是Linux中网络栈的介绍一般分为四层的Internet模型。TCP/IP 实际上一个协同工作的通信家族,为网络数据通信提供通路。为讨论方便可TCP/IP 协议组大体上分为三部分:    1、Inte

2017-12-10 22:57:57 133

原创 进程与线程,信号量与互斥量

进程与线程1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源,但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系 一个线程

2017-12-09 17:59:37 445

原创 Linux进程间通信4-6

Linux使用的进程间通信方式包括:1、管道(pipe)和有名管道(FIFO)2、信号(signal)3、共享内存4、消息队列5、信号量6、套接字(socket)本文介绍4-6的通信方式4、消息队列Unix早期通信机制之一的信号能够传送的信息量有限,管道则只能传送无格式的字节流,这无疑会给应用程序开发带来不便。消息队列(也叫做报文队列)则克服

2017-12-07 12:00:59 131

原创 Linux进程间通信1-3

Linux进程间通信的目的:1.数据传输    一个进程需要将它的数据发送给另一个进程2.资源共享    多个进程之间共享同样的资源3.通知事件    一个进程需要向另一个或一组进程发送消息,通知它们发生了某种事件4.进程控制    有些进程希望完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有操作,并能够及时知道它的状态改变

2017-12-07 11:39:26 154

原创 Linux进程控制编程

进程的定义;进程是一个具有一定独立功能的程序的一次运行活动,同时也是资源分配的最小单元。程序与进程的区别:程序是放到磁盘的可执行文件,进程是指程序执行的实例。进程是动态的,程序是静态的:程序是有序代码的集合;进程是程序的执行。通常进程不可在计算机之间迁移;而程序通常对应着文件、静态和可以复制进程是暂时的,程序使长久的:进程是一个状态变化的过程,程序可长久保存进程与程序组

2017-12-06 20:35:52 154

原创 Linux文件编程1

系统调用是指操作系统提供给用户的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的的服务。       程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。系统调用并不是直接与程序员进行交

2017-12-06 20:18:21 159

原创 C语言之通讯录

前几天的通讯录草稿的最终版本contact.h文件#ifndef _CONTACTS_H_#define _CONTACTS_H_#define SUCCESS  1000001#define FAILURE  1000002struct contact{ int id; char name[10]; char address[20]; char

2017-11-29 20:56:26 474

原创 通讯录草稿

这几天都在写通讯录程序。。。第一次写这么长的程序,不管从思路上还是从技术上我都有很多的不足之处,今天把大致草稿写好了,但还有一些要求没有实现,明天继续完善。。。通讯录说明文档(一)语言:c语言格式: 编号       姓 名        住址          电话      201701       ***         xxxx        183****5668要求

2017-11-24 21:47:34 249

空空如也

空空如也

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

TA关注的人

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