C语言入门教程 (八) 数组.doc_第1页
C语言入门教程 (八) 数组.doc_第2页
C语言入门教程 (八) 数组.doc_第3页
C语言入门教程 (八) 数组.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数组,顾名思义就是一组同类型的数。一、数组的声明声明数组的语法为在数组名后加上用方括号括起来的维数说明。本接仅介绍一维数组。下面是一个整型数组的例子:int array10;这条语句定义了一个具有10个整型元素的名为array的数组。这些整数在内存中是连续存储的。数组的大小等于每个元素的大小乘上数组元素的个数。方括号中的维数表达式可以包含运算符,但其计算结果必须是一个长整型值。这个数组是一维的。下面这些声明是合法的:int offset5+3;float count5*2+3;下面是不合法的:int n=10;int offsetn; /*在声明时,变量不能作为数组的维数*/二、用下标访问数组元素int offset10;表明该数组是一维数组,里面有10个数,它们分别为offset0,offset1,offset9;千万注意,数组的第一个元素下标从0开始。一些刚学编程的人员经常在这儿犯一些错误。offset3=25;上面的例子是把25赋值给整型数组offset的第四个元素。在赋值的时候,可以使用变量作为数组下标。main()int i,offset10;for(i=0;i=0;i-) printf(%d ,offseti);printf(n);题目的意思是先输入10个整数,存入到数组中,然后反序输出。三、数组的初始化前面说了,变量可以在定义的时候初始化,数组也可以。int array5=1,2,3,4,5;在定义数组时,可以用放在一对大括号中的初始化表对其进行初始化。初始化值的个数可以和数组元素个数一样多。如果初始化的个数多于元素个数,将产生编译错误;如果少于元素个数,其余的元素被初始化为0。如果维数表达式为空时,那么将用初始化值的个数来隐式地指定数组元素的个数,如下所式:int array=1,2,3,4,5;这也表明数组array元素个数为5。main()int i,array=1,3,5,7,9,11;for(i=0;i5;i+) printf(%d ,arrayi);printf(n);最终结果为1 3 5 7 9四、字符数组整数和浮点数数组很好理解,在一维数组中,还有一类字符型数组。char array5=H,E,L,L,O;对于单个字符,必须要用单引号括起来。又由于字符和整型是等价的,所以上面的字符型数组也可以这样表示:char array5=72,69,76,76,79; /*用对应的ASCII码*/举一个例子:main()int i;char array5=H,E,L,L,O;for(i=0;i5;i+) printf(%d ,arrayi);printf(n);最终的输出结果为72 69 76 76 79但是字符型数组和整型数组也有不同的地方,看下面的:char array=HELLO;如果我们能看到内部的话,实际上编译器是这样处理的:char array=H,E,L,L,O,0;看上面最后一个字符0,它是一个字符常量,Turbo C编译器总是给字符型数组的最后自动加上一个0,这是字符的结束标志。所以虽然HELLO只有5个字符,但存入到数组的个数却是6个。但是,数组的长度仍然是5。int i;i=strlen(array); /*求字符串的长度,在string.h里面*/可以看出i仍然是5,表明最后的0没有算。#include string.hmain()int i,j;char array=094387fdhgkdladhladaskdh;j=strlen(array);for(i=0;iprintf(n);其实我们可以根据判断0来输出字符串,看下面的:main()int i;char array=094387fdhgkdladhladaskdh;for(i=0;arrayi!=0;i+) printf(%c,arrayi);printf(n);举几个例子:1.输入10个整数存入数组中,然后把它们从小到大排列并放在同一数组中。(思路:先找出最小的,放在第一个位置,为了防止把原先的数覆盖掉,可以把原先的第一个数和最小数的位置互换)。main()int array10;int i,j,min,stmp;for(i=0;i10;i+) scanf(%d,&arrayi);for(i=0;i9;i+)min=arrayi;for(j=i+1;jarrayj) /*里面的4行语句很重要*/min=arrayj;stmp=arrayi;arrayi=arrayj;arrayj=stmp;for(i=0;i=i/2;j-)stmp=arrayj;arrayj=arrayi-1-j;arrayi-1-j=stmp;for(i=0;arrayi!=0;i+) printf(%c,arrayi);printf(n);3.一个已经排好序的数组,输入一个数,利用二分法把这个数从原数组中删除,数组顺序保持不变。如原数组为1,3,5,7,9,11,13,15,17,19,待删除的数为13,则输出为1,3,5,7,9,11,15,17,19。二分法:每次都是判断中间的数是否满足要求,若满足则删除,若不满足,则把该数当作边界,然后再找中点。例如这一题,第一次的是10个数的中点,为11,发现1113,再找11-15的中点13,正好,则删除。main()int array10=1,2,3,5,8,15,20,30,100,200;int first=0,end=9,middle=(first+end)/2,num,i;scanf(%d,&num);while(arraymiddle!=num) /*注意这里面的三行代码*/if(arraymiddlenum) end=middle;else first=middle;mi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论