利用数组处理批量数据

1.1. 怎样定义一维数组
定义一维数组的一般形式为:类型符 数组名【常量表达式】;
例:int a[10]; (它表示定义了一个整形数组,数组名为a,此数组包含十个整型元素)
注意:(1)一维数组的命名规则和变量名相同,遵循标识符命名规则。
(2)在定义数组时,需要指定数组中元素的个数,方括号中的常量表达式用来表示元素的个数,即数组长度。例如,指定a[10],表示a数组中有十个元素,且下标是从零开始的,这十个元素是a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9],不存在数组元素a[10]。
(3)常量表达式中可以包括常量和符号常量,如“int[3+5];”是合法的。不能包含变量,如“int[a];”是不合法的。
1.2 怎样引用一堆数组元素
在定义数组并对其中各元素赋值后,就可以引用数组中的元素。应注意,只能引用数组元素而不能一次整体调用整个数组全部元素的值。
引用数组元素的表示形式为:数组名【下标】
例如,a[0]就是数组a中序号为零的元素,它和一个简单变量的地位和作用相似。“下标”可以是整型常量或整型表达式。例如下面的赋值表达式包含了对数组元素的引用:
a[0]=a[5]+a[7]-a[23]
每一个数组元素值都代表一个整数值。
1.3. 一维数组的初始化
为了使程序简洁,常在定义数组的同时给个数组赋值,这称为数组的初始化。可以用“初始化列表方法实现”方法实现数组的初始化。
(1)在定义数组时对全部数组元素赋予初值,例如:inta[10]={0,1,2,3,4,5,6,7,8,9};
将数组中各元素的初值顺序放在一对花括号内,数据间用逗号分隔。花括号内的数据就称为“初始化列表”。经过上面的定义和初始化之后,a[0]=0,a[1]=1,a[2]=2,a[3]=3,a[4]=4,a[5]=5,a[6]=6,a[7]=7,a[8]=8,a[9]=9。
(2)可以只给数组中的一部分元素赋值。例如:
int a[10]={0,1,2,3,4};
定义a数组中有十个元素,但花括号内只提供五个初值,这表示只给前面五个元素赋初值,系统自动给后五个元素赋初值为0.
(3)如果想使一个数组中全部元素值为零,可以写成:int a[10]={0}。
(4)在对全部数组元素赋初值时,由于数据的个数已经确定,因此可以不指定数组长度。
一维数组应用举例
c.biancheng.net
【例7-18】把一个整数按大小顺序插入已排好序的数组中。
#include <stdio.h>
int main(void){
int i,j,p,q,s,n,a[11]={127,3,6,28,54,68,87,105,162,18};
for(i=0;i<10;i++){
p=i;q=a[i];
for(j=i+1;j<10;j++)
if(q<a[j]) {p=j;q=a[j];}
if(p!=i){
s=a[i];
a[i]=a[p];
a[p]=s;
}
printf("%d “,a[i]);
}
printf(”\ninput number:\n");
scanf("%d",&n);
for(i=0;i<10;i++)
if(n>a[i]){
for(s=9;s>=i;s–) a[s+1]=a[s];
break;
}
a[i]=n;
for(i=0;i<=10;i++)
printf("%d “,a[i]);
printf(”\n");
return 0;
}
2.怎样定义和使用二维数组
2.1 怎样定义二维数组
二维数组定义的一般形式为:类型说明符 数组名【常量表达式】【常量表达式】;
例如:float a[3,][4],b[5,][10];定义a为3x4的数组,b为5x10的数组。
C语言对二维数组采用这样的定义方式,使得二维数组可被看作是一种特殊的一维数组。例如,可以把a看做一个一维数组,它有三个元素:a[0],a[1],a[2],每个元素又是一个包含4个元素的一维数组。
2.2 怎样引用二维数组的元素
二维数组元素的表现形式为:数组名【下标】【下标】
例如,a[2][3]表示a数组中序号为二的行中序号为三的列的元素。下标应是整型表达式,如a[2-1][2
2-1]。不能写成a[2,3],a[2-1,2*2-1]。
注意:要严格区分在定义数组时用的a[3][4]和引用元素时的a[3][4]的区别。
2.3 二维数组的初始化
可以用初始化列表对二维数组进行初始化。
(1)分行给二维数组赋初值。例如:
int a[3][4]={1,2,3,4},{5,6,7,8},{9,10,11,12};
这种赋值方法比较直观,把第一个花括号内的数据给第一行的元素,第二个花括号内的数据给第二行元素…即按行赋初值。
(2)可以将所有数据写在一个花括号内,按数组元素在内存中的排列顺序对各元素赋初值,例如:int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
(3)可以对部分元素赋初值。例如:int a[3][4]={{1},{5},{9}};
它的作用是只对各行第一列(即序号为零的列)的元素赋初值,其余元素值自动为零。
(4)如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。例如:
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
与下面的定义等价:int a[ ][4]={1,2,3,4,5,6,7,8,9,10,11,12};
举例:
可设一个二维数组a[5][3]存放五个人三门课的成绩。再设一个一维数组v[3]存放所求得各分科平均成绩,设变量average 为全组各科总平均成绩。编程如下:
#include <stdio.h>
int main(void){
int i,j,s=0,average,v[3],a[5][3];
printf(“input score\n”);
for(i=0;i<3;i++){
for(j=0;j<5;j++){
scanf("%d",&a[j][i]);
s=s+a[j][i];
}
v[i]=s/5;
s=0;
}
average =(v[0]+v[1]+v[2])/3;
printf(“math:%d\nc languag:%d\ndbase:%d\n”,v[0],v[1],v[2]);
printf(“total:%d\n”, average );
return 0;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值