- 博客(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 *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关注的人