自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TCP与 UDP

.TCP与UDP区别?   TCP:面向连接、可靠的通信方式,适用于传输大量数据、对可靠性要求高的场合   UDP:无连接、不可靠的通信方式,但由于无连接,传送速度较快,适用于对可靠性要求不高、数据量较小,速度要求较快的场合。什么时候选择TCP,什么时候选择UDP?   TCP:传输大量数据、可靠性要求较高的场合;   UDP:传输少量数据、对可靠性要求不高、速度要求较

2017-05-18 20:39:26 295

原创 编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。

编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。    例如,原始二维数组为,逆向存放后变为。试建立一个类REVARR,完成上述工作。具体要求如下:(1)私有数据成员int a[M][N]:初始化时存放原始二维数组,最终存放逆向存放后的二维数组。(2)公有成员函数REVARR(int x

2017-05-12 22:39:29 802

原创 从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。例如,若字符串为”cocoon”,删除重复出现的字符后,其结果是字符串”con”。

定义一个字符串类DelSameStr,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。例如,若字符串为”cocoon”,删除重复出现的字符后,其结果是字符串”con”。具体要求如下:(1)私有数据成员。char *s1:指向原字符串。char *s2:指向结果字符串。(2) 公有成员函数。DelSameStr(char *s):构造函数,动态分配

2017-05-07 22:30:36 2320

原创 多进程与多线程的区别?

多进程与多线程的区别?  数据共享:进程数据分开,共享复杂,同步简单;线程共享进程数据,同步复杂;  开    销:内存占用多,切换开销大,CPU利用率低;线程内存占用少,切换开销小,CPU利用率高;  复 杂 度:进程编程简单,调试简单;线程编程、调试较复杂;  互相影响:进程之间相互独立,不会互相影响;线程之间联系密切,一个线程挂掉可能导致整个进程挂掉;  分 布 式:进程

2017-05-06 22:38:15 310

原创 进程间通信的方式有哪些?各自的优缺点及应用选择?

进程间通信的方式有哪些?各自的优缺点及应用选择?  管道:只能单向传递,且只能在有亲缘关系的进程中使用  有名管道:也是单向传递,但可以在非亲缘进程中使用   信号量:可以用来控制多个进程对共享资源的访问  消息队列:消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点;  信号:信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。

2017-05-05 21:14:09 559

原创 typedef 关键字

typedef  为C语言的关键字,其作用是为了一种数据类型(包括内部数据类型 int , char 等和自定义的数据类型 struct 等)定义一个新的名字。即是说,同一种数据类型有两个名字表示,并不是说定义了新名字,原来的数据类型名就不能用。使用typedef 的目的有两个:一是给变量一个易记且意义明确的新名字;二是简化一些比较复杂的类型声明。(1)typedef 的最简单使用

2017-05-03 22:12:59 282

原创 万能指针void

void指针一般被称为通用指针或泛指针,它指向对象时,但该对象不属于任何类型。例如:      int *ip;      void *p;ip指向一个整形值,而p指向的对象不属于任何类型。任何时候都可以用其他类型来替代void指针,同样的void指针也可以代替其他类型。例如:int *p ,i = 3;void *d; p = &i; d = p;

2017-04-08 16:14:24 358

原创 空指针NULL

NULL 并不指向任何的对象,像这样的指针称为空指针。指针的值不能是整数值,但空指针是个例外,即空指针可以是一个纯粹的0。NULL不是被定义为0,二是被定义为“ (void*)0 ”,这两种值几乎是相同的。它可以被强制转换为 “ void * ” 、 “ char * ”, 即NULL 可以自动被转换为自己所需的任何类型的指针。

2017-04-07 21:00:58 474

原创 关于野指针

什么是野指针?例如:      int *p;    或     int *p = new int[1];     int i = 3;      p = &i;      delete p;          像上面的例子所示的,没有对p申请指定的访问内存区域(也就是说p指针的指向是随机的,指向的是内存空间的随机地址),或是p 指向一个已删除的对象,出现像这样

2017-04-06 22:33:16 228

原创 子线程循环 3 次,接着主线程循环 6 次,接着又回到子线程循环 3 次,接着再回到主线程又循环6 次,如此循环50次,试写出代码。

子线程循环 3 次,接着主线程循环 6 次,接着又回到子线程循环 3 次,接着再回到主线程又循环6 次,如此循环50次,试写出代码。#include #include #include int count = 0;   //计算总循坏的次数void *child_func(void)   //工作线程{int i = 1;       // 子线程的循坏次数

2017-03-20 21:42:20 394

原创 程序功能:建立一个带有头结点的单向链表,并将存储在数组中的字符依次转储到链表的各个结点中。

#include #include   // malloc 函数的头文件#include    // strlen 函数的头文件struct node                     {        char c;        struct node * next;             // 指向链表的下一个结构};/* 结构类型重命名 */

2017-02-09 19:52:37 2875

原创 输入个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果

1. 输入个32位的整数a,使用按位异或^运算,生成一个新的32位整数b,使得该整数b的每一位等于原整数a中该位左右两边两个bit位的异或结果。提示:0 ^ 0 = 0; 1 ^ 1 = 0; 0 ^ 1 = 1; 1 ^ 0 = 1;#include int main(){        int array[32] , new_bit[32];        //

2017-02-08 23:18:33 813

原创 利用二分法排序

#include int main(){        int array[10] , new[10];        int i , j , m ,k , low , up , mid ;   // low、up是每次二分法查找的头位置和尾位置,mid是中间的位置        printf("Please input 10 numbers for array:\

2017-02-07 20:15:24 397

原创 编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的

编写函数int stat(int a[],int n,int c[][2])。a指向的数组中保存了由n个1位整数组成的数列(n为偶数)。函数从前至后依次将a数组中每两个相邻元素拼成一个不超过2位的整数,从而生成有n/2个元素组成的整数数列;统计该数列中不同整数各自出现的次数,并将统计结果保存到c指向的二维数组中。函数返回不同整数的个数。 #include int stat(int

2017-02-06 22:54:09 539

原创 编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分

编写函数void count(char a[],char w[][10],int n,int b[])。功能是:统计w指向的数组中的n个单词在a指向的字符串中各自出现的次数(将非字母字符看作单词分割符),拧将统计结果依次保存在b指向的数组中。#include #include void count(char a[],char w[][10],int n,int b[]);

2017-02-05 17:56:55 1485 1

原创 对一个二维数组中的数据排序,方法如下: 将整个数组中值最小的元素所在行调整为数组第一行, 将除第一行外的行中最小元素所在行调整为第2行, 将除第1,2行外的行中最小值元素所在行调整为第3行,以此类推

#include int main(){        int array[5][5];        int i,j,k,temp,min;        int min_i = 0,m = 0;            //利用min_i记录最小的数的下标,用m记录换行次数        srand( time(NULL) );                 /

2017-02-04 21:05:05 356

原创 请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出

请编写一个C函数,该函数可以实现将一个整数转为任意进制的字符串输出#include void to_change(int num,int n);int main(){        int num,n;        printf("Please enter a number to change:");        scanf("%d",&num)

2017-02-03 22:30:06 1796 1

原创 输入一个字符串,计算字符串中子串出现的次数

#include #include int time(char *s1,char*s2);int main(){        char str[256];        char son[25];        int t;        printf("Please input a long strings:");        scanf("%

2017-02-02 20:17:36 1390

原创 编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字

编写函数void change(char *a,char *b,char*c)。 函数功能是首先把b指向的字符串逆向存放,然后将a指向的字符串和b指向的字符串按排列顺序交叉合并到c指向的数组中,两个字符串中过长的剩余字符接在c指向数组的尾部。例如,当a指向的字符串为"abcdefg",b指向的字符串为"1324"时,c指向的数组中字符串应为"a4b2c3d1efg"。#includ

2017-01-29 21:29:50 1813

原创 4.编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.

编写一个C函数,将”I am from shanghai ”倒置为”shanghai from am I”,及将句子中的单词位置倒置,而不改变单词内部结构.#include #define SIZE 255void reorder(char *s);int main(){        char str[SIZE] = " I am   from shang

2017-01-26 18:40:55 961

原创 将整数转换为10进制、2进制、16进制的数字串

将整数转换为10进制、2进制、16进制的数字串,采用函数调用方法。#include void to_binary(int n);              //将整数转换为二进制void to_dec(int n);                   //将整数转换为十进制void to_hex(int n);                   //将整数转换为

2017-01-23 22:54:51 583

原创 关键字 const

1)用带关键词const去声明变量是,则该变量不可以再通过赋值、增量、减量来修改该值。例如: const int money;                   //把money 限定为一个常量money = 100;                         // 该种赋值不允许const int money = 100;            // 用const 初始化

