1、一维数组
一维数组是用于存储一维数列中数据的集合。一般形式为
类型说明符  数组标识符[常量表达式]  ,例如:int iArray[5];
一维数组的引用:
数组标识符[下标]  ;例如:iArray[2];
一维数组的初始化:
(1)定义数组时直接对数组元赋初值
(2)只给一部分元素赋值,为赋值的部分元素值为0
(3)在对全部数组元素赋初值时可以不指定数组长度
2、二维数组
一般形式:数据类型 数组名[常量表达式1][常量表达式2];
常量表达式1为行下标,常量表达式2为列下标
二维数组元素的引用形式:
数组名[下标][下标];
二维数组的初始化
(1)可以将所有数据写在一个大括号内,按照数组元素排列顺序最元素赋值
(2)在为所有元素赋值时,可以省略行下标,但是不能省略列下标
(3)可以分行个数组元素赋值。例如:int a[2][3]={{1,2,3},{4,5,6}}
(4)二维数组也可以直接对数组元素赋值
3、字符数组
数组中的元素类型为字符型时称为字符数组。字符数组的定义和使用方法和其他类型的数组类似。
字符数组的结束标志是“\0”,即,要比数值型数组存储时多用一个字节。
4、多维数组
多维数组的声明和二维数组相同,只是下标更多。
5、数组的排序算法
(1)、选择法排序:指每次选择所要排序的数组中的最大值(由大到小排序)的数组元素,将这个数组元素的值与前面没有进行排序的数组元素互换。即:最后一个元素和最前面没有排序的数比较
/*从小到大排序*/
for(i=0;i<9;i++)                     /*设置外层循环为下标0~8的元素*/
{
iTemp = a[i];                     /*设置当前元素为最小值*/
iPos = i;                         /*记录元素位置*/
for(j=i+1;j<10;j++)           /*内层循环i+1到9*/
{
if(a[j]<iTemp)                /*如果当前元素比最小值还小*/
{
iTemp = a[j];          /*重新设置最小值*/
iPos = j;                /*记录元素位置*/
}
}
/*交换两个元素值*/
a[iPos] = a[i];
a[i] = iTemp;
}
(2)、冒泡法排序:指在排序时,每次比较数组中相邻的两个数组元素的值,将较小的数(从小到大排序)排在较大的数前面。即:从最后一个元素开始依次和前面的元素比较,小则靠前。
/*从小到大排序*/
for(i=1;i<10;i++)                     /*外层循环元素下标为1~9*/
{
for(j=9;j>=i;j--)                /*内层循环元素下标为i~9*/
{
if(a[j]<a[j-1])           /*如过前一个数比后一个数大*/
{
/*交换两个数组元素的值*/
iTemp  = a[j-1];
a[j-1] = a[j];
a[j]   = iTemp;
}
}
}
(3)、交换法排序:将每一位数与气候的所有数一一比较,如果发现符合条件的数据则交换数据。即,依次比较,满足条件换,没满足条件就保持那个位子,然后由又用前面的数依次比较。
/*从小到大排序*/
for(i=0;i<9;i++)                     /*外层循环元素下标为0~8*/
{
for(j=i+1;j<10;j++)                /*内层循环元素下标为i+1到9*/
{
if(a[j] < a[i])                /*如果当前值比其他值大*/
{
/*交换两个数值*/
iTemp = a[i];
a[i]  = a[j];
a[j]  = iTemp;
}
}
}   
(4)、插入法排序:基本工作原理是抽出一个数据,在前面的数据中寻找相应的位置插入,然后继续下一个数据,直到完成排序。即取一个数放一个位置,取后一个数与前面排好了的数比较再放入。
     /*从小到大排序*/
for(i=1;i<10;i++)                                    /*循环数组中元素*/
{
iTemp = a[i];                               /*设置插入值*/
iPos = i-1;
while((iPos>=0) && (iTemp<a[iPos]))      /*寻找插入值的位置*/
{
a[iPos+1] = a[iPos];                     /*插入数值*/
iPos--;
}
a[iPos+1] = iTemp;
}
(5)、折半法排序:又称快速排序,是选择一个中间值middle(在程序中使用数组中间值),然后把比中间值小的数据放在左边,比中间值打的数据放在右边(具体的实现是从两边找,找到一对后进行交换)。然后对两边分别进行递归使用这个过程。即:从两头出发和中间的比较,两边都停止时(左边的比中间的大,右边的比中间的小)然后交换这两个停下的数,下次从xxxx开始
void CelerityRun(int left, int right, int array[])
{
int i,j;
int middle,iTemp;
i = left;
j = right;
middle = array[(left+right)/2];                    /*求中间值*/
do
{
while((array[i]<middle) && (i<right))     /*从左找小于中值的数*/
i++;     
while((array[j]>middle) && (j>left))     /*从右找大于中值的数*/
j--;
if(i<=j)                                        /*找到了一对值*/
{
iTemp = array[i];
array[i] = array[j];
array[j] = iTemp;
i++;
j--;
}
}while(i<=j);                    /*如果两边的下标交错,就停止(完成一次)*/
/*递归左半边*/
if(left<j)
CelerityRun(left,j,array);
/*递归右半边*/
if(right>i)
CelerityRun(i,right,array);
6、排序算法的比较
插入法、冒泡法、交换法排序的速度比较慢,但参加排序的序列局部或整体有序时,这种排序能达到较快的速度;在这种情况下,折半法排序反而会显得速度慢了。当n较小时,对稳定性不作要求时宜用选择法排序,对稳定性有要求时宜用插入法或冒泡法排序。
7、字符串处理函数:要添加头文件string.h
(1)字符串复制:strcpy(目的字符串组名,源字符串组名)
(2)字符串连接:strcat(目的字符数组名,源字符数组名)
(3)字符串比较:strcmp(字符数组名1,字符数组名2)。按照ASCII码顺序比较两个数组中的字符串,并由函数返回值返回比较结果(1>2=正;1<2=负;1=2=0;)
(4)字符串中小写字母变大写:strupr(字符串)
(5)字符串中大写字母变小写:strlwr(字符串)
(6)获得字符串长度:strlen(字符数组名)
8、反转输出字符串
int main()
{
int i;
char String[7]  = {"mrsoft"};
char Reverse[7] = {0};
int size;
size = sizeof(String);     /*计算源字符串长度*/
/*循环读取字符*/
for(i=0;i<6;i++)     //是6是因为字符串的大小为6,又是从0开始的,
{
Reverse[size-i-2] = String[i];     /*向目标字符串中插入字符*///“size-i-2”是因为String末尾一位是"\0",i的排位是从0开始,“size-1”结束。
}
/*输出源字符串*/
printf("输出源字符串:%s\n",String);
/*输出目标字符串*/
printf("输出目标字符串:%s\n",Reverse);
printf("%d\n",size);
getchar();
return 0;                              /*程序结束*/
9、获取系统日期和时间(要添加头文件time.h)
输出系统日期:
time_t nowTime;
time(&nowTime);                                   /*获取系统日期*/
               sysTime= localtime(&nowTime);               /*转换为系统日期*/
               printf("系统日期:%d-%d-%d \n",1900 + sysTime->tm_year,sysTime->tm_mon + 1
,sysTime->tm_mday); 
输出系统时间:
time_t nowTime;
time(&nowTime);                                   /*获取系统时间*/
               sysTime = localtime(&nowTime);               /*转换为系统时间*/
               printf("系统时间:%d:%d:%d \n",sysTime->tm_hour ,sysTime->tm_min
,sysTime->tm_sec);                    /*输出信息*/                    /*输出信息*/

《c语言从入门到精通》看书笔记——第8章 数组相关推荐

  1. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(上)——网络

    1.IP地址 每台计算机都需要一个IP地址以识别自己,IP地址由IP协议规定的32位的二进制表示,最新的IPV6协议将IP地址提升为128位,但还不能广泛应用. 32位的IP地址主要分为前缀和后最两部 ...

  2. 《c语言从入门到精通》看书笔记——第14章 文件

    1.文件的基本操作 (1)文件指针 文件指针是指向文件有关信息的指针,这些信息包含文件名,状态,和当前位置,他们保存在一个结构体变量中.在使用文件时需要在内存中为其分配空间,用以存放文件的基本信息.该 ...

  3. 《c语言从入门到精通》看书笔记——第13章 预处理

    1.宏定义 宏定义是预处理命令的一种,它提供了一种可以替换源代码中字符串的机制. 宏定义指令#define用来定义一个标识符和一个字符串,一这个标识符来代表这个字符串,在程序中每次遇到该标识符时就用所 ...

  4. 《c语言从入门到精通》看书笔记——第10章 指针

    1.地址与指针 地址:就是内存区中对每个字节的编号 指针:可以看作是内存中的一个地址.在程序中定义了一个变量,在进行编译时就会给该变量在内存中分配一个地址,通过访问这个地址可以找到相应的变量,这个变量 ...

  5. 《c语言从入门到精通》看书笔记——第3章 数据类型

    1.编程规范 (1)代码缩进:统一为4字符,用Tab (2)变量常量命名规范:常量命名统一为大写格式.如果成员变量,均以m_开始.普通变量,取与实际意义相关的名称,要在前面添加类型的首字母,并且名称的 ...

  6. 《c语言从入门到精通》看书笔记——第2章 算法

    1.通常,一个程序包含算法.数据结构.程序设计方法及语言工具和环境这四个方面 2.算法的特性: 有效性.确定性.可行性.输入(一个算法应有零个获多个输入).输出(1个或多个) 3.算法的优劣: (1) ...

  7. 《c语言从入门到精通》看书笔记——第1章 C语言的概述

    1.使用普遍的高级语言有:Fortran/ALGOL/Basic/COBOL/LISP/Pascal/PRLOLG/C/C++/VC/VB/Delphi/Java等 2. C语言是一个面向过程的语言, ...

  8. 《c语言从入门到精通》看书笔记——第16章 网络套接字编程(下)——套接字

    1.套接字概述 套接字是网络通信的基石,是网络通信的基本构件. 所谓套接字,实际上是一个指向传输提供者的句柄.在WinSock中,就是通过操作该句柄来实现网络通信和管理的.根据性质和作用不同,套接字可 ...

  9. 《c语言从入门到精通》看书笔记——第15章 存储管理

    1.内存的组织方式 程序被组织成以下4个逻辑段 (1)可执行代码 (2)静态数据.可执行代码和静态数据存储在固定的内存位置 (3)动态数据(堆).程序请求动态分配的内存来自内存池,也就是上面所列举的堆 ...

最新文章

  1. Golang中Buffer高效拼接字符串以及自定义线程安全Buffer
  2. junit 单元测试 - 参数化测试
  3. linux通过tftp下载的文件大小为0,linux 通过 tftp下载文件
  4. mqtt与硬件交互_一个关于小程序Iot的具体实现(MQTT版)
  5. 【pip install psycopg2安装报错】Error: pg_config executable not found.
  6. linux远程关闭不中断
  7. HDU2106 decimal system
  8. Postman系列之发送不同HTTP类型请求
  9. java interface作用是什么_Java注解总结:史上最全,有这一篇就够了
  10. phpcms调用语句
  11. 明月浩空html播放器,明月浩空音乐-绚丽彩虹|HTML5网站音乐播放器源码带后台-仅研究学习...
  12. 移动叔叔MTK6589一键ROOT工具v3.0+by+罗微
  13. c# u盘使用记录_用 C# 编写 USB 存储设备使用痕迹检测和删除工具
  14. Java黑皮书课后题第6章:*6.7(金融应用:计算未来投资回报率)编写一个方法,计算按照给定的年数和利率计算未来投资回报值,未来投资回报值是用编程练习题2.21中的公式得到的,使用下面方法头
  15. 可变焦、聚焦摄像头驱动程序-瑞盟 MS41908M
  16. 提高抗打击能力_提高抗打击能力的简单方法!
  17. cents7之我的ip问题
  18. ZJNU 2314-Sleepy Cow Herding
  19. mysql数据长度过长,1406 - Data too long for column ‘express_company‘ at row 1
  20. 2020春招 / 2021秋招阿里、腾讯、字节、快手、美团 JAVA 开发岗面试高频问题总结

热门文章

  1. click Edit button in Opportunity - why curr is displayed wrongly
  2. SAP UI5 OData框架里硬编码的80是怎么来的
  3. SAP UI5 dialog style max-height
  4. sap-statistics in SAP UI5 http roundtrip
  5. COM_ASET check in CRM Middleware inbound scenario
  6. Triangle Leetcode
  7. 一个由于Pricing RFC引起的UI超时问题
  8. SAP CRM系统里关于订单货币单位为日元的一些调试和配置关键点
  9. 在计算机应用领域 cad的指,在计算机应用领域,CAD的指的是____
  10. it计算机知识竞赛主持稿,校园IT知识竞赛策划书