什么叫数组呢?我们的第一反应是很多数组合在一起就是数组,字面意思,当然不仅仅是数字,字符也是可以的.

数组属于构造类型 .指相同类型的若干变量组织起来.

类型说明符 数组名 [常量表达式]

int  array[] ={0}           //定义一个空数组 .

1.数组的类型实际上是指数组元素的取值类型,对于同一数组,所以的数据类型都是一样的

int array1[] = {78,'o',10};    //o会转化为ASCII值,所以也是整形

//也是可以,是不是于上面的话矛盾呢?其实不是的,他说明的是里面的数组元素 都会转化为同一数据类型,不是说开始输入就全部相同

int array2[] ={ 67,32.3,92,16 };   

2.方括号的表示元素的个数,不能用变量来表示,只能使用常量或者常量表达式.

int a  = 3;

int array[a+1]   ={...}        //肯定要报错

3.打印数组是需要使用for循环,而不能简单的使用printf()函数

for(int i =0 ;i < strlen(array);i++){

  printf("array[%d] = %d\n",i,array[i]);

}

4.数组中下标越界

float score[] ={34.4,63.1,98.2,65.3,93.7,39.5};

printf("%f\n",score[56]);  //很明显score的下标小于56,在C语言中警告,但是在OC中会报错,需要注意'

5*.冒泡排序法

看了好多人写的冒泡博客,都是只写个程序,没什么具体的执行过程:

初始: 34 89 12 45 6 27 52 69  八个数进行从小到大的排序

    34 89 12 45 6 27 52 69    //第一位34第二位89比较, 34<89 不用换

      34 12 89 45 6 27 52 69    //第二位89和第三位12比较, 89 > 12 需要换

      34 12 45 89 6 27 52 69    //第三位89和第四位45比较, 89 > 45 需要换

        34 12 45 6 89 27 52 69    //...

          34 12 45 6 27 89 52 69    //...

            34 12 45 6 27 52 89 69    //...

              34 12 45 6 27 52 69 89    //..   @3

到此第一轮循环结束 ,89最大的值出来了,使用7次循环,然后我们在根据  @3的那组数字在来一遍 最后就剩2个数 ,不用在判断了.

通过判断需要使用八轮 这样的循环,所以for循环嵌套

for(int i = 0 ; i < n-1 ;i++){   //n代表个数 i从0开始, 最后一个数不用比较, 趟数总是比元素个数少一个.

  for(int j =0 ; j < n-i-1;j++ ) {

//第一轮7次内部循环  7+1 =8, 8就是n,但是我们j是从0起始,所以j<n-i-1 相当于8-0-1 刚好<7

// 或者(for j =n-1;j>=n;j--){..} 第一趟循环完成之后,开始第二趟,又开始从第一个和第二个,第二个和第三个...

      //交换数值,在内部循环中交换

      if( array[j] > array[j+1]){

        int temp =array[j];

        array[j] = array[j+1];

        array[j+1] =temp;

      }

  }  

}

但是我们发现很多时候我们不需要那么多的排序:,所以我们需要进行优化:

for(int i = 0 ; i < n-1 ;i++){

  int flag = 0 ;  //设置一个标记符 为0 表示未经过if判断和交换值.

  for(int j =0 ; j < n-i-1;j++ ) {

      if( array[j] > array[j+1]){

        int temp =array[j];

        array[j] = array[j+1];

        array[j+1] =temp;

        flag = 1;

      }

  }

  if(!flag){

    break;

  }  

}

5.字符数组

char str[] ="Iphone5S";            //系统会分配9个空间

char str1[] = {'i','p','h','o','n','e','5','s'};  //系统指挥分配8个空间

char str2[] ="6 Plus";

char str3[] ={0};

不同的是str后面还有一个隐藏的结束符号.完整的Str="Iphone5S\0", str1字符数组中在添加'\0'跟str就完全相同.

sizeof( ) 他不是一个函数,只是要操作符号,于++或者-- 相同,返回一个变量或者常量在内存中占的空间大小.

例如:

int count =9;

int num = sizeof(count);

printf("The end of Result :%d ",num);   //为4个字节

printf("%s\n", str1);        //2个字符数组都可以输出,%s打印字符串和字符数组

strlen(str1);          

//或者str1长度,就是实际的字符个数,8个 ,strlen 只适用于字符数组,数字数组的长度 = (sizeof(array) / sizeof(array[0]))

printf("%lu",strlen(str1));    //l代表long u表示unsinger无符号

strcat和strcpy有一个共同的特征,都是将后面的值给到前面.

strcat(str,str2);   //讲后面的str2拼接到前面str,str2不变,str 改变了

strcpy(str3,str);  //后面的str复制给空的数组str3

字符串大小的比较是以ASCII 码表上的顺序来决定,此顺序亦为字符的值。strcmp()首先将s1 第一个字符值减去s2 第一个字符值,若差值为0 则再继续比较下个字符,若差值不为0 则将差值返回。例如字符串"A"和"b"比较则会返回字符"A"(65)和'b'(98)的差值(-32)。

【返回值】若参数s1 和s2 字符串相同则返回0。s1 若大于s2 则返回大于0 的值。s1 若小于s2 则返回小于0 的值。

strcmp(str,str1);  //用来比较字符串(区分大小写),str于str1都必须是字符数组,在PHP 语言中就是字符串