2017-01-22 20:41:37 219

原创 求二进制形式中的1的个数

输入int型整数,求出其二进制形式中的1 的个数。解题思路:十进制的数转换为二进制,用十进制整数反复对2取余,保留余数,再倒序输入就可以得到该整数的二进制形式。第一次取余得到的是最右边第一位二进制数,要得到下一位二进制需要对原数值除以2,再取余,取余得到的是依次往左的二进制位。#include int main(){        int a,n;        int i

2017-01-21 23:23:28 216

原创 求输入的字符串中字符最长的数字字符串

输入一组字符串,求出字符串中字符最长的数组字符串,输出它的首位置和数字个数及数字字符串。例如:输入:today0119and20170120           输出:location:13,number:8,number strings:20170120#include #include #define LEN 256                        

2017-01-20 20:15:47 481

原创 工程管理器make

Make工程管理器是完全根据makefile文件的编译规则命令进行工作的。mkaefile 文件由以下三项基本内容组成:1)需要生成的目标文件(target file)。2)生成目标文件所需要的依赖文件(dependency file)。3)生成目标文件的编译规则命令行。

2017-01-19 19:43:17 265

原创 对linux 的文本编辑vi或vim的基本操作

基本上文本编辑分为三种状态,分别是命令行模式、插入模式、底行模式,各模式的功能区分如下:(1)命令行模式:控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式或者底行模式。(2)插入模式:只有在插入模式下,才可以输入文字,按[ESC]键可返回命令行模式。(3)底行模式:将文件保存或退出vi或vim,也可以设置编辑环境,如寻找字符、列出行号等。以vim为例,对

