c语言第七章数组与字符串.ppt
文本预览下载声明
一. 概念
C提供的数据类型有: 标准型和构造型。在遇到的大量编程问题中仅用标准型是解决不了的。如: 排序, 查询,统计,线性方程组求解,矩阵运算等需要用构造类型,数组是其中之一。
数组---具有相同类型数据的集合。数组中每一个数据称为元素,每一个元素均用统一的数组名和相应的下标确定。
;数组定义
格式:
一维
类型说明符 数组名[常量]
二维
类型说明符 数组名[常量] [常量]
例: int num[10];
float score[3][4] ;
在程序中定义了一维数组和二维数组;编译时在内存开辟连续一批单元,存放数组各元素的值。 ;2 bytes;数组元素赋初值
指在定义的同时可给数组各元素或部分元素赋初值,即初始化。在编译时除分配一定的单元,同时将初值赋给相应单元(元素), 否则是随机值。
如果给全部元素赋值,则在数组定义时,可以不给出数组长度,系统将根据初值的个数自动确定数组的长度。
;num[0]
num[1];也可 static float score[3][4]={1,1,1,1,2,2,2,2,3,3,3,3};
也可 static float score[ ][4]={1,1,1,1,2,2,2,2,3,3,3,3};
而 static float score[3][4]; 则所有元素均赋 0;
部分元素赋初值:
static float score[3][4]={{1},{2},{3}};
表示score[0][0]; score[1][0]; score[2][0]分别赋1,2,3,其它元素均为 0。
static float score[3][4]={{1},{7,8}};
表示score [0][0]=1;score[1][0]=7,score[1][1]=8,其它元素均为 0;
;对数组元素的操作
在C中,只能对已定义的数组元素逐个的操作(赋值、输出等),不可对整个数组一次进行赋值 , 输出等。凡是变量可出现的地方,数组元素也可出现。
数组元素引用格式:
一维 数组名 [表达式]
二维 数组名 [表达式1][表达式2];一维数组各元素: 赋值, 输出
main( )
{ int num[10], i;
for (i=0; i10; i++)
num[i]=i+1;
for(i=0; i10; i++)
num[i] *= 10;
for (i=0; i10; i++)
printf(num[%d] = %d \n, i, num[i] );
} ;main( )
{ int num[10], i;
for (i=0; i10; i++)
scanf(%d, num[i]);
for (i=0; i10; i++)
printf(num[%d] = %d \n, i, num[i]);
};二维数组各元素: 赋值,输出
main( )
{ int score[3][4];
int i, j;
for (i=0; i3; i++)
for (j=0; j4; j++)
scanf(%d, score[i][j]);
for (i=0; i3; i++)
{ for (j=0; j4; j++)
printf (score[%d][%d]=%d, i, j, score[i][j]);
printf(\n);
}
};数组在编程中应用
例:某班3人, 2门课, 试编程:
1. 键盘输入每个人学号和2门课成绩;
2. 求出每人平均分和每门课的平均分。 ;main ()
{ int i, j;
int score[3][2], num[3], sum;
float aver[3], aver1[2];
for (i=0; i3; i++)
{ scanf (%d, num[i]);
for (j=0; j2; j++)
scanf (%d, score[i][j]);
}
/* 输入每人学号和2门课成绩 */
; for (i=0; i3; i++)
{ sum=0;
for (j=0; j2; j++)
sum+=score[i][j];
aver[i] =sum/2;
}
/* 求出每人平均分 */
for (i=0; i3; i++)
printf (Student.%d \
显示全部