2003C语言第五章(数组)

上传人:豆浆 文档编号:47447010 上传时间:2018-07-02 格式:PPT 页数:96 大小:947KB
返回 下载 相关 举报
2003C语言第五章(数组)_第1页
第1页 / 共96页
2003C语言第五章(数组)_第2页
第2页 / 共96页
2003C语言第五章(数组)_第3页
第3页 / 共96页
2003C语言第五章(数组)_第4页
第4页 / 共96页
2003C语言第五章(数组)_第5页
第5页 / 共96页
点击查看更多>>
资源描述

《2003C语言第五章(数组)》由会员分享,可在线阅读,更多相关《2003C语言第五章(数组)(96页珍藏版)》请在金锄头文库上搜索。

1、第第5 5章章 数组数组1本章主要内容本章主要内容n n数组的引进数组的引进n n一维数组的定义及引用一维数组的定义及引用n n二维数组的定义及引用二维数组的定义及引用n n多维数组的定义及引用多维数组的定义及引用n n字符数组的定义及引用字符数组的定义及引用n n字符串处理函数字符串处理函数2数组的引进n数组是相同类型变量的有序集合。n一个数组里集合了多个数据对象, 这些数据对象被称为数组中的元素。n数组中的每一个元素都属于同一种 数据类型,它们用一个统一的数组名 称和下标(元素在数组中的位置)来 唯一确定。n数组也是变量。需要先定义后引用 。3数组举例:intint a6; a6;n上面定

2、义了一个整型数组。n数组名称为an数组中有6个整型变量n数组中的6个基本元素为: a0,a1,a2,a3,a4,a5 。 n上面方括号中的05是数组下标,表明 各个元素在数组中的位置。 47.1.1 一维数组的定义n一维数组的定义: 当数组中每个元素都只带 有一个下标时,这个数组就被称为一维 数组。 n定义一维数组的一般形式: 数据类型名数组名常 量表达式;n例如:int num5; float score10; 5定义一维数组时,说明几点:1 1“数据类型名数据类型名”可以是任意的数据类可以是任意的数据类 型。型。 2 2“数组名数组名”必须是合法的标识符。必须是合法的标识符。 3 3“常量

