版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,第六章数 组 数组: 长度固定, 类型相同的元素的有序集合,1.一维数组 一. 定义形式: 类型说明符 数组名常量表达式 其中: 类型说明符: 可以是整型,浮点型,字符型,也可以是 构造类型:说明元素的类型, 常量表达式: 整常量,字符常量和sizeof表达式,且其 值为正整数(浮点常量不行):指明元素 的 个数. 例:int b10; float a4*5; char mc-a; int p2*sizeof(double);,例: int c10.0 ; /*错误*/ float t-5; /*错误*/,2,明确以下几点: 1. 常量表达式说明了数组元素的个数(长度),数组下界 从0开始
2、编号,元素的类型由类型说明符指定. 例: int b10; 定义了b是含有10个元素的int 型数组,其元素表示 为b0,b1,b2,.b9 机器分配10个单位的连续存储空间,每个单元存放 一个int 型的值. 例: char mc-a; /* m0, m12个元素,都是char */,2. 定义数组时, 数组元素的个数必须确定. 例: int n; char namen; /*错误*/,3. 数组长度不显示说明的情况(引用性说明,可不给出数 组长度,定义性说明必须给出长度): 1) 数组标识符作为函数参数时(引用性说明,不必给出数 组长度) 如: copystr ( char s , cha
3、r t ) /*长度由实参数组给出*/ . ,2) 给数组赋初值时 如: int b5=1,2,3,4,5; int a =1,2,3,4,5,static int b5=1,2,3; = static int b =1,2,3,0,0; 初值个数少于长度时,外部数组和静态数组,后面元 素为0值,自动数组后面元素值不确定.,4,初值个数多于长度时,错误 例: int c3=1,2,3,4; /*错误*/ 4. 一维数组(具有一个下标)描述了数学上的向量或线 性序列,5,二. 对数组元素的访问,数组引用形式,引用数组元素: 赋值,输入,输出等操作 引用数组名(指针或作为函数的调用参 数(实参)
4、),数组元素的表示:下标变量:数组名整型表达式,例: 编程: 统计10个整数中奇数之和 1)用简单变量做 main( ) int x,i,y=0; for ( i=1; i=10; +i ) scanf ( “%d”, else printf ( “sum=%dn”, y); ,) 用数组做 main( ) int i, x10, y=0; for ( i=0; i=9; + i ) scanf ( “%d”, ,例: 编程输出20个元素的数组中最大数与最小数 #define N 20 main ( ) int i, max , min, aN; for ( i=0; imax ) max=a
5、i; if ( aimin ) min=ai; printf ( “max=%dn”, max ); printf ( “min=%dn”, min); ,8,例: 编程:计算多项式的值:,解:,如:,#define N 6 main( ) int i; float x, aN, p=0.0; for ( i=0; in; +i ) scanf (“%f”, ,当i=0,1,2,.,n时,p=p*x+a 其中:p 的初值为0,i,9,例: 输入10个整数将它从小到大排序输出. 采用冒泡排序法(两两比较法). void sort ( int a , n ) int i, j, temp; for
6、 ( i=0; jaj ) /*交换*/ temp=ai; ai=aj; aj=temp; ,10,#define N 10 main( ) int i, j, bN; printf ( “input %d numbers: n”, N ); for ( i=0; iN; i+ ) scanf ( “%d”, ,注: 数组名作为函数的参数传送时, 并不是复制数组, 而 是实参数组的开始地址,11,即: 第0个元素的地址: b0, 这就是说: 数组名表示该数 组作为数组的首地址,即:形参数组中元素的变化会 影响实参数组中元素的变化(与简单变量作参数 传值不同!).,例: 用对调元素的方法.反向输
7、出数组中的元素. 解: 对调元素: a0与an-1, a1与an-2, ,设: 用i, j, 表示对调元素的下标,则确定: 1) i 与j的关系为: j = N i 1 2)i 的变化范围: i 的起始位置0, 终止位置为p=(N / 2)-1 例如: N=8时 N=9时 i=0,1,2,3 对调 i=0,1,2,3 a4不动 j=7,6,5,4 j=8,7,6,5,12,#define N 9 main() int i, j, t, p, aN; printf ( “input %d numbers: n ” , N ); for ( i=0; iN; i+ ) scanf ( “%d”,
8、,13,练习: 1.将10个整数的数组从小到大排序,输出排序后的元 素和每个元素所对应的原来次序(下标值) 例: 输入: 27, 3, 25, 27, 14, 39 输出: 3 1 14 4 25 2 27 0 28 3 39 5 2.输入15个整数,从大到小排序.方法: 小数从最后位置开 始起排,然后输出该15个整数. 3.将15个整数元素的数组a15从第m个元素(由键盘输入) 一直到最后元素平移到数组的开头, 把a0到am-1中 的元素,向后顺移,2.字符数组与字符串 一.字符数组与字符串的说明及初值化 字符数组: 以字符类型组成的数组且最后一个元素不用 0结尾. 字符串: 每一个元素类型
9、为char 的一维数组, 即以结束 符 0结尾的字符数组. 例:字符串的说明: char s6 = “HAPPY” ; char s = “HAPPY” ; char s = H,A,P,P,Y, 0; 等价于: s0=H, s1=A, , s5=0 可见: 字符串常量对应的变量形式是字符串(非简单 变量). 例:字符数组的说明: char s1 = H,A,P,P,Y;,二.字符串的操作 对字符串的引用,赋值和其他运算与普通数组相同,必须逐个元素进行. 与普通数组不同处理:输入scanf或输出printf函数用%s对整个字符串处理 如: scanf ( “%s”, s); /*用数组名, 而
10、不是 scanf ( “%s”, 则指输出:123,Turbo C 标准字符串文件string.h 中标准串处理函数可供调用: 常用函数 gets(s) 输入一个字符串到s puts(s) 输出s字符串 strcpy( s1, s2 ) 将字符串s2拷贝到s1中 strcat ( s1, s2 ) 把串s2接到s1之后 strlen ( s ) 求s的串”0”以前的字符个数 strcmp ( s1, s2 ) 串比较: s1与s2相同(长度相等,对应元素 相同)则返回0 s1s2时,则返回一正整数. s1s2时,则返回一负整数,例: 编程统计输入字符串中,字母,数字,空格,和其他字符的个 数.
11、 #include int a, d, s, t; /*利用外部变量带出多个值*/ main( ) char text80; printf ( “input string : n ” ); gets ( text ); a=d=s=t=0; count (text ); /*数组名作实参表明数组的首址*/ printf ( “ alph: %d, digit: %dn ”, a, d ); printf ( “ space: %d, other:%d n ”, s, t ); /*count函数*/,count ( char str ) int i; for ( i=0; stri!=0; i
12、+ ) if ( ( stri = a ,例:将一个整数转换成对应的数字串,并输出(需要把数字串反向)如输入:-123 , 则输出:-123,#include #define INTLEN 6 void reverse ( char s ) /*将串s 求反*/ int c, j, i ; for ( i=0, j=strlen(s) 1 ; ij; i+, j- ) c=si; si=sj; sj=c; ,/*将整数转换成串*/ void itoa ( int n, char s ) int i, sign; if ( ( sign=n )0); if ( sign0) si+=-; si=
13、0; reverse(s); ,main( ) int n; char sINTLEN; printf ( “input a integer:” ); scanf ( “%d”, ,3.多维数组 一.多维数组定义及初始化 一般定义形式: 存储类型说明符 类型说明符 数组名常量表达式1 常量表达式2=初值表;,例: int x34; /*二维数组有两个下标值 */ 表示3行4列12个元素组成的数组,3行4列排列逻辑结构(矩阵) x00 x01 x02 x03 x10 x11 x12 x13 x20 x21 x22 x23 按行分配线性存储地址:,例: int a32 = 1,2,3,4,5,6
14、; 赋初值:a00=1 a01=2 a10=3 a11=4 a20=5 a21=6 等价于:int a32 = 1,2 , 3, 4, 5, 6 ; int a 2= 1,2 , 3, 4, 5, 6 ;,注: 1) 显式赋初值时,多维数组除最左边一维下标不必指出 长度,其余各维均要指出长度,第一维的长度由初值个 数确定.,2) 可以只给部分元素赋初值,例: 定义,则: int a33 = 1,0,0, 0,1,0,0,0,1 ; int a33 = 1, 0,1,0,0,1 ; int a3 = 1, 0,1,0,0,1 ;,3) 二维数组可看成特殊一维数组,即: 以行的元素为首址的一维数组
15、.,如: int a23; /* a0 3行2列,每列含4个元素的三维数组.,4) 一维数组在逻辑上表示线性表或向量结构 二维数组在逻辑上表示平面上的表格或矩阵结构 三维数组在逻辑上表示空间点阵的结构 n维数组在逻辑上表示n维空间点阵的结构,二.多维数组元素的访问,例: 求3*4矩阵中最大元素的值及所在的行号和列号,main( ) int i, j, row=0, col=0, max; int a34; printf ( “ input array element : n” ); for ( i=0; i3; i+ ) printf ( “ input %d line: n”, i ); f
16、or ( j=0; j4; j+ ) scanf ( “%d”, ,for ( i=0; i max ) max = aij; row =i; col=j; printf( “max =%d; row=%d, col=%dn”,max, row,col ); /*end of main*/,按行输入:1 2 3 4 5 6 7 8 9 10 11 12,三.字符串数组 二维字符数组中每一行元素中都含有字符串结束符0称为字符串数组. 例: char weekday 4= “sum”,”mon”,”tue”,”wen”, ”thu”,”fri”,”sta” ; 其中: 为7行4列的二维字符串数组,
17、每一行是一个字符串,字符串长4包括0. 如:char s23=a,b,c,d,e,f;二维字符数组,不是字符串数组.,操作: 字符串数组中一行元素可以同字符串一样输入 输出及与字符串相同的其他操作. 例: char weekday74; int i; for ( i=0; i7; + i ) scanf ( “%s”, weekdayi ); /*注:不要加*/ for ( i=0; i7; +i ) printf ( “%sn”, weekdayi ) ;,上机题: 编程:输入个整数存入一维数组,按逆序重新 存放后再输出 编程:输入一个3*5的整数矩阵,输出其中最大值, 最小值和他们的下标 输入一个字符串(以回车符n结束),将其中所有小写字母变为大写字母,然后输出 编程:输入个实数的数组,编写一函数,查找该数组的最大数的值及下标值,最小数的值及下标 值,在主函数中,输出这些值.,作业题: 下列程序的功能是输出数组s中最大元素的下标,请填空 main( ) int k, p; int s = 1,-9, 7,2,-10,3; for ( p=0, k=p; psk )_; printf
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 湖南成考高升专理化综合高频选择真题
- 2026年安阳幼儿师范高等专科学校招聘合同制工作人员1人笔试备考题库及答案解析
- 2027中国长江三峡集团有限公司高校毕业生专项招聘笔试备考试题及答案解析
- 2026福建漳州市交通发展集团有限公司招聘12人考试备考题库及答案解析
- 广东华润银行2027届秋季校园招聘考试参考题库及答案解析
- 2026年宁夏煤业人员招聘考试备考试题及答案
- 2026年吉林外国语大学行政管理岗位招聘(若干)笔试参考题库及答案解析
- 2026福建三明城发绿城物业服务有限公司人员招聘3人考试备考题库及答案解析
- 2026福建三明城发城市服务集团有限公司公开招聘工作人员1人考试模拟试题及答案解析
- 2026年聊城科技职业学院第二批公开招聘人员笔试备考题库及答案解析
- 2026年共青团基础知识考试题库附答案
- 安全使用家电课件
- 生产现场管理6S培训
- 广东省湛江市2026届高三普通高考10月调研测试物理试题+答案
- DB11∕T 2363-2024 医疗机构安宁疗护服务规范
- 纺织企业职业病防护与检测报告
- 《文学理论》第九讲:文学风格、流派与思潮
- 《现代办公事务处理》全套教学课件
- 江西省人防工程质量监督管理指导手册(试行)
- 长沙市外墙外保温、外墙内保温、屋面标准图集
- 系列非晶合金干式电力变压器安装使用说明书
评论
0/150
提交评论