新生第一讲
The First Blood of the new term
数组
是否能用基本数据类型解决所有问题?
——概念引入
Boss叫小明输入60个员工的勤奋值并依次输出
So Easy!!
数组
void fun()
{
int i;
int a;
for(i = 0 ; i < 60 ; i++)
{
scanf("%d" , &a);
printf("%d\n" , a);
}
}
从小到大输出
100000个员工的勤奋值?
?
数组
数组的概念
数组是具有一定顺序关系的若干相同类型变量的集合体,组成数组的变量称为该数组的元素。
数组属于构造类型。
一维数组—定义和引用
一维数组的定义
类型说明符 数组名[ 常量表达式 ];
例如: int a[10]; 说明: a 为整型数组名,它有10个元素:a0...a9
可以是常量 和 符号常量,不能用变量。
合法的标识符
存储顺序:数组元素在内存中顺次存放,它们的地址是连续的。
例如:数组 a,在内存中的存放次序如下:
a[0]
a[1]
a[2]
a[3]
a[4]
a[5]
a[6]
a[7]
a[8]
a[9]
a
数组名字是数组首元素的内存地址。
数组名是一个常量,不能被赋值。
数组
一维数组的引用
数组必须先定义,后使用。
数组元素的表示形式:数组名[下标]
下标可以是整型常量或整型表达式例如:a[0]=a[5]+a[7]-a[2*3]
数组下标范围:0-(N-1)(N为数组的长度),使用时注意防止下标越界。
可以在编译阶段使数组得到初值:
在定义数组时对数组元素全部赋以初值。例如:int a[10]={0,1,2,3,4,5,6,7,8,9};
在对全部数组元素赋初值时,可以不指定数组长度。例如:int a[]={1,2,3,4,5};
可以只给一部分元素赋初值。例如:int a[10]={0,1,2,3,4}; int b[10]={1,3,5};
数组的简单操作
Sample Input:
1 2 3 4 5 6 7 8 9 10
Sample Output:
10 9 8 7 6 5 4 3 2 1
数组的简单操作
void reverse_array()
{
int a[20];
int Size,i,j;
scanf("%d",&Size);
for(i = 0 ; i < Size ; i++)
scanf("%d" , &a[i]);
for(i = 0 , j = Size-1 ; i <= j ; i++,j--)
{
a[i] = a[i]+a[j];a[j] = a[i]-a[j];a[i] = a[i]-a[j];
}
for(i = 0 ; i < Size ; i++)
printf("%d " , a[i]);
puts("");
}
数组的简单操作
void fib()
{
int a[30],i;
a[0] = a[1] = 1;
for(i = 2 ; i < 20 ; i++)
a[i] = a[i-1] + a[i-2];
for(i = 0 ; i < 20 ; i++)
printf("%d " , a[i]);
puts("");
}
课后思考:
如何求数列
第100000位的数
mod 50 的值?
C语言教学课件:ACM新生第一讲 来自淘豆网www.taodocs.com转载请标明出处.