char s1 = "AbCd";

char s2 = "aBcD":

int num  =strcmp(s1,s2);  //这里是s1 -s2

printf("The end of Result :%d",num);

最后考虑一个问题,如何讲2个int数字合并为一个数组

int a1[] ={23,56,4,90};

int a2[] ={45,52,79,34,8};

int a3[] ={0}

for(int i= 0 ;i < 9; i++){     //9为2个数组长度之和

  if(i < 4){

     a3[i] =a1[i];

  }else {

     a3[i] = a2[i-4];

  }

}

C语言基础04的更多相关文章

  1. Java入门 - 语言基础 - 04.对象和类

    原文地址:http://www.work100.net/training/java-object-class.html 更多教程:光束云 - 免费课程 对象和类 序号 文内章节 视频 1 概述 2 J ...

  2. Object Pascal 语言基础

    Delphi 是以Object Pascal 语言为基础的可视化开发工具,所以要学好Delphi,首先要掌握的就是Object Pascal 语言.Object Pascal语言是Pascal之父在1 ...

  3. C语言基础(转载自大海笔记)

    # C语言基础2015年03月26日10:04:411.    语言排行榜C——java——objective-C2.    进制:进制:进位机制.用普通的话讲,应该为人为的定义一种度量来标识一样东西 ...

  4. 01_C语言基础

    内容提要: 1. C语言概述2. 数据类型.运算符与表达式3. C语言程序结构 4. VC6.0使用练习 知识详解01:C语言的历史 1. C语言与其它语言比较 汇编语言: (1).可直接对硬件进行操 ...

  5. Go语言基础之time包

    Go语言基础之time包 时间和日期是我们编程中经常会用到的,本文主要介绍了Go语言内置的time包的基本用法. Go语言中导入包 Go语言中使用import关键字导入包,包的名字使用双引号(”)包裹 ...

  6. JavaScript 引入方式 语言规范 语言基础 数据类型 常用方法 数组 if_else 比较运算符 for while 函数 函数的全局变量和局部变量 {Javascript学习}

    Javascript学习 JavaScript概述 ECMAScript和JavaScript的关系 1996年11月,JavaScript的创造者--Netscape公司,决定将JavaScript ...

  7. D14——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D14 20180919内容纲要: 1.html认识 2.常用标签 3.京东html 4.小结 5.练习(简易淘宝html) 1.html初识(HyperText ...

  8. D12——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D12 20180912内容纲要: 1.数据库介绍 2.RDMS术语 3.MySQL数据库介绍和基本使用 4.MySQL数据类型 5.MySQL常用命令 6.外键 ...

  9. D05——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D05 20180815内容纲要: 1 模块 2 包 3 import的本质 4 内置模块详解 (1)time&datetime (2)datetime ...

随机推荐

  1. [Effective C++系列]-为多态基类声明Virtual析构函数

    Declare destructors virtual in polymorphic base classes.   [原理] C++指出,当derived class对象经由一个由base clas ...

  2. 已知要闪回的大致时间使用基于as of scn的闪回查询

    基本判断出要恢复误操作的dml的时间可以使用如下的方法进行数据的恢复: example: 一.创建test表 -------create table flashback_asof------ crea ...

  3. 【Lucene4.8教程之六】QueryParser与Query子类:如何生成Query对象

    一.概述 1.对于一个搜索而言,其核心语句为: searcher.search(query, 10); 此时,其最重要的参数为一个Qeury对象.构造一个Query对象有2种方法: (1)使用Quer ...

  4. Object转换为JSON格式字符串

    简介: 把JS的Object转换为Json字符串. 代码: function ObjectToJson(object) { // Object转换为josn var json = "&quo ...

  5. Vue.js实现拼图游戏

    Vue.js实现拼图游戏 之前写过一篇<基于Vue.js的表格分页组件>的文章,主要介绍了Vue组件的编写方法,有兴趣的可以访问这里进行阅读:http://www.cnblogs.com/ ...

  6. STM32F10xxx启动模式分析(详细)

    STM32的启动模式: STM32有三种启动模式,对应的存储介质均是芯片内置的:      1. User Flash Memory(Main Memory)  = 芯片内置的Flash,用户程序存放 ...

  7. ZigBee物理层协议规范

    在不同的国家和地区,ZigBee技术所允许使用的工作频率是不同的,而对于不同的应用频率范围,其调制方式.传输速率均不同,众所周知,蓝牙技术在世界多数国家都采用统一的频率范围,其范围为2.4GHz的IS ...

  8. Python中:self和__init__的含义 + 为何要有self和__init__

    Python中:self和__init__的含义 + 为何要有self和__init__ 背景 回复: 我写的一些Python教程,需要的可以看看 中SongShouJiong的提问: Python中 ...

  9. bzoj2015 [Usaco2010 Feb]Chocolate Giving

    Description Farmer John有B头奶牛(1<=B<=25000),有N(2*B<=N<=50000)个农场,编号1-N,有M(N-1<=M<=10 ...

  10. Vis.js图表插件

    Vis.js是一款基于JavaScript的可视化图表库,Vis.js不像其他的图表库那样仅仅支持几种常用的数据图表,比如线形图.柱状图.饼图等,Vis.js支持上百种不同类型的可视化图表类型,比如时 ...