数组学习1

1、简单定义:

系统定义一个整型数组a:int a[10],即在内存中开辟了10个连续的单元用于存放数组a的10个元素a[0]-a[9]的值,

数据都为整形,由数组名a和下标唯一地确定每一个元素。这十个数组元素接受输入数据后,相应内存单元对应相应存储内容。

2、数组的优点:

可以让一批相同类型的变量使用同一个数组变量名,用下标来相互区分,表达简洁,可读性好,便于使用循环结构。

3、定义与引用:

需明确的数组内容:数组变量名、数组元素的类型、数组的大小(数组中元素的数量)

即: 类型名 数组名 [数组长度];  如:double a[26];

类型名:int char float

数组名:a c f

数组长度(是常量):[10] [200] [5]

数组名是一个地址常量,存放数组内存空间的首地址,不允许修改。

引用:

C语言规定,只能引用单个的数组元素,而不能一次引用整个数组

引用形式为:数组名 [下标]

下标可以为整型表达式,其取值范围为[0,数组长度-1] 如定义了a[10]但不能引用a[10]

在编程时,注意不要让下标越界。

数组元素的使用方法与同类型变量完全相同,如: int k,a[10]

定义了整形数组a,就可以在整型变量的任何地方,都可以使用整型数组a的元素,

如:(1)赋值表达式:a[0]=23;  a[k-2]=a[0]=1; (2) 输入:scanf ("%d",&a[9]);

4、一维数据的初始化:

与简单变量的初始化一样,在定义数组时,也可以对数组元素赋初值

一般形式为: int a[10] = {1,2,3,4,5,6,7,8,9,10};

其中a[0]为1,a[1]为2,…… ,a[9]为10。

C语言中也可以对静态数组和动态数组进行初始化,如:

static int b[5] = {1,2,3,4,5}; //为静态数组的初始化;

其他的规定:

(1)静态数组若没有初始化,系统默认给所有元素赋0,如:

static int b[5] = {0,0,0,0,0}; 等价于 static int b[5];

(2)数组的初始化也可以只针对(前)部分元素,如:

static int b[5] = {1,2,3}; //b[0]为1,b[1]为2,b[2]为3,b[3]和b[4]都为0

(3)数组初始化时,如果对所有元素都赋了初值,就可以省略数组长度,如:

int a[ ] = {1,2,3,4,5,6,7,8,9,10}; 等价于 int a[10] = {1,2,3,4,5,6,7,8,9,10};

(4)部分元素初始化时,不能省略数组长度。

5、利用数组进行编程:

(1)将数组的下标作为循环变量,如:利用数组计算斐波那契数列的前n个数,

使用简单变量的输入为:

int x1,x2,x;

x1 =  x2 = 1;

x = x1 + x2;

x1 = x2;

x2 = x;

使用数组的主要关系为:

f[0] = f[1] = 1;

f[n] = f[n-1] + f[n-2];

编程如下:

  

 此题中的define MAXN 46为宏定义,方便使用函数

(2)利用数组进行顺序查找,如:在数组中查找满足条件的所有你整数,

使用简单变量的输入为:

int number,t_number,i,count,num,Enter_number;

//先计算数位用do-while,结果保存为count

for(i=1;i<=count;i++){

num = number % 10;

if(num == Enter_number){

printf("Yes\n");

}

t_number = number / 10;

if(t_number == 0){

printf("No\n");

break;

}

}

使用数组的主要编程为:

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

if(a[i] == x){

printf("Yes\n");

}

}

编程如下:

练习1:

如果要求输出满足条件的元素的最小下标或者最大下标,应如何分别修改程序?

(以最大下标为例)


练习2:

选择法排序。输入一个正整数n(1<=n<=10),再输入n个整数,用选择法将他们从小到大排序后输出。

 例题3:调查电视节目的受欢迎程度。某电视台要调查观众对该台8个栏目(设相应栏目编号为1-8)的受欢迎情况,共调查了n(1<=n<=1000)位观众。统计输出各栏目的得票情况。(可不使用count[0])

 

例题4:

运用数组二分法查找。设已有一个n(1<=n<=10)个元素的整形数组a,且按值从小到大排序。输入一个整数x,然后在数组中查找x,如果找到,输出对应下标,否则输出“Not Found”。

 

 

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值