- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
printf(“%d”,a); ()
()
循环变量 j 的作用: 1、控制循环次数
2、用作数组下标
例4-1 把数组a的元素依次赋0,10,20,…,90,再把a的
元素值按逆序输出
#include <stdio.h> void main() {int i,a[10]; printf("input 10 numbers:\n"); for(i=0;i<10;i++)
如 iinnttaa[[3]] == {{16,,22,,33,,45,,51,}6;}; () int a[编5]译= 系{0统,0,根0,0据,0初}; 值或个数in确t a定[5]数=组{0长};度
4.2.2 一维数组元素的引用
1.数组同变量一样,必须先定义后引用
整型常量 整型常量表达式
2.引用数组元素的方法是:数组名[下标]
3.只能逐个引用数组元素,不能一次引用整个数组
例如: 有定义 int a[10]; 可以引用元素的从a[0]到a[9] a[3+5] a[10-10] a[5]=6; a[7]=a[5]++;
int a[10]; 必须 for(j = 0;j < 10;j++)
printf(“%d\t”,a[j]);
3. 一维数组的初始化
❖初始化方式
int a[5]={1,2,3,4,5};在定义数组时,为数组元素赋初值 等价于:a[0]=1; a[(1在]=编2;译a阶[2段]=使3;之a得[3]到=初4;值a[)4]=5;
❖说明: 数组不初始化,其元素值为随机数
只给部分数组元素赋初值
如 int在a对[5全] =部{数6,组2,元3}素;//赋未初指值定时的,可用不0指填定充数组长度 等价于如:果a想[0使]=一6个; a数[1组]=中2;全a[部2]元=3素;值a[为3]0=,0;可a以[4写]=成0;:
4.2 一维数组
4.2.1一维数组的定义和初始化
[ ] 数组运算符 单目运算符 优先级(1) 左结合 不能用( )
1.定义:类型说明符 数组名[常量表达式];
合法标识符
表示元素个数下标从 0 开始
2.在内存分配若干连续空间给数组.
例 int a[6];a
内存 0 a[0]
1 a[1]
2 a[2]
3 a[3]
数组名表示内存首地址, 是地址常量
4
a[4]
5 a[5]
编译时分配连续内存 内存字节数=数组长度*
sizeof(元素数据类型)
例 int i = 15; int data[i];
(不能用变量定义数组长度)
例 int data[5]; data[5] = 10; // C语言对数组不作越界检查,使用时要注意
(2)分行初始化。 int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
(3)部分元素初始化。如: int a[3][4]={{,1},{0,6},{0,0,11}}; 0100
0600
0 0 11 0
(4)如果对全部元素都赋初值,则定义数组时可以 不指定第一维的长度, int a[][4]={1,2,3,4,5,6,7,8,9,10,11,12};
输出
4.3 二维数组
4.3.1 二维数组的定义和初始化
1.定义方式: 类型说明符 数组名[表达式1][表达式2];
行数
列数
例:float a[3][4],b[5][10];
2.说明:
❖ 二维数组可看作特殊的一维数组;
❖元素在内存排列顺序为按行存放;
❖多维数组定义亦类似于二维数组,如: float
移至第一列。
#include <stdio.h>
void main()
{ int a[2][3]={{2,5,6}, {9,7,8}};
256
int i,j,temp; for(i=0;i<2;i++)
978
{ temp=a[i][3-i];
for(j=3-i;j>=0;j--)
a[i][j+1]=a[i][j];
a[i]=i*10; for(i=9;i>=0;i--)
printf("%d ",a[i]); }
程序运行结果:
90 80 70 60 50 40 30 20 10 0
数组类题目
基本方 法
定义数组 输入/赋值
运算 输出
例4-2 利用数组,求斐波拉契数列的前20项。
#include "stdio.h“
a[2][3][4];
a[0][0]
例: int a[2][3]; 它在内存情况:
a[0][1] a[0][2] a[1][0] a[1][1] a[1][2]
3. 二维数组的初始化
(1)按数组排列的顺序将所有数据写在一个花括号内。 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
a[i][0]=temp;
}
for(i=0;i<2;i++)
{ for(j=0;j<3;j++)
printf(“%6d ”,a[i][j]);
printf(“\n”);
}
}
例4-5 输出杨辉三角的前6行数据。
1 11 121 13 3 1 14 6 4 1 1 5 10 10 5 1
第四章 数组
4.1 概述 4.2 一维数组 4.3 二维数组 4.4 字符数组
Байду номын сангаас
4.1 概述
什么是 数组呢?
数组是有序数据的集合。 数组中的每一个元素 都属于同一个数据类 型。用一个统一的数 组名和下标来唯一地 确定数组中的元素。
当要对一组数据进行排序、在一组数中查找某个数据, 矩阵计算等,通常都要用数组来实现。
若对部分元素赋初值而省略第一维的长度,必 须用分行赋值来实现。 int a[][5]={{1,0,3},{0,15}}
4.3.2 二维数组元素的引用
数组名[行下标] [列下标]; 例:int a[3][5];
则可以有如下引用:a[1+1][2*2-1]等
注意:下标值应该在已定义的数组大小范围内。
例4-4 编程将下列矩阵中的元素向右移动一列,最右列
void main() { int fib[20]={1,1}
int i; for(i=2;i<20;i++)
fib[i]=fib[i-1]+fib[i-2]; for(i=0;i<20;i++)
{ if(i%4==0)
printf(“\n”); printf("%12d ",fib[i]);
}
}
定义数组 计算