设为首页 加入收藏

TOP

C语言学习笔记(八)--数组(一)
2014-11-24 00:04:19 来源: 作者: 【 】 浏览:54
Tags:语言学习 笔记 数组

1数组

在程序设计过程中我们往往需要处理一批相同类型的数据,如果使用基本类型定义变量来储存,显然是不方便的,这是我们就需要使用数组了。

2数组特点

1.数组大小必须是确定的,不能随机改变的。

2.数组的元素必须是相同类型的,不允许出现混合类型。

3一维数组

3.1一维数组的定义:

类型说明符 数组名[常量表达式];

例如:

int a[10]

数组的生命需要注意以下几个问题:

1.数组的命名规则与变量相同;

2.常量表达式代表的是数组元素的个数,也就是数组的长度;

3.数组的下标是从0开始的,最后一个元素的下标是数组长度减1;

4.数组的定义可以和普通变量一起声明和定义

Float i,j[];

3.2一维数组的引用:数组名[下标表达式];

例如:int a[5]; a[3]=10;

其中下标表达式可以是任意类型的表达式,但值必须是非负整型的。

数组分配内存空间是连续的空间,地址从低地址到高地址。

例子代码:

#include "stdio.h"

main() {

float score[10];

int i;

printf("please input scores:\n");

for (i=0;i<10;i++) /*数组下标为0~9*/

scanf("%f",&score[i]); /*依次输入每个数组元素*/

printf("\n");

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

printf("the %d score %f\n",i+1,score[i]);

}

一般需要一次访问数组元素时,往往使用循环来实现,在循环时应特别注意数组的下标和循环的次数等问题,防止出现下标越界的错误。

3.3一维数组的初始化:数组类型 数组名[数组长度]={数组元素值};

例如下面的语句:

int a[3]={1,2,3};

注意:

1.定义是可以给数组全部元素赋初值,例如:

float f[3]={1,2,3};

2.也可以只给一部分赋值:

float f[3]={1,2};

这样的话,程序自动从低到高给数组元素赋值,其余的元素值为0.

3.在对数组的全部元素赋值时,可以不指定数组的长度,但[]不能省略:

int a[] = {1,2,3};

4.特别注意的是,数组初始化的赋值方式只能用于数组在定义的同时赋值,在定义之后只能一个一个的赋值,例如下面就是错误的:

int a[4];

a={1,2,3,4}

例子代码:

#include "stdio.h"

main() {

int i;

int a[10]={1,2,3,4,5,6,7,8,9,10}; /*全部初始化*/

int b[]={1,2,3,4,5,6,7,8,9,10}; /*全部初始化时,可省略元素的个数*/

int c[10]={1,2,3,4,5}; /*部分初始化,其余元素的个数为0,数组的长度不可以省略*/

int d[10]; /*没有赋初值,则数组元素的值不定,同样的数组的长度不可省略*/

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

printf("%d ",a[i]);

printf("\n");

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

printf("%d ",b[i]);

printf("\n");

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

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

printf("\n");

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

printf("%d ",d[i]);

printf("\n");

}

3.4一维数组的使用实例

保存30个学生的成绩,查看各分数段人数,计算出优秀率和及格率,同时输出所有学生的成绩,并对不及格的做出标记。

代码:

#define N 30

#include "stdio.h"

main() {

float score[N];

int count[4]={0,0,0,0};

int i;

float rate1,rate2;

for(i=0;i

scanf("%f",&score[i]);

if (score[i]>=85 &&score[i]<=100)

count[0]++;

else if (score[i]>=70)

count[1]++;

else if (score[i]>=60)

count[2]++;

else

count[3]++;

}

rate1=(float)count[0]/N; /*计算优秀率和及格率,注意强制类型转换*/

rate2=(float)(N-count[3])/N;

printf("the number 85-100 %d\n",count[0]); /*输出个分数段的人数*/

printf("the number 70-84 %d\n",count[1]);

printf("the number over 60 %d\n",count[2]);

printf("the number under 60 %d\n",count[3]);

printf("the good rate %.2f,the fail rate %.2f\n",rate1,rate2); /*输出优秀率和及格率*/

for (i=0;i

if (score[i]<60)

printf(" %d fail,socre is %.1f\n",i+1,score[i]); /*学号和相应的成绩下标之间差1*/

else

printf("%d score is %.1f\n",i+1,score[i]);

}

思考练习:

处理20个斐波那契数列;

求数组的最大值;

冒泡排序;

选择排序;

二分查找:

4二维数组

4.1二维数组的定义:

数据类型 数组名[常量表达式1][常量表达式2];

例如:int [30][4];

4.2二维数组的引用:

数组名[行下标][列下标];

二维数组的输入输出例子代码:

#include "stdio.h"

#define M 3

#define N 4

main( ){

int i , j , a[M][N] ;

for(i=0 ; i

for(j=0 ; j

scanf("%d" , &a[i][j]);

printf("array a is :\n");

for(i=0 ; i

for(j=0 ; j

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

printf("\n");

}

}

4.3二维数组的初始化

1.可以将所有数据写在一个大括号内,以逗号分隔,按数组元素在内存中的顺序对二维数组赋值:

int a[2][3]={1,2,3,4,5,6}

2.也可以对数组的每个元素赋值,将二维数组的每一行写在一个花括号内:int a[2][3]={{1,2,3},{4,5,6}};

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇关于C/C++的{0} initializer 下一篇C语言学习笔记(九)--函数

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: