一维数组二维数组字符数组程序举例问题:输入5个整型数据,逆序后输出这些数据。用变量如何实现?x1x2x3x4x5x5x1x4x2x3逆序结果定义5个变量给5个变量输入数据x1和x5交换x2和x4交换输出#includestdio.hintmain(void){intx1,x2,x3,x4,x5,temp;printf(\nEnterx1,x2,x3,x4,x5:);scanf(%d,%d,%d,%d,%d,x1,x2,x3,x4,x5);temp=x1,x1=x5,x5=temp;temp=x2,x2=x4,x4=temp;printf(\nResultis:);printf(%d,%d,%d,%d,%d\n,x1,x2,x3,x4,x5);}问题:如果要将输入的20个数逆序后输出,可以用这种方法实现吗?回答:可以,但不现实。需要定义21(20+1)个变量,10行实现交换的语句。思考:x1,x2,x3,x4,……,x19,x20变量之间有关系吗?可以用循环实现两变量之间的交换吗?共性:这些数据具有相同的类型。#includestdio.h#defineN5intmain(void){inti,j,x[N],temp;printf(\nEnter%dnum:,N);for(i=0;iN;i++) scanf(%d,x[i]);for(i=0,j=N-1;iN/2;i++,j--){ temp=x[i]; x[i]=x[j]; x[j]=temp;}printf(\nResultis:);for(i=0;iN;i++) printf(%d,x[i]);printf(\n);return(0);}要实现20个数据逆序后再输出,只需要修改第2行为:#defineN20类型标识符数组名[数组长度]类型标识符:说明数组元素的类型数组长度:常量表达式,表示数组的长度例如:inta[10];定义了一个含有10个整型元素的数组aa[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]a[8]a[9]数组:相同类型数据的有序集合,在内存中连续存放。由数组名和下标惟一确定每个数组元素。下标从0开始,数组名代表数组的首地址。数组元素下标初始化:定义数组的同时,对数组赋初值类型标识符数组名[数组长度]={数值表};(1)对全部数组元素赋初值inta[10]={1,2,3,4,5,6,7,8,9,10};或inta[]={1,2,3,4,5,6,7,8,9,10};(2)部分赋初值inta[10]={1,2,3,4,5};系统自动给a[5]~a[9]赋初值0(3)对全部数组元素赋初值0inta[10]={0};或staticinta[10];(4)动态存储数组如果没有初始化,数组元素为随机值inta[10];数组必须先定义,后使用。数组的引用:数组名[下标]下标:整型表达式,取值范围为0~数组长度-1一次只能引用一个数组元素,不能一次引用整个数组数组的定义和数组元素的引用有什么不同?数组和循环有什么关系?for(i=0;in;i++)printf(%d,a[i]);定义:inta[10];intb;引用:只能引用a[0]~a[9]例如:b=5*a[6];【例4-2】将一个学生的N门课程成绩输入到一维数组中,求出其中的最高分及其下标。分析:依次比较找最大值比较后保留当前最大值及其下标max=score[0];for(k=1;kN;k++)if(score[k]max)