问题
-如何在程序中创建成百上千个变量?
-如何给成百上千个变量规律赋值?
数组的概念:数组是相同数据类型变量的有序集合
-数组作为整体需要一个合法的命名(数组名)
-数组中的变量没有独立命名,只有在数组中的编号
-数组中的变量数量是固定不变的(数组大小固定)
数组的定义
-语法:type Name [size];
·示例:
int arr1[10];// 建文名为 arr1 的数组
//数组中一共有 10 个元素(变量 )
//每个元素的类型为 int
double farr[5]; // 定义名为 farr 的数组
//数组中一共有 5 个元素(变量)
// 每个元素的类型为 double
数组元素的访问
- 通过 数组名[下标]的方式访问数组元素
-数组是一个有序集合,每个元素有固定下标
- 数组元素下标固定从0开始(可以使用变量作为下标)
int arr1[3];
arr1[-1] = 0; // ERROR
arrl[0] = 1;
arrl[1] = 1;
arrl[2] = 1;
arrl[3]= 4; // ERROR
注意事项
-只有整型数才能作为下标访问数组元素
-下标越界是一种非常严重的编程错误(工业级 BUG 来源 )
-下标越界带来的严重后果可能不会立即表现
数组的应用案例:计算累加和
-编写程序求出 0 到 100 之间任意一个数的累加和
·如:
√输入:0输出:0 即:0
√输入:1输出:1 即:0+1
√输出10 输出:55 即:0+1+2+..+10
√。。。
解决方案
示例:
#include<stdio.h>
int main()
{
int n =0;
int i = 0;
int flag = 0; //保存判断结果
int sum = 0; //保存累加和
printf("Input:");
scanf("%d",&n); //从键盘输入数值
getchar();
flag =((0<=n)&&(n<=100)); //辅助语句
if(flag) //如果flag为真
{
for(i=0;i<=n;i++) //初始值i=0,判断条件i<=n,i++累加
{
sum += i; //sum=sum+i
}
printf("sum = %d\n",sum);//打印sum
}
getchar();
return 0;
}
运行结果
#include<stdio.h>
int main()
{
int n = 0;
int flag = 0; //保存计算结果
int sum[101];
sum[0] = 0;
for(n=1;n<=100;n++) //初始值i=0,判断条件i<=n,i++累加
{
sum[n] = sum[n-1] + n; //sum[1]=sum[0]+1;sum[1]=sum[0]+2;...
}
do//当while(falg)条件为真,开始下面的循环
{
printf("Input:");
scanf("%d",&n); //读取键盘输入数值n
flag = ( (0 <= n) && (n <= 100) );//定义条件falg,判断键盘输入数值的取值范围,需要0 <= n并且n <= 100
if(flag)//如果满足条件flag
{
printf("sum=%d\n",sum[n]);//打印
}
}
while(flag);//条件
getchar();
return 0;
}
运行结果
小结
数组是相同数据类型变量的有序集合
数组元素通过 数组名[下标]的方式访问
只有整型数才能作为下标访问数组元素
下标越界是一种非常严重的编程错误