2017-01-18 20:00:40 173

原创 位运算

位运算符是指它们对每位进行操作,而不影响左右两侧的位。注意请勿将位运算符和逻辑运算符(&&、||、!)相混淆,常规的逻辑运算对整个值进行操作。位运算符有:~(取反)、&(位与)、|(位或)、^(位异或)1)二进制反码或按位取反:~一元运算符~将每个1变为0,每个0变为1.例如:~(10011011)    // 表达式(01100100)      // 结果值

2017-01-17 19:18:48 243

原创 calloc()函数

内存的分配除了用malloc()函数外,还可以使用calloc()函数。例如:long  *newname;newname=(lonh*)calloc(100,sizeof(long));

2017-01-13 11:39:54 6886

原创 malloc()函数

malloc()函数,接受一个参数:所需内存字节数。该函数的功能是在程序运行时分配更多的内存。然后malloc()找到可用内存中一个大小合适的块。内存是匿名的;也就是说malloc()分配了内存,但没有为它指定名字。然而,它却可以可以返回那块内存第一个字节的地址。因此,可以把那个地址赋值给一个指针,并使用该指针来访问那块内存。函数malloc() 可用来返回数组指针、结构指针等等,因此一般

2017-01-12 21:40:23 408

原创 定义和声明

int  num ;在程序中,这样的语句叫声明语句。

