第五章二维数组的定义和引用
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
[分析]将10个整数放于一维数组中,找出其中的最大值及其下标即可。
main ( )
{ int i,max,k,a[11];
for (i=1;i<=10;i++)
scanf ("%d",&a[i]);
max=a[1];k=1;
for (i=2;i<=10;i++)
{
if (max<a[i]) {max=a[i];k=i;}
printf ("%10d",f [i]);
}
}
程序的运行结果如下:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
例5.3有17个人围成一圈,从第1号的人开始从1到3循环报数,凡报
到3的人离开圈子,直到最后只剩下一个人为止,打印出此过程。
说明:(1)常量列表可以是数值型、字符常量或字符串。
(2)数组元素的初值必须依次放在一对大括号内,各值之间用逗号隔开。
(3)可以只给部分数wk.baidu.com元素赋初值。例如:
int a[10]={1,2,3,4,5};
(4)在进行数组的初始化时,{ }中值的个数不能超过数组元素的个数。
例如:int a[5]={1,2,3,4,5,6,7,8};
此程序用a[0]至a[10]存储10个数据,排序时采用双层循环,外层循环控制比较的“趟”数(共9趟),内层循环控制每趟比较的“次”数。第一趟比较9次,将最大数置于a[10]中;第二趟比较8次,将次大数置于a[9]中;……;第九趟比较1次,将次小数置于a[2]中;余下的最小数置于a[1]中。
5.2二维数组的定义和引用
scanf ("%d",&a[i]);
printf ("\n");
for (j=1;j<=9;j++) /*控制比较的趟数*/
for (i=1;i<=10-j;i++) /*控制每趟比较的次数*/
if (a[i]>a[i+1]) /*相邻元素相比较*/
{t=a[i];a[i]=a[i+1];a[i+1]=t;} /*交换数组元素的值*/
a[i]=0;temp=0;d--;
}}}
程序的运行结果是:
3 6 9 12 15 1 5 10 14 2 8 16 7 17 13 4 11
例5.4用冒泡法对10个整数由小到大进行排序
main ( )
{
int i,j,t,a[11];
printf ("input 10 numbers:\n");
for (i=1;i<=10;i++)
(2)数组名的命名应遵守标识符的命名规则。
(3)数组名后是用方括号括起来的常量表达式。常量表达式表示的是
组元素的个数,即数组的长度。在上例中定义了数组score[10],该数组有
10个元素,其下标从0开始。
注意:不要使用score[10],因为它不是该数组的元素。
(4)常量表达式中可以包括常量和符号常量,不能包含变量,因为C
是一种错误的数组初始化方式。
(5)在给数组所有元素赋初值时,可以不指定数组长度。例如:
int a[ ]={1,2,3,4,5};
则系统会自动定义数组a的长度为5。
(6)定义数组时不进行初始化,则该数组元素的值是不确定的。如果欲将数组所有元素的初值置为0,可以采用如下方式:
static int a[10];
语言规定数组不能动态定义。
二、一维数组的初始化
数组的初始化是指在定义数组时给数组元素赋初值。一维数组初始化的格式为:
类型说明符数组名[常量表达式]={常量列表};
例如int a[5]={2,4,6,8,10};
其作用是在定义数组的同时将常量2、4、6、8、10分别置于数组元素a[0]、a[1]、a[2]、a[3]、a[4]中。
printf ("the sorted numbers:\n");
for (i=1;i<=10;i++)
printf ("%d ",a[i]);
}
程序运行情况如下:
input 10 numbers:
5 8 3 21 0 -4 143 -12 67 42↙
the sorted numbers:
-12 -4 0 3 5 8 21 42 67 143
一、二维数组的定义
与一维数组相同,二维数组也必须先定义,后使用。二维数组的格式为:
类型说明符数组名[常量表达式1][常量表达式2];
}
printf ("max=%d,NO:%d\n",max,k);
}
例5.2用数组处理Fibonacci数列问题
main ( )
{
int i,f [20]={1,1};
for (i=2;i<20;i++)
f [i]=f [i-2]+f [i-1];
for (i=0;i<20;i++)
{
if (i%5= =0) printf ("\n");
三、一维数组元素的引用
C语言规定数组不能以整体形式参与数据处理,只能逐个引用数组元素。一维数组的引用方式为:
数组名[下标];
其中下标可以是整型常量、整型变量或整型表达式。例如有定义
int a[10],i=2;
则以下是正确的表达式:
a[0]=a[1]+a[i]+a[i+3];
例5.1找出10个整数中的最大值及其序号。
main ( )
{int i,d,temp,a[18];
for (i=1;i<=17;i++)
a[i]= i;
temp=0;d=17;
while (d>0)
for (i=1;i<=17;i++)
if (a[i]!=0)
{
temp++;
if (temp= =3)
{
printf ("%4d",a[i]);
5.1一维数组的定义和引用
一、一维数组的定义
C语言规定:数组必须先定义,后使用。一维数组的格式为:
类型说明符数组名[常量表达式];
例如:float score[10];
它表示定义了一个名为score的数组,该数组有10个元素,其存放的数据类型应为实型。
说明:(1)类型说明符用来说明数组元素的类型:int , char , float或double。
二维数组的定义和引用
注:教案尾页有小结和作业
第5章数组
本书前几章介绍了C语言中几种简单数据类型。在本章中将介绍一种新的构造类型:数组。数组是一种最简单的构造类型,它包含着一组具有同一类型的变量,这些变量在内存中的存储位置是连续的。在解决实际问题时数组有着广泛的应用。本章介绍了C语言中一维数组、二维数组及字符数组的定义、初始化及使用方法等。
main ( )
{ int i,max,k,a[11];
for (i=1;i<=10;i++)
scanf ("%d",&a[i]);
max=a[1];k=1;
for (i=2;i<=10;i++)
{
if (max<a[i]) {max=a[i];k=i;}
printf ("%10d",f [i]);
}
}
程序的运行结果如下:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
例5.3有17个人围成一圈,从第1号的人开始从1到3循环报数,凡报
到3的人离开圈子,直到最后只剩下一个人为止,打印出此过程。
说明:(1)常量列表可以是数值型、字符常量或字符串。
(2)数组元素的初值必须依次放在一对大括号内,各值之间用逗号隔开。
(3)可以只给部分数wk.baidu.com元素赋初值。例如:
int a[10]={1,2,3,4,5};
(4)在进行数组的初始化时,{ }中值的个数不能超过数组元素的个数。
例如:int a[5]={1,2,3,4,5,6,7,8};
此程序用a[0]至a[10]存储10个数据,排序时采用双层循环,外层循环控制比较的“趟”数(共9趟),内层循环控制每趟比较的“次”数。第一趟比较9次,将最大数置于a[10]中;第二趟比较8次,将次大数置于a[9]中;……;第九趟比较1次,将次小数置于a[2]中;余下的最小数置于a[1]中。
5.2二维数组的定义和引用
scanf ("%d",&a[i]);
printf ("\n");
for (j=1;j<=9;j++) /*控制比较的趟数*/
for (i=1;i<=10-j;i++) /*控制每趟比较的次数*/
if (a[i]>a[i+1]) /*相邻元素相比较*/
{t=a[i];a[i]=a[i+1];a[i+1]=t;} /*交换数组元素的值*/
a[i]=0;temp=0;d--;
}}}
程序的运行结果是:
3 6 9 12 15 1 5 10 14 2 8 16 7 17 13 4 11
例5.4用冒泡法对10个整数由小到大进行排序
main ( )
{
int i,j,t,a[11];
printf ("input 10 numbers:\n");
for (i=1;i<=10;i++)
(2)数组名的命名应遵守标识符的命名规则。
(3)数组名后是用方括号括起来的常量表达式。常量表达式表示的是
组元素的个数,即数组的长度。在上例中定义了数组score[10],该数组有
10个元素,其下标从0开始。
注意:不要使用score[10],因为它不是该数组的元素。
(4)常量表达式中可以包括常量和符号常量,不能包含变量,因为C
是一种错误的数组初始化方式。
(5)在给数组所有元素赋初值时,可以不指定数组长度。例如:
int a[ ]={1,2,3,4,5};
则系统会自动定义数组a的长度为5。
(6)定义数组时不进行初始化,则该数组元素的值是不确定的。如果欲将数组所有元素的初值置为0,可以采用如下方式:
static int a[10];
语言规定数组不能动态定义。
二、一维数组的初始化
数组的初始化是指在定义数组时给数组元素赋初值。一维数组初始化的格式为:
类型说明符数组名[常量表达式]={常量列表};
例如int a[5]={2,4,6,8,10};
其作用是在定义数组的同时将常量2、4、6、8、10分别置于数组元素a[0]、a[1]、a[2]、a[3]、a[4]中。
printf ("the sorted numbers:\n");
for (i=1;i<=10;i++)
printf ("%d ",a[i]);
}
程序运行情况如下:
input 10 numbers:
5 8 3 21 0 -4 143 -12 67 42↙
the sorted numbers:
-12 -4 0 3 5 8 21 42 67 143
一、二维数组的定义
与一维数组相同,二维数组也必须先定义,后使用。二维数组的格式为:
类型说明符数组名[常量表达式1][常量表达式2];
}
printf ("max=%d,NO:%d\n",max,k);
}
例5.2用数组处理Fibonacci数列问题
main ( )
{
int i,f [20]={1,1};
for (i=2;i<20;i++)
f [i]=f [i-2]+f [i-1];
for (i=0;i<20;i++)
{
if (i%5= =0) printf ("\n");
三、一维数组元素的引用
C语言规定数组不能以整体形式参与数据处理,只能逐个引用数组元素。一维数组的引用方式为:
数组名[下标];
其中下标可以是整型常量、整型变量或整型表达式。例如有定义
int a[10],i=2;
则以下是正确的表达式:
a[0]=a[1]+a[i]+a[i+3];
例5.1找出10个整数中的最大值及其序号。
main ( )
{int i,d,temp,a[18];
for (i=1;i<=17;i++)
a[i]= i;
temp=0;d=17;
while (d>0)
for (i=1;i<=17;i++)
if (a[i]!=0)
{
temp++;
if (temp= =3)
{
printf ("%4d",a[i]);
5.1一维数组的定义和引用
一、一维数组的定义
C语言规定:数组必须先定义,后使用。一维数组的格式为:
类型说明符数组名[常量表达式];
例如:float score[10];
它表示定义了一个名为score的数组,该数组有10个元素,其存放的数据类型应为实型。
说明:(1)类型说明符用来说明数组元素的类型:int , char , float或double。
二维数组的定义和引用
注:教案尾页有小结和作业
第5章数组
本书前几章介绍了C语言中几种简单数据类型。在本章中将介绍一种新的构造类型:数组。数组是一种最简单的构造类型,它包含着一组具有同一类型的变量,这些变量在内存中的存储位置是连续的。在解决实际问题时数组有着广泛的应用。本章介绍了C语言中一维数组、二维数组及字符数组的定义、初始化及使用方法等。