国二数组知识讲述

上传人:最**** 文档编号:117943413 上传时间:2019-12-11 格式:PPT 页数:48 大小:312KB
返回 下载 相关 举报
国二数组知识讲述_第1页
第1页 / 共48页
国二数组知识讲述_第2页
第2页 / 共48页
国二数组知识讲述_第3页
第3页 / 共48页
国二数组知识讲述_第4页
第4页 / 共48页
国二数组知识讲述_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《国二数组知识讲述》由会员分享,可在线阅读,更多相关《国二数组知识讲述(48页珍藏版)》请在金锄头文库上搜索。

1、语言程序设计 第7章 数 组 2004 数组:是构造类型,元素由基类型(整、实、字符)组成 。 它是有序的、同类型数据的集合。 一组数 同种类型 有序的 标记标记 (称为为下标标)从0开始计计,如一组组数长长6,则则从05 一、一维数组的定义和引用 1、一维数组的定义 形式:类型说明符 数组名常量表达式 如:int a5; float b10; 其中的元素分别是: a0、 a1、 a2、 a3、 a4 b0、 b1、 b2、 b3、 b4 b5、 b6、 b7、 b8、 b9 说明: 命名规则:数组名是由合法的标识符组成。 数组组名后是用 括起来的是常量表达式, 常量表达式表示数组组的长长度

2、, 包括:整、字符、符号常量表达式(最后都转转成整形)。 如: int a2+3,b5,ca,_d8,xyz#(#=35) #define N 5 main() int aN;printf(“%dn”,a1=100); 以下是否正确? int a(10), bx, %5, 83, x-y50, 5x100 又如: int i=5; int a5+i是否正确性? 数组的长度: int a5: 包含a0, a1, a2, a3, a4 共5个元素,下标从0 4 注意:在Turbo C 中超过过定义义的数组组下标标元素是可以引 用的,系统统不作检查检查 。 思考:会造成什么问题问题 ?注意下面的a5

3、,a6 main( ) int i, a5; for(i=0;i=4;i+) printf (“a%d=%d n”,i,ai=i+1); printf (“a5=%dt”,a5); printf (“a6=%d n”,a6); 运行结果: a0=1 a1=2 a2=3 a3=4 a4=5 a5=-30 a6=285 数组组大小的定义义只能是常量,而不能是变变量或动态动态 地定 义义: main( ) int n=5,an; a1=100; printf (“a1=%dn”,a1); 编译编译 指出:constant expression required in function main (主

4、函数中要求常量表达式) 因为为,在编译时编译时 ,C编译编译 器根据已知数组组大小分配内存。 引用规则: 1.先定义,后使用。 2.引用形式:数组名下标 下标可以是整、字符 型的常量、变量(使用时)或表达式。 3.引用方法:针对元素而不是整个数组。 如: a0=ab-a + ab -96 +a3 - a2*2 a0=a1 + a2 +a3 - a4 2、一维数组元素的引用 例:C对数组a顺序赋值,逆序输出 main( ) int a5,i; for(i=0; i=0;i- -) printf( “a%d=%dn”, i, ai ); 运行结果 : a4=4 a3=3 a2=2 a1=1 a0=

