数组与字符串

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
a[2]的地址:a+类型长×下标=1000+2×2=1004
表示:&a[2]
数组与字符串
12
3) 应避免下标越界,因调试的各阶段对下标越界不 做检查,越界将造成麻烦。
例如:有定义 int a[5]; 若:sum=sum+a[8];
将在1000+2×8=1016中引用一毫无意义的值;
若:a[5]=100; 将100存入1000+2×5=1010中,可能破坏程
采用数组的意义: 数组的下标可由变量来控制使其有规律地变
化,这就使得对于一组相关数据的处理比采用多 个简单变量更为简便和有效。
数组与字符串
7
5. 1 一维数组
1. 一维数组的定义 一般形式: 类型标识符 数组名[常量表达式]
数组说明
指定数组元素个数; 形式:整常数、
符号常量
命名方法同变量,但不能重名;
10
a[2]
按由小到大的下标顺序 1006
20
a[3]
a数组存储长度:
1008
21
a[4]
2×5=10byte

数组与字符串
11
说明:
1) 一维数组的指针
2)
即数组存储区间的起始地址;表示:数组名
2) 一维数组元素的地址(指针) 引用数组元素时,各元素的地址是由数组起始
地址及下标换算得出。
如:a[2] 其中[ ]是下标运算符,1级;
序代码或系统代码造成死机。
数组与字符串
13
4. 一维数组的输入、输出 1) 指定元素I/O:
scanf(”%d%d%d%d%d”, &a[0], &a[1], &a[2], &a[3], &a[4]); printf(”%d,%d,%d,%d,%d\n”, a[0], a[1], a[2], a[3], a[4]);
说明元素类型;
例:int a[5]; 定义了长度为5的一维整型数组a;
源自文库
数组与字符串
8
2. 一维数组的引用 引用单位:数组元素;或称为下标变量; 引用形式:数组名[下标 ] 其中:数组名指明要引用的数组;
下标指明要引用元素的标号; 下标形式:常量、变量、表达式; 下标取值:0、1、2 … (数组长度-1)
printf("a=%d\n", a); } 运行结果:a=1534
4
main() /*用for循环*/ { int i, a;
for(i=10, a=1; i>1; i--) a=2*(a+1);
printf("a=%d\n", a); }
数组与字符串
5
概述 C数据类型: 基本类型——整型、实型、字符型; 构造类型——数组、结构体、共用体;
int a[100], i; for( i=0; i<100; i++) a[i]=i+1; for(i=0; i<100; i++) { if( i%10==0) printf(“\n”);
printf(”%-5d”, a[i]); } for(i=99; i>=0; i--)
a[0], a[1], a[2] , a[3], a[4]);
5,10,10,20,21
数组与字符串
10
3. 一维数组的存储
编译系统为定义的数组分配连续的存储区间; 该区间字节数:元素类型长×元素个数
例:int a[5];

数组a的指针→1000
5
a[0]
1002
10
a[1]
各元素存储顺序:
1004
请你写一个程序来判断读入的数是完数,亏数还 是冗数。
数组与字符串
3
“猴子吃桃”问题。猴子第一天摘下若干个 桃 子,当即吃了一半,还多吃了一个。第二天又 将 剩下的桃子吃掉一半,又多吃了一个。以 后每天都 吃前一天剩下的一半零一个。到第 十天想吃时,见 只剩下一个桃子。求第一天 共摘了多少个桃子。
2) 利用循环控制下标变化实现I/O:
int a[100], i; for(i=0; i<100; i++)
scanf(”%d,”, &a[i]); for(i=0; i<100; i++)
printf(”%d,”, a[i]);
/*下标变化:0~99*/
数组与字符串
14
例:将一维数组各元素顺序输出、倒序输出、选偶 数项输出。
基本类型的特点: 每个基本类型都是不可再分割的量,基本类
型的变量在定义、存储、含义上都是独立的。
构造类型的特点: 每种构造类型都是由若干基本类型的量按一
定规则组织而成。
数组与字符串
6
数组的构成: 数组是同类型相关数据的集合;其中每个量
称为数组元素,数组元素是访问数组的基本单位。
数组元素的表示: 用数组名及下标来表示; a[0]、a[1]、a[2]、a[3]、a[4] …
这是个“倒推”问题。 设:第n天的桃子数为Xn,它前一天的桃子数为
Xn-1 则: Xn=Xn-1/2-1 可得到:Xn-1=2(Xn+1) 已知:X10=1
数组与字符串
main() /*用while循环*/ { int i, a;
i=10; a=1; while (i>1)
{ a=2*(a+1); i--; }
1
第五章 数组与字符串
5. 1 一维数组 5. 2 二维数组 5. 3 字符串处理
数组与字符串
2
1994年的微软电子百科全书(Microsoft Encarta) 的一篇数学论文中这样说道:“如果a,b,c都是整 数并且a=bc,那么我们称a是b和c的倍数,b和c是a 的约数或因数。如果c不是+1或-1,b就被称之为a 的一个真因数。包括0在内的所有偶数,都是2的 倍数,比如-4,0,2,10;非偶的数称之为奇数,比如 -5,1,3,9。如果一个正整数等于它的所有正真因数 的和,我们称这个数为一个完数(perfect)。例如: 6=1+2+3;28=1+2+4+7+14,所以6和28都是完数。 不是完数的正整数分为亏数(deficient)和冗数 (abundant),依据这个数的所有真因数的和与其本 身的大小来划分。因此,9是亏数因为9>1+3;而 12是冗数因为12<1+2+3+4+6。”
数组与字符串
9
例:数组元素的引用和赋值
int i, a[5];
/*数组、简单变量可同时定义*/
i=2;
a[0]=5;
/*给数组元素赋值*/
a[1]=a[2]=10;
a[3]=a[i]*2;
/*引用a[i]的值参与运算*/
a[i*2]=a[i+1]+a[0]%i;
/*表达式作为下标*/
printf(“%d,%d,%d,%d,%d\n”,
相关文档
最新文档