3、表达式常量表达式”表示数组长度(即数表示数组长度(即数 组中的元素个数),一定要用方括号括起来组中的元素个数),一定要用方括号括起来 ,且,且里面不允许包含变量里面不允许包含变量。 4. 4. 一维数组中每个元素只有一个下标,一维数组中每个元素只有一个下标, 并且第一个元素的下标为并且第一个元素的下标为“0 0”,最后一个,最后一个 元素的下标为元素的下标为“数组长度减数组长度减1”1”。6注意:n若在程序编译或运行时再给 数组长度赋值,程序将在编译 时出错。n例如:main() int n;scanf(“%d“,char chn; 变量说明部分 一定放在main() 函数的开头!7一维数组的

4、引用1、数组必须先定义,后使用 2、数组变量一般不可以作为整体进行输入、输出、 赋值等操作;而是逐个引用数组元素。数组元素的引用 形式为:数组名下标这里的下标可以为整型常量、变量或表达式例如: for (i=0;i 数组名可以用作函数调用的参数(实参),字符数 组名可用于输入和输出字符串。 8【例例7.37.3】从键盘输入从键盘输入5 5个整数,将它们反序输出个整数,将它们反序输出 。 main()main() intint i; i; intint nums5; nums5; for(i=0;i=0;i- -)for(i=4;i=0;i- -)printf(“%5d“,numsi) prin

5、tf(“%5d“,numsi); ; 运行情况: 12 34 5 7 8989 7 5 34 129【例7.1】: 定义一个char型数组 a50 来按顺序存放输入的50个字符。算法如下 : #include Void main() char a50;int I;for (I=0;I=0;I-)printf(“%c”,aI);for (I=0;I=49;I+)printf(“%c”,aI); 输入为:agsdkjtwqxy a g s d k j a0 a1 a2 a3 a4 a5 t w q x ya45 a46 a47 a48 a49输出为: yxqwtjkdsga agsdkjtwqxy

6、10【例例7.47.4】从键盘输入从键盘输入1010个学生成绩个学生成绩,要求输出要求输出 所有高于平均分的成绩。所有高于平均分的成绩。sum=0; for(i=1;i=average)printf(“%d”,xi);Xi117.1.3 一维数组的初始化Y初始化,即赋初值。C语言允许定义数组时 直接对数组进行初始化。Y一般形式: 类型说明符 数组名常量表达式 数值表;Y举例: float var8=0.1,1.2,2.6,3.5, 4.3,5.5,3.5, 5.5; int a5=2,3,4,5,6; 初始化时,各元素的值要顺序放初始化时,各元素的值要顺序放 在一对花括号里面,各元素值之间用逗

7、号间隔在一对花括号里面,各元素值之间用逗号间隔 。12说明:YY当花括号中的数值表中的数据个数少于数当花括号中的数值表中的数据个数少于数 组定义中的元素个数时,组定义中的元素个数时,C C语言将这些数据方语言将这些数据方 别赋给数组的前几个元素,其余数组元素自别赋给数组的前几个元素,其余数组元素自 动被初始化为动被初始化为0 0。YY当对数组元素赋初值时,可省略数组长度当对数组元素赋初值时,可省略数组长度 。 例如: float var=0.1,1.2,2.6,3.5 , 4.3,5.5,3.5, 5.5; int a=2,3,4,5,6;系统将认为数组的元素个数就是后 面初始化时所提供的数据

8、的个数。13YYC C语言规定,只有静态存储(语言规定,只有静态存储(staticstatic)数数 组、外部存储(组、外部存储(externextern)数组才能初始化。数组才能初始化。YY新的新的C C标准(如标准(如Turbo CTurbo C中)更允许对局中)更允许对局 部自动(部自动(autoauto)数组初始化。数组初始化。YY如果定义数组时没有对数组元素初始化如果定义数组时没有对数组元素初始化 ,外部数组和函数的局部静态数组中的所有,外部数组和函数的局部静态数组中的所有 元素都将被自动初始化为元素都将被自动初始化为0 0。YYTurbo CTurbo C编译系统编译系统对在对在m

9、ainmain函数下的静态函数下的静态 存储数组初始化时,可省略存储数组初始化时,可省略staticstatic关键字。关键字。14Y为数组中若干元素赋相同初值时,要注意 不能随意简化。 例如: float var8= 0.1,0.1,0.1, 0.1,0.1, 5.5,3.5, 5.5; 不能简化为: float var8= 0.1*5,5.5,3.5, 5.5; 否则,系统将认为数组中的各元素的 值分别为: var0=0.1*5,var1=5.5, var2=3.5,var3=5.5,var4=0, ,var7=0。15Y允许以赋值方式为数组各元素赋初值。 例如: float var4;

10、var0=0.1*5;var1=5.5; var2=3.5;var3=5.5;Y也可以使用控制语句为数组元素赋初值。 float var4; int i; for(i=0;i f0;f2 = f1的代换。算 法如下: Long int f0=1,f1=1; int I; Printf(“%12ld%12ld”,f0,f1); For (I=2;I#define n 20 void main( )float a n,t;int i,j,flag;for (i=0; i=n-1;i+)scanf(”%f”,do flag=1;for (j=0;jamid;2. top=mid+1=5,bot=9,

11、mid=(top+bot)/2=7;amid=a7=89;比较x 与amid,则xamid;3. top=mid+1=2,bot=3,mid=(top+bot)/ 2=2; amid=a2=22;比较x 与amid,则xamid4. top=mid+1=3,bot=3,mid=(top+bot)/2=3;amid=a3=31;比较x 与amid,则xamid,则下一步查找范围应该在mid+1到bot之间,即top=mid+1;重复上述过程直到bot void main( ) int a15 ,mid,top,bot,x,i, find;for ( i=0; ibot) printf (”%d:

12、 not been found.n”,x); 50例 以下程序运行后,输出结果是 。 main ( ) int y=18,i=0,j,a8; do ai=y%2;i+; y=y/2; while(y=1); For (j=i-1;j0;j- -) printf(“%d”,aj); A)1000 B)10010 C)00110 D)1001 Do-while循环的条件是 y=11)a0=18%2=0;y=18/2=9; 2)a1=9%2=1;y=9/2=4; 3)a2=4%2=0;y=4/2=2; 4)a3=2%2=0;y=2/2=1; 5)a4=1%2=1;y=1/2=0;i=4+1=5 结束

13、循环 For (j=4;j0;j- -) 依次输出: a4a3a2a1 1001 D51例执行下面的程序段后,变量k中的值为 。int k=3, s2;s0=k; k=s1*10; A) 不定值 B) 33 C) 30 D) 10A对于静态数组 Static s2 系统会自动赋初值0, 数组s2 S0=K;s1没有被赋值 int s2=052读程序,写出运行结果1. main( ) int a10=1,2,3,4,5,6,7,8,9,10 int k,s,i; float ave;for (k=s=i=0;imax) max=a0j;row1=0;c ol1=j;elseif(a0j max)

14、 max=aij;row1=i;col1=j;else if(aijmax) max=aij;row1=i;col1=j; if(aij main() char string315; int i; for(i=0;in常用字符串函数88(1) 字符串连接函数v格式:strcat(串1,串2)v功能:连接两个字符串, 将“字符串2”接在“字符串 1”的后面,“字符串2”不 变。v例:c1=“wu”,c2=“han ”v则strcat(c1,c2)=“wuhan ”89(2) 字符串比较函数v格式:strcmp(串1,串2)v功能: 若“字符串1”“字符串2”,则函 数返回值为一正整数;若“字符串1” main() static char str140=“white“, str2 =“snow“; puts(strcpy(str1,str2) ;printf(“%sn“,strcpy(str1,“Red rose“); 运行该程序,结果显示:字符串函数 定义在头文件 string.h中white snow Red rose93(5) 其他字符串处理函数n n转换小写字母函数转换小写字母函数 strlwrstrlwr( (串串) ) 功能:将功能:将

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号