2017-01-12 20:35:46 207

原创 常用的字符串函数

strlen函数,可以用来求字符串的长度。(前面的博客已)

2017-01-11 21:28:51 301 1

原创 数组和指针的关系

函数是

2017-01-06 21:51:12 350

原创 指针

指针是一种新的数据类型,它的值代表存储单元的地址,它的类型代表指针所指存储单元占用多少个连续字节内存单元。存放指针的变量称为指针变量。指针变量的格式是: 《存储类型》   *存储类型任选;变量前的*指明说明的变量为指针变量;而类型则指出指针变量所指向的数据类型,即指针所指向的存储单元中存放的数据类型。例如:int *p1,*p2,i,j;    //说明了两个整型指针变量p1,p

2017-01-06 20:04:20 275

原创 数组

数组是由一系列类型相同的元素构成。它的定义格式是:     数据类型      数组名[ 常量表达式]数据类型指明了数组中元素的类型,数组名可用标识符表示,[ ]方括号指明了数组中包含的元素数目。给数组的元素赋初值,称为数组的初始化。初始化的方法是将数组元素的初值依次放在一对花括号当中,值与值之间用逗号分开。1)对所有元素赋初值int  a[5]={0,1,2,3,

2017-01-05 22:09:04 193

原创 输出函数puts()、fputs()、putchar()、printf()

puts() 函数用于输出字符串,且在输出后自动在后面添加一个换行符。例如程序:#include#define DEF "I am a #define string"int main(void){    char str1[80]="An array was initializd to me.";    const char *str2="A pointer was i

2017-01-05 21:09:25 1360

原创 输入函数gets()、fgets()、scanf()、getchar()

gets()(代表get  string)它从系统的标准输入设备(通常是键盘)获得一个字符串。因为字符串没有预定长度,所以gets()读取字符直到遇到的一个换行符(\n)(按回车键可以产生这个字符)为止,并不包括换行符。gets()读取这些字符并在后面加一个空字符(\0),然后把这个字符串传递给调用它的程序。例:char name[30];        gets(name);

2016-12-31 21:15:45 302

原创 控制语句break、continue、goto

break 命令可以与三种循环形式(for、while、do  while)中的任一种以及switch 语句一起使用。break用在开关语句switch中的某一分支语句中,它的作用是结束开关语句的执行,直接将控制跳转到switch之后的第一个语句执行。若break 用在循环语句的循环体中,当程序执行到break时,直接跳过循环体的剩余部分,执行循环语句之后的第一个语句。例如:while((ch

2016-12-30 22:52:23 294

原创 sizeof 与strlen

sizeof 是一个运算符,且是单目运算符,用于计算操作数类型占用的字节数(即以字节为单位返回操作数的大小)。1个字节被定义为char类型所占用的空间的大小。操作数可以是一个具体的对象(比如一个变量),也可以是一个类型(如int)。它的一般格式是:sizeof(操作数)  PS:操作数若是一个类型,它必须要写在括号里,其他情况操作数可以不用括号括起来。建议使用括号更保险。例如:si

2016-12-30 22:39:30 275

原创 基本数据类型

程序处理的对象是数据,数据分为常量和变量。每个常量和变量都有自己的数据类型。而数据又分为基本数据类型和复合数据类型。基本数据类型包括整型、字符型浮点型等,复合数据类型有

2016-12-29 21:26:19 330

原创 if 语句

if语句被称为分支语句或是选择语句它的一般形式为:  if(expression)       statement 如果expression求得的值为真,就执行statement;否则,跳过该语句。statement可以是单个简单的语句也可以是由花括号标出来的复合语句(代码块)。 例如:      if(a>b)         printf(" %a is biger

2016-12-24 22:47:20 516

空空如也

空空如也

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

TA关注的人

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