数组概念
数组 是 一组相同类型的数据集合 (变量的集合)
整型数组
一维整型
二维整型
字符型数组
一维字符型
数组:
数组也是一种数据类型
int a; //
数据类型 变量名; //标识符
一维整型数组:
类型说明符 数组名[常量表达式];
类型说明符
基本数据类型 int /float /char
数组名
名字 --标识符 -- 命名规则
[]
表示 --你现在定义的是一个数组类型
常量表达式
数组长度 代表的是 批量的定义了多少个 变量(数据)
int a[10]; //表示,定义了一个 包含了 10 个 int元素(变量)的数组
int a; //
数据类型 变量名; //标识符
int a[10]; //标识对应的数据类型怎么看?
//干掉标识符 ,剩下的就是标识符对应的类型
int[10] a; //int[10] --数组类型
内存放 是怎样存放的?:数组 是一片连续的空间
数组的特点:
连续型
单一型
有序性
//数组元素赋值
数组的给值:
初始化
int a[10] = {1,2,3,4,5,6,7,8,9,10}; //全部初始化、 {} 表示 初始化器
int a[10] = {1,2,3,4,5}; //部分初始化 ---给出的值,按数组元素顺序依次给到,未给出的值,默认初始化为0
int a[10] = {0}; //初始化为0
int a[10] = {}; // {} 初始化器 全部初始化为0
int a[10]; //不初始化 --此时每个元素中是随机值
int a[]; //定义数组时,长度可以省略,但是要求,必须有初始化的值
//此时数组长度,由编译器根据 初始化值的个数推算
赋值: //只能给到具体的数组元素
注意:
数组不能整体赋值
a 代表数组整体 这个类型 不能整体赋值
能赋值的是,数组的每个元素
数组的访问:
语法格式:
数组名[下标] // 此时的[]不同于定义时的[],此时的[]表示的是数组下标运算 (运算符)
int a[10];
下标:
整型数
0~数组长度-1
下标的本质--实际上是一个偏移量,针对于数组起始位置的偏移量 //指针
数组名:
数组名[下标] //所谓的数组下标运算,本质上是一个指针运算
数组名 ---所代表的类型 ---数组类型
所代表的值 ---数组首元素的地址
int a = 10;
a[0]
// 1+2
// 2+1
问题:
1. 数组的越界访问
编译器不检查
程序员自己小心
作业:
1. 求斐波那契数列前n项的和值
1 1 2 3 5 8 13 21 34 55 ...
思路:
a b n
1 1 2 3 4 5 6 7
第三项 开始 每一项都是前两项之和
流程:
1.准备数据
sum = 0;
n = 0;
a = 1;
b = 1;
2.处理
while ()
{
sum = sum + n;
n = a + b; //第三项 开始 每一项都是前两项之和
a = b;
b = n;
}
3.输出
2.
在歌手大奖赛中有若干裁判为歌手打分,计算歌手最后得分的方法是:
去掉一个最高分,
去掉一个最低分,取剩余成绩的平均分。
编写程序,
输入一个歌手的若干成绩,以-1作为输入结束标记,计算歌手的最后得分。
3. 思考题:
编写程序,求a+aa+aaa+…+aa…a,其中a是一个数字。
例如:
3+33+333+3333+33333(此时n为5)。
要求a和n从键盘输入,
输出格式为3+33+333+3333+33333=37035。"
3
3 + 33
3 + 33 + 333
a = 3;
t = 0;
t = t*10 + a; // 3 //t = 3;
//t = 33;
//t = 333;