第7章 数 组
- 格式:pdf
- 大小:831.46 KB
- 文档页数:37
与
int b[2][3]={0,0,0,0,0,0};
int c[3][4]={{1,2},{5,6},{9,10}}; 1 2 5 6 Date:2010-5-12 教育学院 罗廷锦 9 10
0 0 0 0 No. 5 0 0
数组的使用
数组的下标都是从0开始 可以用任意表达式作为下标,动态决定访问哪个元素
Date:2010-5-12
数组的特点
快速地随机访问 一旦定义,不能改变大小 在编译阶段就确定了数组的大小
Date:2010-5-12
教育学院 罗廷锦
No. 7
7.1 一维数组的定义和引用
7.1.1 一维数组的定义 数组名[常量表达式]; 例如:int a[10]; (1) 数组名定名规则和变量名相同,遵循标识符定名规则。 (2) 紧跟数组名是用方括弧括起来的常量表达式,不能用 圆括弧:如:int a(10); (3) 常量表达式表示元素的个数,即数组长度。 (4) 常量表达式可以包括常量和符号常量,不能包含变量。 Case: int a[8] float b[N] //下标为符号常量,需使用预编译命令 #define N 4定义 double c[‘B’]
Date:2010-5-12 教育学院 罗廷锦 No. 11
7.1.3 一维数组的初始化
(1) 在定义数组时对数组元素赋以初值。 int a[5]={0,1,2,3,4}; 初始化的结果:a[0]:0,a[1]:1,a[2]:2,a[3]:=3,a[4]:4 (2) 可以只给一部分元素赋值。例如: int a[10]={0,1,2,3,4}; 只给前面5个元素赋初值,后5个元素值为0。
int int int int
a[5] = { 12, 34, 56 ,78 ,9 }; a[5] = { 0 }; a[] = { 11, 22, 33, 44, 55 }; b[2][3]={{1,2,3},{4,5,6}};
与
int b[2][3]={1,2,3
Date:2010-5-12
教育学院 罗廷锦
No. 2
数组(Array)
若干类型相同的相关数据凑到一起,就是数组 定义
类型 数组名[整型常数1][整型常数2] ……[整型常数n]; int a[6][4]; int a[10]; a[0][0]、a[1][2]、a[5][3]或a[0]、 a[8] 每个元素都是一个普通变量 下标可以是任意整型表达式
Date:2010-5-12
}
教育学院 罗廷锦
No. 24
字符串(String)与字符数组
字符串
一串以'\0'结尾的字符在C语言中被看作字符串
用双引号括起的一串字符是字符串常量,C语言自动为其 添加'\0'终结符
C语言并没有为字符串提供任何专门的表示法,完全使用 字符数组和字符指针来处理 每个元素都是字符类型的数组
教育学院 罗廷锦 No. 16
for(j=0;j<num-i-1;i++)
Date:2010-5-12
continue
if(a[j]>a[j+1])
/* 内循环需要执行num-i-1次 */
{
/* 若前面的元素大于后面的元素,则将他们的位置交换 */
t=a[j+1]; a[j+1]=a[j]; a[j]=t; } printf("The sorted number:\n"); for(i=0;i<num;i++) printf("%d",a[i]); return 0; }
教育学院 罗廷锦 No. 3
使用
Date:2010-5-12
数组(Array)
int a[10];
定义一个有10个元素的数组,每个元素的类型均为int 系统会在内存分配连续的10个int空间给此数组 数组下标可以是整型表达式 a[9] 直接对a的访问,就是访问此数组的首地址
Date:2010-5-12
教育学院 罗廷锦
No. 17
Case: 请输入 N个,分别求这N个数中的正数、负数和零的个数 Account the number.c link
如何统计多项选择题??
Date:2010-5-12
教育学院 罗廷锦
No. 18
7.2
二维数组的定义和引用
7.2.1
二维数组的定义 二维数组定义的一般形式: 类型说明符 数组名[常量表达式][常量表达式]; float a[3][4],b[5][10]; 定义a为3×4(3行4列)的数组,b为5×10(5行10列) 的数组。 错误:float a[3,4],b[5,10];
Date:2010-5-12
教育学院 罗廷锦
No. 12
(3) 如果想使一个数组中全部元素值为0, int a[10]={0,0,0,0,0,0,0,0,0,0}; 不能写成 int a[10]={0*10}; (4) 在对全部数组元素赋值,可以不指定数组长度。 int a[5]={1,2,3,4,5}; int a[]={1,2,3,4,5} (5)初值的个数不允许大于数组的长度 int c[3] = {1,2,3,4}
数组大小最好用宏来定义(预编译命令), a[7] 以适应未来可能的变化 #define N 10 … int a[N]; a[1] 数组大小定义好后,将永远不变
a[8]
a[0]
Date:2010-5-12 教育学院 罗廷锦 No. 4
数组初始化
数组定义后的初值是随机数,一般需要初始化
Date:2010-5-12 教育学院 罗廷锦 No. 23
编程计算某班的学生总分和平均成绩.(课程 门数不超过3门,学生人数不超过30)
#include <stdio.h> #define stud 30 #define COURSE 3 void Print(long num[],int score[][COURSE],int sum[], float aver[],int n); int Input( long num[], int score[][COURSE]); void Total(int score[][COURSE],int sum[],float aver[], int n); main() { int n,scors[stud][COURSE],sum[stud]; float aver[stud]; long num[stud]; n=Input( num, score ); Total(score, sum, aver, n ); Print(num, score, sum, aver, n );
Date:2010-5-12
教育学院 罗廷锦
No. 19
二维数组的存储结构
存放顺序:按行存放,先顺序存放第一行的元素, 再存放第二行的元素
int
b[2][3];
b[0][2]
b[0][1] b[0][0] b[0] b[1]
Date:2010-5-12 教育学院 罗廷锦
b[1][2] b[1][1] b[1][0]
字符数组
char string[80];
Date:2010-5-12
教育学院 罗廷锦
No. 25
7.3 字符数组 • 用来存放字符数据的数组是字符数组。字符数组 中的一个元素存放一个字符。 7.3.1 字符数组的定义 char c[10]; c[0]='I';c[1]=' ';c[2]='a';c[3]='m';c[4]=' ';c[5]='h';c[6]='a';c[7]=’p';c[8]=’p';c[9]='y‘;
Date:2010-5-12
教育学院 罗廷锦
No. 13
Case 对任意整数按升序排序--选择法排序
#include<stdio.h> int main(void) { int i,j,num,t; int a[100];
/* 整型数组a的长度为100 */
printf("how many numbers:\n"); scanf("%d",&num);
Date:2010-5-12
教育学院 罗廷锦
No. 22
7.2.3 二维数组的初始化 (1) 按行给二维数组赋初值。 int a[2][3]={{1,2,3},{5,6,7}}; (2) 将所有数据写在一个花括弧内,按数组排列的顺序对各元 素赋值 int a[2][3]={1,2,3,5,6,7}; (3) 只针对部分元素赋初值。 1 0 0 0 int a[3][4]={{1},{5},{9}}; 5 0 0 0 9 0 0 0 int a[3][4]={{1},{5,6}}; ? (4)若对全部数组元素赋值,数组的第一个下标可省略 int a[][3]={1,2,3,5,6,7};
for (i=0; i<SIZE; i++) a[i] = 2 * i; 使用大于最大下标的下标,将访问数组以外的空间。那里的 数据不是我们所想定的情况,可能带来严重后果 sizeof(a) sizeof(a[0])
教育学院 罗廷锦 No. 6
下标越界是大忌!
sizeof可以用来获得数组所占字节数
Date:2010-5-12
教育学院 罗廷锦
No. 10