数组的概念:数组的同一数据类型的许多数据元素按某种顺序排列在一起的集合,简单的来说 就是同一数据类型的集合。
为何需要数组:
假如我们要定义10个int型 int i,j,k,x,y,z,.... 这样不是很麻烦,也不好管理。
一维数组:
一维数组是C语言中用来储存和处理一维序列数据的数据类型。组合使用数组名 和 数组下标[] 可以方便的访问数组的任意元素。
数组的定义: 数据类型 数组名[数组容量];
例1:
int array[5];//定义一个可以储存5个int型数据类型的数组
char c[2];//定义一个可以储存2个char型数据类型的数组
定义数值的需注意:数组容量必须是常量,这样编译器才可以成功为其分配内存。
数组的赋值:
1.int array[5] = {1,2,3,4,5};//其值要用逗号分开。
2.int array[5];//单独为其赋值。
array[0] = 1;
array[1] = 2;
.............
array[4] = 5;
3.int array[] = {1,2,3};//不为其定义数组容量,但是编译器会根据其元素的个数作为数组容量,当前有3个元素,那么该数组的容量是3。
4.int array[5] = {1,2,3};//只为数组的一部分赋值,剩余的编译器会初始化为零。
数组的访问:
通过下标访问数组中任意元素。
注意:数组的下标是从0开始计算。
课后题:
1.将10个数:1,2,5,6,7,34,67,22,56,76存于数组中,求出这10个数的平均数。
2.用数组实现输出fibonacci数列的前20项,fibonacci数列 1,1,2,3,5,8.......
3.在数组中查找一个数
4.从键盘输入10个数,将这10个数从小到到排列输出至屏幕。
注意:访问越界数组的危险
为什么会有两的垃圾数字,而不是没有。
我的理解是:
电脑上的内存给别的程序用过,当该结束时候留下的垃圾。(简单来说就是以前有人住过,他搬家了没把垃圾带走,房东(系统)也不打扫。)
如果我没有理解到或理解错误的,请指出,在此万分感谢!!
为何需要数组:
假如我们要定义10个int型 int i,j,k,x,y,z,.... 这样不是很麻烦,也不好管理。
一维数组:
一维数组是C语言中用来储存和处理一维序列数据的数据类型。组合使用数组名 和 数组下标[] 可以方便的访问数组的任意元素。
数组的定义: 数据类型 数组名[数组容量];
例1:
int array[5];//定义一个可以储存5个int型数据类型的数组
char c[2];//定义一个可以储存2个char型数据类型的数组
定义数值的需注意:数组容量必须是常量,这样编译器才可以成功为其分配内存。
数组的赋值:
1.int array[5] = {1,2,3,4,5};//其值要用逗号分开。
2.int array[5];//单独为其赋值。
array[0] = 1;
array[1] = 2;
.............
array[4] = 5;
3.int array[] = {1,2,3};//不为其定义数组容量,但是编译器会根据其元素的个数作为数组容量,当前有3个元素,那么该数组的容量是3。
4.int array[5] = {1,2,3};//只为数组的一部分赋值,剩余的编译器会初始化为零。
数组的访问:
通过下标访问数组中任意元素。
1
2
3
4
5
6
7
8
9
10
11
|
#include <stdio.h>
int main( void )
{
int array[5] = {1,2,3,4,5};
int i = 0;
for (i = 0;i < 5;++i)
printf ( "%d\t" ,array[i]);
printf ( "\n" );
return 0;
}
|
注意:数组的下标是从0开始计算。
课后题:
1.将10个数:1,2,5,6,7,34,67,22,56,76存于数组中,求出这10个数的平均数。
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include<stdio.h>
int main( void )
{
int array[10] = {1,3,5,6,7,34,67,22,56,76};
int i = 0;
double m = 0;;
for (i = 0;i < 10;++i)
m = m + array[i];
m = m / 10.0;
printf ( "m = %lf\n" ,m);
return 0;
}
|
2.用数组实现输出fibonacci数列的前20项,fibonacci数列 1,1,2,3,5,8.......
1
2
3
4
5
6
7
8
9
10
11
12
13
|
#include <stdio.h>
int main( void )
{
int array[20] = {1,1};
int i = 0,f = 0;
for (i = 2;i < 20;++i)
array[i] = array[i-1] + array[i-2];
for (i = 0;i < 20;++i)
printf ( "%d\t" ,array[i]);
printf ( "\n" );
return 0;
}
|
3.在数组中查找一个数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
#include <stdio.h>
int main( void )
{
int x = 0,i = 0;
int array[10] = {2,5,1,7,0,10,6,8,90,30};
for (i = 0;i < 10;++i)
printf ( "%d\t" ,array[i]);
printf ( "\n请输入你要查找的数:" );
scanf ( "%d" ,&x);
for (i = 0;i < 10;++i)
{
if (x == array[i])
break ;
}
if (i == 10)
printf ( "没有该数!!\n" );
else
printf ( "查找成功!该数在第%d位!\n" ,i+1);
return 0;
}
|
4.从键盘输入10个数,将这10个数从小到到排列输出至屏幕。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
#include <stdio.h>
int main( void )
{
int i = 0,j = 0,t = 0;
int array[10] = {0};
for (i = 0;i < 10;++i)
{
printf ( "请输入[%d]:" ,i);
scanf ( "%d" ,&array[i]);
}
for (i = 0;i < 10;++i)
{
for (j = i + 1;j < 10;++j)
if (array[i] > array[j])
{
t = array[i];
array[i] = array[j];
array[j] = t;
}
}
for (i = 0;i < 10;++i)
printf ( "%d\t" ,array[i]);
printf ( "\n" );
return 0;
}
|
注意:访问越界数组的危险
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#include <stdio.h>
int main( void )
{
int i = 0;
int array[5] = {1,2,3,4,5};
for (i = 0;i < 5;++i)
printf ( "%d\t" ,array[i]);
printf ( "\n" );
/****************************
越界访问
****************************/
for (i = 0;i < 7;++i)
printf ( "%d\t" ,array[i]); //会输出两个垃圾数字,
printf ( "\n" );
return 0;
}
|
为什么会有两的垃圾数字,而不是没有。
我的理解是:
电脑上的内存给别的程序用过,当该结束时候留下的垃圾。(简单来说就是以前有人住过,他搬家了没把垃圾带走,房东(系统)也不打扫。)
如果我没有理解到或理解错误的,请指出,在此万分感谢!!