全站搜索未启用
跳到主要内容

文本五:数组的应用

1.数值计算

例如:已知有两个数值矩阵A和B,编一程序计算出它们的和。

Cij=Aij+Bij,其中A和B表示两个加数矩阵,C表示它们的和矩阵。

#include<stdio.h>

#define N 3 //定义矩阵的大小

int a[N][N]={{7,-5,3},{2,8,-6},{1,-4,-2}};

int b[N][N]={{3,6,-9},{2,-8,3},{5,-2,-7}};

int c[N][N];

void main() {

int i,j;

for(i=0; i<N; i++)

for(j=0; j

c[i][j]=a[i][j]+b[i][j];

//接下屏输出数组c(矩阵C)

for(i=0; i

for(j=0; j

printf("%5d",c[i][j]);

printf("\n");

}

}

2.统计

例如:假定需要对某个地区职工的工资状况进行抽样调查统计,把工资划分为11个区段,每隔1000为一个区段,即0.01~999.99为第1区段,1000~1999.99为第2区段,依次类推,9000~9999.99为第10区段,10000及以上为第11区段。

编一程序,首先把调查得到的一批职工的工资数据输入到一个数组中,然后分别统计出每个区段内的职工人数。

统计数组: c[11]//每个元素的初始值应为0

职工工资数组:a[Num]//用来保存最多Num个职工的工资

定义a和c数组、数据输入、统计、输出。

根据分析编写出程序如下:

#include<stdio.h>

#define Num 20

double a[Num]={0.0};

int c[11]={0};

void main() {

int i=0,j;

double x;

printf("输入一批职工的工资:\n");

while(i<Num) {

scanf("%lf",&x);

if(x<=0.0) {printf("数据输入完毕!\n"); break;}

a[i++]=x;

}

for(j=0; j<i; j++) {

int k=(int)a[j]/1000;

if(a[j]<10000) c[k]++; else c[10]++;

}

for(j=0; j<11; j++)

printf("c[%d]=%d\n",j,c[j]);

}

3.排序

所谓排序就是对一组杂乱无章的数据进行有序排列的过程。首先需要把初始数据保存到一维数组中,然后按照一定的排序方法使数组中的元素值按下标次序排列有序。

举例:已知有8个常数:

42 65 80 74 36 44 28 70

采用选择排序的方法。

下标: 0 1 2 3 4 5 6 7

数组a: 42 65 80 74 36 44 28 70

排序结果:a[0]≤a[1]≤a[2]≤...≤a[7]

第1次选择和交换:

42 65 80 74 36 44 28 70

28 [65 80 74 42 36 44 42 42 70]

第2次选择和交换:

42 [65 80 74 36 44 28 70]

28 36 [80 74 65 44 42 70]

第3次选择和交换后:

28 36 [80 74 65 44 42 70]

28 36 42 [74 65 44 80 70]

最后排序结果:

28 36 42 44 65 70 74 80

根据以上分析,编写出选择排序算法为:

#include<stdio.h>

#define N 8

int a[N]={42,65,80,74,36,44,28,70};

void SelectSort(int a[], int n)

{ //对a[n]进行选择排序的算法

int i,j,k,x;

for(i=1; i<=n-1; i++) {

k=i-1;

for(j=i; j<n; j++) if(a[j]<a[k]) k=j;

x=a[i-1]; a[i-1]=a[k]; a[k]=x;

} //外循环结束

}

void main() {

int i;

SelectSort(a,N);

for(i=0; i<N; i++) printf("%d ",a[i]);

printf("\n");

}

该程序的运行结果为:

28 36 42 44 65 70 74 80

4.数据查找

查找就是从一批数据中按照一定的查找方法查找出满足一定条件的数据。通常需要把原始数据保存到一维数组中,然后再进行查找并得到查找结果。

例如:假定在一维数组a[6]中保存着6个整数42, 55, 73, 28, 48, 66,编一程序从中顺序查找出具有给定值x的元素,若查找成功则返回该元素的下标位置,否则表明查找失败返回-1。

从数组a[n]中顺序查找值为x的算法:

int SeqSearch(int a[], int n, int x)

{

int i;

for(i=0; i

if(x==a[i]) return i;

return -1;

}

最后修改: 2019年09月26日 Thursday 18:53