一.初始数组
1.数组是一个变量,由数据类型相同的一组元素组成。
2.变量:内存中的一块空间
数组:内存中的一串连续的空间
3.数组的结构和基本元素:(1)标识符:数组的名称,用于区分不同的数组。数组只有一个名称。
(2)数组元素:向数组中存放的数据。数组中的每个元素都可以通过下标来访问。
(3)元素下标:对数组元素进行编号。它标明了元素在数组中的位置,从0开始。
(4)元素类型:数组元素的数据类型。
注:数组长度固定不变,避免数组越界。
二.初始一维数组
1.实例:学生单门学科的成绩;某类别商品的单价;某人N个月的工资。
2.语法:datatype arrayName[size];
如int nums[25];
char array_of_name[30];
double curr_salary[35];
#define N 50; //使用了宏定义,将50赋给N,但此时N没有数据类型,在具体使用时才换成相应类型。
int emp_id[N];
…
const int SIZE = 100; //已经有固定类型,表示常量。
double prices[SIZE];
3.初始化一维数组:
//正确:后面的元素个数与声明的一致。
int years[6]={11,12,13,14,15,16};
//正确:后面5个元素未初始化,默认值为0
int months[12]={1,3,5,7,9,13,15};
//正确:元素个数为2
int days[]={1,15};
//错误:未知元素个数!
int array[]={};
4.动态地从键盘录入信息并赋值:
#include <stdio.h>
#include <stdlib.h>
#define N 5
int main()
{
//动态录入
double score[N];
int i; //循环变量
//使用循环操作数组时,要注意:一个循环尽量只做一件事
for(i=0;i<N;i++)
{
printf("请输入第%d位同学的成绩:",i+1);
scanf("%lf",&score[i]);
}
//下面的循环用来打印数组元素
for(i=0;i<N;i++)
{
printf("第%d位同学的成绩是:%.2lf\n",i+1,score[i]);
}
return 0;
}
三.数组排序
1.循环录入5个整型数字,进行降序排列后输出结果
方案:使用冒泡排序(基础原理:遍历和交换)
#include <stdio.h>
#include <stdlib.h>
#define N 5 //宏定义,并不是必须的
int main()
{
int i,j; //循环变量
int temp; //用来交换的临时变量
int nums[N]={16,25,9,90,23};
//外层循环控制轮数
for(i=0;i<N-1;i++)
{
//内层循环控制每轮的比较次数
for(j=0;j<N-i-1;j++)
{
//如果当前值小于后面一个值,就交换
if(nums[j]<nums[j+1])
{
temp=nums[j];
nums[j]=nums[j+1];
nums[j+1]=temp;
}
}
}
printf("排序后的结果是:\n");
for(i=0;i<N;i++)
{
printf("%d\t",nums[i]);
}
return 0;
}
四.数组元素的删除与插入
1.删除的逻辑:(1)查找要删除数字的下标
(2)从下标开始,后面一个覆盖前面一个数字
(3)数组的总长度-1
五.二维数组
1.实例:学生多门学科的成绩;玩家的背包数据;游戏角色行走动画
2.语法:datatype name[rowSize][colSize];
double score[5][3];
int animate[4][4];
3.二维数组的动态赋值
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j;
//使用二维数组表示学生的成绩表
//四个学生的三门课成绩---四行三列
double scores[4][3] ={
{34,45,23,56},
{54,23,75,32},
{54,22,34,87},
{34,23,53,65}
};
printf("语文\t数学\t英语\n");
//使用循环打印每个数组元素
for(i=0;i<4;i++) //外层循环控制有几个学生
{
for(j=0;j<3;j++)
{
printf("%-8.2lf",scores[i][j]);
}
printf("\n");
}
return 0;
}
六.用例
1.使用数组定义游戏参数:
char name[8]; //用来存放用户输入的姓名
//姓名数组,最多容纳6个字符串,每个字符串的最大长度为8个字符(英文)
char names[6][8]={"西施","貂蝉","王昭君","杨玉环","赵飞燕"};