1、1,上课要求: 1:手机调振动 2:认真听讲 3:不上网,2,问 题 一,编写程序,从键盘输入三个整数, 将它们按从小到大顺序排序,然后依次 输出这三个整数。,3,问 题 二,编写程序,从键盘输入三十个整 数,将它们按从小到大顺序排序,然 后依次输出这三十个整数。,4,一维数组,二维数组,字符数组,数 组,5,定义:数据类型 数组名常量表达式;,合法标识符,数据元素个数,下标运算符,例子:int a4;char x2;,一维数组,int a4;,6,main( ) int i;for(i=0;i3;i+) scanf(“%d“, ,Undefined symbol a in function
2、main,一维数组的引用,数组必须先定义,后使用,7,main() int i, a3, a=0;for(i=0;i3;i+) scanf(“%d“, ,Redeclaration of a in function main,一维数组的引用,数组必须先定义,后使用,数组名不能与程序中的其它变量同名,8,代表数据长度的常量表达式不能使用变量,数据元素的下标起始值为0,例 printf(“%d“,a); (),例 int data5; data5=10; (),数组必须先定义,后使用,修改 for(j=0;j10;j+)printf(“%d “,aj);(),一维数组的引用,数组名不能与程序中的其
3、它变量同名,只能逐个引用数组元素,不能整体使用,例 int i=15; ()int datai;,9,数据元素的下标起始值为0,数组必须先定义,后使用,代表数据长度的常量表达式不能使用变量,一维数组的引用,数组名不能与程序中的其它变量同名,只能逐个引用数组元素,不能整体使用,对数组名不允许进行+或-运算,例 int di; d+; (),10,可以只给部分数组元素赋初值,例 如: int a3=8,7,6; 等价于: a0=8;a1=7;a2=6;,例 如: static int a3; 等价于: a0=0;a1=0;a2=0;,static数组不初始化系统自动赋0值,给全部元素赋初值可不指定
4、数组长度,一维数组的初始化,例 如: int a3=6,2; 等价于: a0=6;a1=2;a2=0;,例如:int a=1,2,3,4,5,6; 系统根据初值个数确定数组维数,可以在定义时为数组元素赋初值,数组不初始化,其元素值为随机数,例 如: int a2; 等价于: a0=随机数;a1=随机数;,11,例:求10个整数的最大值和最小值,main() int x10,i,max,min;for(i=0;i10;i+)scanf(“%d“, ,max=min=x0; for(i=1;ixi) min=xi; ,12,【例4-1】输入一个班级3个学生的学号和三门课成绩,并按每行一个的格式输出
5、。,分析:首先定义4个数组,长度均为3,用于分别存放学生的学号和三门课的成绩。然后利用循环输入每个学生的学号和三门课的成绩,最后再循环输出每个学生的数据。,程序参考代码:,13,#include “stdio.h“ #define N 3 main() int i,numN,aN,bN,cN; /*定义数组用于存储学号和三门课成绩*/for(i=0;iN;i+)printf(“请输入第%d个学生的学号和三门课成绩:n“,i+1);scanf(“%d%d%d%d“, ,14,定义:数据类型 数组名常量表达式常量表达式;,行数,列数,例 int a34; float b25;int a3,4; (
6、),存放顺序:按列先变化存放在一维内存中,二维数组,15,二维数组示例,每个元素ai由包含4个元素的一维数组组成,int a34;,二维数组a是由 3个元素组成,16,分行初始化,二维数组元素的初始化,17,分行初始化,按元素排列顺序初始化,二维数组元素的初始化,18,4.2.2 二维数组元素的引用,引用形式:数组名行下标列下标如:a23表示是a数组中第3行第4列的元素。,二维数组的输入和输出一般要用双重循环来实现。,例如: #include “stdio.h“ main() int a34,i,j;for(i=0;i3;i+)for(j=0;j4;j+)scanf(“%d“, /*输出每个元素的值*/ ,19,【例4-2】用户输入一个55的整数矩阵,编写程序求 其两个对角线上的元素之和。,#include “stdio.h“ #define N 5 main() int i,j,aNN,sum=0;for(i=0;iN;i+)/*循环输入矩阵每行的元素*/ for(j=0;jN;j+)scanf(“%d“, ,