5、0 实现的方法有: 1.定义时对数组元素初始化 如: int a5=1, 2, 3, 4, 5; 2.只给部分元素赋值,其他为0 如:int a5=1, 3, 5; 3.初始化时给全部元素赋0值 如:int a5=0,0,0,0,0; 或 int a5=0; 4.对全部元素赋初值时可以不指出长度 如:int a5=2,4,6,8,10; 或 int a =2,4,6,8,10; 效果一样样。 3、一维数组的初始化 例:求Fibonacci数列问题。 关于斐波那契算法:头头两个数各为为1,以后的每个数皆 为为前两个数之和。 main( ) int i; int f20=1,1; for(i=2;

6、i20;i+) fi=fi-2+fi-1; for(i=0;ibij=aji 4、二维数组程序举例 两数组组行列互换换 main( ) int a23=1,2,3,4,5,6; int b32,i,j; printf(“array a:n”); for(i=0;i=1;i+) for(j=0;j=2;j+) printf(“%4d”, aij); bji=aij; printf( n”); printf(“array b: n”); for(i=0;i=2; i+) for(j=0;j=1;j+) printf(“%4d”,bij); printf(“ n”); 三、字符数组 字符型数组:用于

7、存放字符型数据。 一维字符数组:存放一个字符串 (每个数组元素存放一个字符) 二维字符数组:存放多个字符串 (行数是字符串的个数) 形式:char 数组名常量表达式 char 数组名常量表达式常量表达式 常量表达式:整、字符、符号常量。 例: char a5; a0=C; a1=H; a2=I; a3=N; a4=A; 1、字符数组的定义 如:char a5=C, H, I, N, A; char b5=C, H, I, N, W, U; 编译时将指出:初始化值太多 char c5=C, H, I; char d =C, H, I, N, A 系统自动确认其长度为5 2、字符数组的初始化 输出

8、一个字符串 main( ) char c10=I,_,a,m,_,h,a ,p,p,y; int i; for(i=0;i10;i+) printf(“%c”,ci); print(“ n”); 3、字符数组的引用 几点说明: (1)字符串:用双引号括起的若干字符,可将其存放 在一维或两维字符型数组中。 (2)字符串结束标志为: 0 (既无动作,又不 显示) (3)字符串的长度:第一个 0以前字符的个数 (4)在字符型数组或字符串中遇 0,即认为该字 符 串结束; (5)字符串可对字符型数组初始化 4、字符串和字符串结束标志 如:char c=“ I_am_happy” ; 系统自动在数组的最

9、后加了0 ,长度为11 或:char c=“ I_am_happy”; 系统自动在数组的最后加了0 ,长度为11 相当于: c=I,_,a,m,_,h, a,p,p,y, 0; 而 char c10=“CHINA” 长长度为为10 注意:字符0 并不一定都在字符数组组的后面,输输出 时时遇到第一个0 结结束; 问题:字符串用字符数组来表示 两者之间有何不同? 例 main( ) char a= a, b, 0, c, d; char b=“ab0cd” ; printf (“%sn%sn”, a,b); 运行结果: ab ab 数组a和数组b有何不同 ? 字符数组的输出: %c:输出一个字符

10、以数组元素 %s:输输出一个字符串 以数组组名 5、字符数组的输入输出 main( ) int i; char a10= “CHINA”; char b18=“CHINA0CHINA0CHINA” ; for(i=0;i10;i+) printf(“%c”,ai); printf (“n”); printf (“%sn”,a); for(i=0;i 串2 返回值为正数 其值是Ascii码的差值 串1 串2 返回值为负数 其值值也是Ascii码码的差值值 注意: 两字符串比较较不能用“= =” 运算符, 虽虽然编译编译 无错错, 但 结结果不对对。 (6)求字符串长度函数 形式:strlen(字

11、符数组) 功能:检测检测 字符串长长度。 返回字符串长长度值值,不包括 0 ; (7)大小写字母转换函数:strlwr(字符串) (8)小大写字母转换转换 函数:strupr(字符串) 例:输入一行字符,统计单词数,单词间用_ 分隔。 用scanf还是gets? 结束条件? 一个单词的条件? main( ) char s81; int i, n=0, w=0; char c; gets(s); for(i=0;(c=si)!=0; i+) if(c=_ ) w=0; else if(w= =0) w=1; n+; printf(“There_are_%d words_in_the_line n”, n); 输入:I_am_a_boy. 输出:There_are_4_word_in_the_line 其中: n: 统计单词数 w: 单词标志,在单词中为1,出了单词为 0 i=11

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

当前位置:首页 > 高等教育 > 大学课件

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