您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 数据通信与网络 > 全国计算机二级C语言程序设计讲义--一维数组和二维数组
第8讲一维数组和二维数组一、一维数组1、一维数组的定义2、一维数组元素的引用3、一维数组的初始化二、二维数组1、二维数组的定义和引用2、二维数组的初始化数学中:a1,a2,a3,···,ai,···,anC程序中:a[0],a[1],a[2],···,a[i-1],···a[n-1]数组是数目固定,类型相同的若干变量的有序集合。数组中的每一个数称为数组元素,数组中的每一个元素都属于同一个数据类型。在内存中数组占有一段连续的存储空间。一、一维数组1、一维数组的定义定义的格式:类型说明符数组名[整常量表达式],···;说明:类型说明符:表明该数组所属类型,即数组元素的类型。数组名:即数组的名称,其命名方法同变量名。[]:下标运算符,可通过该运算符的个数反映出数组的维数。整常量表达式:为一整常量表达式,表明数组的大小。特点:数组元素的个数必须是确定的数组元素的类型必须一致一维数组在内存中的存放方式:数组定义以后,编译系统(计算机)将在内存中开辟一块连续的存储单元用于存放数组元素,数组名表示存储单元的首地址,存储单元的大小由数组的类型和数组的大小决定。例如inta[5];inta[4]a[3]a[2]a[1]a[0]2字节2字节2字节2字节2字节引用方式:数组名[下标]2、一维数组元素的引用说明:下界≤下标≤上界;下界=0;上界=整常量表达式-1。下标为整型表达式;一个数组元素实质是一个变量,代表内存中的一个存储单元。引用后的数组变量也称下标变量。例#defineN20inta[5];floatf1[N+6];说明:a[5]:a[0],a[1],a[2],a[3],a[4]f1[N+6]:f1[0],f1[2],···,f1[25]注意:引用a[5],f1[26]编译不报错,但不能得到正确的运行结果。一维数组元素引用的规定:•数组必须先定义后使用。•数组元素只能逐个被引用,不能一次引用整个数组。•对数组中所有元素逐个引用时,通常可使用循环结构。例:1)floatb[12];b[1]=1.0;b[3]=7.6;b[0]=b[1]+b[3];b[2]=b[1]-b[3];······2)intj,a[10];for(j=0;j10;j++)a[j]=j;数组的初始化:指定义数组时对数组元素赋以初值。3、一维数组的初始化格式:类型符数组名[表达式]={初值表};说明:•给全部元素赋初值。•给部分元素赋初值。•给全部元素赋初值时可不指定数组的长度。•给全部元素赋初值。例inta[8]={0,1,2,3,4,5,6,7};•给部分元素赋初值。例inta[8]={0,1,2,3,4};a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]01234567a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]01234000•给全部元素赋初值时可不指定数组的长度。例inta[]={0,1,2,3,4,5,6,7};a[0]a[1]a[2]a[3]a[4]a[5]a[6]a[7]01234567例6.1统计全班32名同学某门功课的平均成绩,找出最高分,输出。main(){inti,sum,max,a[32];floataverage;for(i=0;i32;i++)scanf(%d,&a[i]);/*给数组元素赋初值*/for(sum=0,i=0,max=a[0];i32;i++){sum+=a[i];if(a[i]max)max=a[i];}average=(float)sum/32;printf(Average=%.2f,MAX=%d\n,average,max);}例6.2将一个数组中的值按逆序重新存放,并输出它。这里数组长度为N。分析:N-S图如下显示初始数组元素显示逆序数组元素for(i=0;iN/2;i++)第i个元素与第N-i-1个元素互换程序:#defineN5main(){chara[N],temp;inti;printf(“Enterarraya:\n”);for(i=0;iN;i++)scanf(“%c”,&a[i]);for(i=0;iN;i++)printf(“%4c”,a[i]);for(i=0;iN/2;i++){temp=a[i];a[i]=a[N-i-1];a[N-i-1]=temp;}printf(“\nNow,arraya:\n”);for(i=0;iN;i++)printf(“%4c”,a[i]);}例6.3用起泡法排序。将任意十个数按由小到大的方式排序。例:第一轮682931682931628931628931628931628391628391628319628319628319268319268319268319263819263819263189263189第二轮231689第三轮213689第四轮123689第五轮682931原数思路:将相邻两个数进行比较,使小数在前,大数在后。分析说明:1)相邻两数比较:a[j]>a[j+1]2)第一轮:6个数,j=1~5;循环5次,找出最大数,放在最后。3)第二轮:5个数,j=1~4;循环4次,找出次大数,放在最大数前。4)余此类推,经过5轮,将6个数排序输出。所以:外循环为i=0~4,内循环为:j=0~5-i;即:for(i=0;i<5;i++)for(j=0;j<6–i;j++)if(a[j]>a[j+1]){a[j]←→a[j+1]}程序:main(){inta[10],i,j,k;printf(请任意输入10个整数:\n);for(i=0;i10;i++)scanf(%d,&a[i]);printf(\n);for(i=0;i=8;i++)for(j=0;j9-i;j++)if(a[j]a[j+1]){k=a[j];a[j]=a[j+1];a[j+1]=k;}printf(按由小到大的顺序输出10个整数是:\n);for(i=0;i10;i++)printf(“%d,,a[i]);printf(”\b。\n”);}二、二维数组1、二维数组的定义和引用二维数组的定义格式:类型说明符数组名[整常量表达式1][整常量表达式2]存储方式:在计算机中二维数组的元素按行顺序存放。注意:0≤下标1≤常量表达式1-1;0≤下标2≤常量表达式2-1。二维数组的引用格式:数组名[下标1][下标2]例:intm[2][3]合法引用格式为:m[0][0]m[0][1]m[0][2]m[1][0]m[1][1]m[1][2]说明:•给全部元素赋初值。•给部分元素赋初值。•给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能省略。2、二维数组的初始化二维数组初始化通常是按行进行的。格式:类型符数组名[表达式1][表达式2]={初值表};二维数组初始化举例:•给全部元素赋初值。例inta[3][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};或写成:inta[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};•给部分元素赋初值。例inta[3][4]={{0,1},{4,5,6},{8,9,10,11}};或写成:intb[3][4]={0,1,2,3,4,5,6};•给二维数组的全部元素赋初值,可以不指定第一维的长度,但第二维的长度不能省略。例inta[][4]={{0,1,2,3},{4,5,6,7},{8,9,10,11}};或写成:inta[][4]={0,1,2,3,4,5,6,7,8,9,10,11};例6.4矩阵的转置。分析:将矩阵Am*n行列互换后,得一新矩阵为Bn*m。它们的元素对应关系为:ai,j=bj,i程序:main(){inti,j,a[3][4],b[4][3];for(i=0;i3;i++)for(j=0;j4;j++){scanf(%d,&a[i][j]);b[j][i]=a[i][j];}for(i=0;i4;i++){for(j=0;j3;j++)printf(%7d,b[i][j]);printf(\n);}}例6.5打印阳辉三角。(要求打印N行)杨辉三角形是(a+b)的n次幂展开后各项的系数。例如:…………(a+b)的0次幂展开后各项的系数为:1(a+b)的1次幂展开后各项的系数为:1,1(a+b)的2次幂展开后各项的系数为:1,2,1(a+b)的3次幂展开后各项的系数为:1,3,3,1(a+b)的4次幂展开后各项的系数为:1,4,6,4,1分析:杨辉三角各行的系数有如下规律(1)各行第一个数都是1;(2)各行最后一个数为1;(3)从第3行起,除上面指出的第一个数和最后一个数外,其余各数是上一行同列和前一列两个数之和。11,2,11,3,3,11,4,6,4,1a[3][2]=a[2][1]+a[2][2]a[4][4]=a[3][3]+a[3][4]表示为通式即:a[i][j]=a[i-1][j]+a[i-1][j-1]N-S图为:使数组第一列和对角线元素为1输出二维数组的内容其他各元素为:(用for循环)a[i][j]=a[i-1][j]+a[i-1][j-1]程序:#defineN10main(){inti,j,a[N][N];for(i=0;iN;i++){a[i][i]=1;a[i][0]=1;}for(i=2;iN;i++)for(j=1;j=i-1;j++)a[i][j]=a[i-1][j]+a[i-1][j-1];for(i=0;iN;i++){for(j=1;j=i;j++)printf(“%6d”,a[i][j]);print(“\n”);}}
本文标题:全国计算机二级C语言程序设计讲义--一维数组和二维数组
链接地址:https://www.777doc.com/doc-4384485 .html