常见算法题(五)——剑指offer

剑指offer部分笔试题 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。 如果不要求顺序,那么可以使用从两边开始的双指针,向中间夹,然后交换两数;本题要求原来的顺序,那么思路就是找到第一个奇数,拿出来,把前面所有数后移一位,当然注意边界,利用一个indexl=-1来...
分类: 其他 发布时间: 05-07 23:36 阅读次数: 5

C语言基础:while与do while

        在第一章中我们已经简单学习了关于使用while语句来实现循环的操作,现在我们来详细讲述关于while语句的循环方式和do while语句的循环方式。一、whlie循环        while循环语句是C语言中最基本的循环方式,它的语法结构如下:while (条件表达){        //循环体}        while是C语言的一个关键字,其后是使用一个小括号中的条件表达式来...
分类: 其他 发布时间: 05-07 23:35 阅读次数: 5

编程小技巧:遍历数组

        今天跟大家分享的小技巧是关于数组遍历的。通常我们在对数组进行操作时常常会被数组的下标越界问题所困扰。当然在C语言中编译器不会去校验数组下标的边界,也就是说如果你定义了一个具有5个元素的数组,正面的操作方式在C语言中是完全合法的:int a[5] = {0, 1, 2, 3, 4}; a[-3]; a[-2]; a[-1]; a[5]; a[6]; a[7];        但是在其...
分类: 其他 发布时间: 05-07 23:35 阅读次数: 5

C语言基础:for语句

一、for循环语句         在本节中我们来一起学习另一种循环方式,它叫for语句。for语句的语法如下:for (初始语句; 条件表达式; 每次循环后执行语句){    printf("%d\n", day);}         在for语句中后的小括号中一共有三部分内容,每个部分用分号;隔开。第一部分为初始化语句,当程序执行for语句时首先执行此语句,并且只执行一次,与条件表达式是否成...
分类: 其他 发布时间: 05-07 23:35 阅读次数: 5

C语言基础:break与continue

一、跳出循环语句:break        在前面我们已经学习了关于循环程序的几种写法:while、do while、for等语句,我们知道,这些循环语句都有着一个特点,就是在每次循环时都要去检查循环的条件表达式是否成立,如果成立则继续循环,如果不成立则停止循环。但是在很多实际情况中我们需要程序在循环条件还成立的情况下就结束循环,对于这种情况C语言提供了一个关键字叫作break专门用于这种情况,...
分类: 其他 发布时间: 05-07 23:34 阅读次数: 5

C语言基础:goto语句

        在本节中我们来学习一个比较有争议的语句goto,goto语句可以使程序在没有任何条件的情况下跳转到指定的位置,所以goto语句又被称为是无条件跳转语句。它的语法如下goto label;//其它代码label:        其中,label为我们自己定义的一个标签,定义的规则与变量的命名相同,它的位置是不固定的,它可以写在goto语句的后面,也可以写在它的前面,然而goto语句...
分类: 其他 发布时间: 05-07 23:34 阅读次数: 3

C语言基础:函数的声明与定义

        在这一章中我们来学习一下关于函数的定义与使用。关于函数的概念我们可以这样理解,函数是一个功能的集合,它可以根据输入完成特写的功能,并将结果输出。当然有时候函数只是为了实现一些特写功能而并不一定要有输入或输入。我们想要自己编写一个函数需要编写两部分内容:声明和定义。函数的声明就是告诉编译器我们想要定义一个函数,并明确规定其返回值(输出)、函数名、参数表(输入)。声明函数的语法如下:...
分类: 其他 发布时间: 05-07 23:34 阅读次数: 4

C语言基础:函数参数与返回值

        在本节中我们来详细讲述一下函数的参数表与返回值。在定义一个函数时我们就需要确定这个函数的参数表及返回值。        一、参数表        参数表就是我们在调用这个函数时对它的输入内容,通过对函数的输入,使得函数在不同输入的情况下有着不同的输出,也就是返回值。例如我们定义一个用于计算两个变量之和的函数:int plus(int a, int b) { return a +...
分类: 其他 发布时间: 05-07 23:34 阅读次数: 5

C语言基础:不定参数

        在这一节里我们来学习C语言中另外一个重要的机制,不定参数。不定参数是指函数可以接收不确定个数的参数,不定参数用...来表示,它必须要写在正常参数表的后面,例如我们熟知的printf函数:int printf (char *fmt, ...);        printf的第一个参数为char* fmt,后面则是不定参数。它表示可以接收任意个数的参数。我们在调用这样的函数时可以向其传...
分类: 其他 发布时间: 05-07 23:33 阅读次数: 5

C语言基础:多文件编译

        多文件编译,在我们最早编写Hello World程序时我们就将程序写在了一个后缀名为.c的文本文件里,然后通过gcc编译器对其编译并运行。在本节我们将学习如何编写多个源文件的程序一、头文件header与源文件source        通常我们会在头文件中一些类型的定义、结构体定义、宏定义、函数声明、include包含等内容。而在源文件中编写实际的功能实现。        例如我...
分类: 其他 发布时间: 05-07 23:33 阅读次数: 6

C语言基础:变量的作用域

        在这一节中我们来学习一下关于变量的作用域。在前面的课程中我们已经知道如何定义变量,并对其赋值和计算,但并没有对其作用域做额外的说明。其实,我们定义的变量并不会一直有效,它只会在其作用域内有效,并在其作用域外失效。一、局部变量        我们最先是在main函数内部定义了一些变量并使用它们,例如:int main(int argc, char *argv[]) { int ...
分类: 其他 发布时间: 05-07 23:33 阅读次数: 6

C语言基础:简单数组

        本节我们将一起来学习关于数组相关的知识。在第一章中我们已经简单的学习过定义数组和使用数组,在本章我们将学习数组的详细内容,并与数组结合学习指针的概念与应用。       我们首先来看一看数组的定义,看下面例子其中其实定义数组与定义普通型变量没有什么区别定义一个变量时只是将这个变量只是向系统申请了一个变量,而定义数组则是相当于向系统申请了多个连续 变量,例如:short array[...
分类: 其他 发布时间: 05-07 23:33 阅读次数: 3

C语言基础:字符数组与字符串

        在本节中我们来学习关于字符数组和字符串的相关知识。我们知道定义一个数组时需要为其指定相应的变量类型。也就是说,定义了数组的类型之后这个数组中的所有变量就都是相同的类型。现在我们就来定义一个字符弄型的数组,如下:char hello[5] = {'H','e','l','l','o'};        这样我们就定义了一个字符型的数组,对于数组型的变量这样定义是没有问题的,但有两个方...
分类: 其他 发布时间: 05-07 23:32 阅读次数: 5

C语言基础:多维数组

        今天我们来学习数组的另一种用高级用法,多维数组。多维数组的定义与使用与数学定义一致,它可以表示多维的数值。        一、二维数组        例如我们先来定义一个二维数组int array[3][4] = { { 0, 0, 0, 0 }, { 0, 0, 0, 0 }, { 0, 0, 0, 0 } };        我们可以像上面例子一样在数组定义时为其指定...
分类: 其他 发布时间: 05-07 23:32 阅读次数: 6

C语言基础:地址与指针

        从这一节开始我们要学习C语言中最重要的一个机制——指针。指针是C语言的灵魂。想要学好指针,我们就要先从内存地址学起。一、内存地址        内存,实际上一可以存放很多字节数据的一个内部存储器。每一个存储单元为8个bit位,也就是一个字节byte,简写为B。这样多个存储单元线性的排列在一起,就构成了一定大小的存储空间。1024个字节为1KB,1024KB为1MB,而1024MB...
分类: 其他 发布时间: 05-07 23:32 阅读次数: 5

C语言基础:指针与数组

一、指针与数组的关系                其实,指针与数组变量并没有本质的区别,指针变量就是数组变量,而数组变量也是指针变量。为什么这么说呢?我们来看看面代码,定义一个数组array和一个指向这个数组首元素的地址的指针p,还有将数组变量直接赋值给了一个指针变量p1:int array[4] = { 0, 1, 2, 3 }; int *p = &array[0]; int *p1...
分类: 其他 发布时间: 05-07 23:32 阅读次数: 4

C语言基础:指针数组与数组指针

        一、指针数组        在这一节中我们来学习一个数组,这个数组比较特殊,也比较普通。说它特殊是因为这个数组是指针的数组,也就是说我们有一个数组,这个数组里存放的变量类型是指针型变量;说它普通是因为数组变量其实与其它普通变量没有什么区别,指针变量就是一种可以存放内存地址的变量,所以它们也可以被定义成一串连续的变量集合,这个集合就是指针数组。例如,我们可以定义一组变量,这组变量就是...
分类: 其他 发布时间: 05-07 23:31 阅读次数: 7

“坚持”的背后

        关于“坚持”这两个字大家都熟悉的不能再熟悉了,人们总是说:“如果你想做好一件事就要坚持到底。”“坚持就是胜利!”“贵在坚持!”对于这些话初时学得很对,但仔细想想我学得很有问题。为什么这么说呢?我们透过“坚持”这两个字的表面,想想它背后的意思是说:“这件事我本来不想做,我也不可能完成,但我要努力的做下去,咬紧牙关、历尽艰辛的走下去……”这是个很大的问题,我们做一件的事的动力是什么?初...
分类: 其他 发布时间: 05-07 23:31 阅读次数: 4

C语言基础:指针做参数

先来思考这样一个问题如果有两个变量需要互换其值,应该如何处理?答案非常简单:#include <stdio.h> int main(int argc, char **args) { int i = 3; int j = 5; int t; t = i; i = j; j ...
分类: 其他 发布时间: 05-07 23:31 阅读次数: 5

开始,做一个自己不认识的人

年少的我们其实都一样,对什么都并不甚懂,青春里的我们不懂什么是真正的爱情,却无比渴望,我们不懂是真正的生活,却一心向往幸福的天堂。   青春就是隔着玻璃看日出,在伞下看风雨。   青春是纯洁而又虚幻的,天真而又美丽的。   谁懂青春的美丽呢?肯定不是我们,年轻的我们。   新一代的我们,社会的变革浪潮拍打在我们的青春小船,我们的青春注定与时代共舞,这个时代给予我们的太多,机遇,物质,要求。
分类: 其他 发布时间: 05-07 23:30 阅读次数: 7