资源描述:
《C语言基础 六、数组》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、六、数组的定义和引用本章概述:以笔试和上机两种形式考核。笔试中,多出现在选择题第23-27题,填空题第9-11题,分值约占12%。上机中,三种题型中均有体现,抽中几率约为28%。大纲要求:1.一维数组和二维数组的定义、初始化和数组元素的引用。2.字符串与字符数组。重点难点:1.一维数组和二维数组的定义、初始化和数组元素的引用。2.字符串与字符数组。考点1考点分析:一维数组的定义、初始化及其元素的引用一维数组的定义:在C语言中,数组必须先定义,后引用。定义一维数组的格式为:类型说明符数组名[数组大小(整型常量表达式)],…;其中“类型说明符”可以是任何的C
2、语言数据类型,例如char、int、long、float、double等。“数组名称”与普通变量名称一样。代表“数组大小”的“整型常量表达式”表示数组在内存中的元素个数,在定义时必须是一个常数,不能是变量,数组每个元素所占的字节数就是对应类型说明符规定类型所占的字节数。一维数组的初始化数组在定义时还可以同时为各个元素赋予初值,称为数组的初始化。可以用以下几种形式。⑴对数组的所有元素均赋予初值,数组的长度可以省略。例如:inta[6]={1,2,3,4,5,6};也可写为inta[]={1,2,3,4,5,6};a数组初始化后,a[0]=1,a[1]=2,
3、a[2]=3,a[3]=4,a[4]=5,a[5]=6。⑵对数组的部分元素赋予初值。例如:intb[10]={1,2,3};b数组初始化后,b[0]=1,b[1]=2,b[2]=3,其余各元素均为0。⑶对数组的所有元素均赋予0值。例如:intc[10]={0};或intc[10]={0,0,0,0,0,0,0,0,0,0};一维数组元素的引用定义了某数组后,就可以引用该数组中的任何元素了。引用形式为:数组名[下标]。在引用时应注意以下几点:⑴引用时只能对数组元素引用。如a[i],b[i];而不能引用整个数组,如a或b。⑵在引用数组元素时,下标可以是整型常
4、数、已赋值的变量或含变量的表达式。⑶C语言数组下标从0开始。下标从0开始,则a[i]的地址=首地址+i*每个数据所占的长度。⑷数组下标不能超界。若数组含有n个元素,下标的最大值为n-1,(因下标从0开始);若超出界限,C编译程序并不给出错误信息(即其不检查数组是否超界),程序仍可以运行,但可能会改变该数组以外其它变量或其它数组元素的值,由此会造成不正确的结果。l试题解析1.从键盘输入10个整型数据,找出其中的最小值并显示出来。程序如下:main(){inta[10],min,i;for(i=0;i<10;i++)scanf(“%d”,&a[i]);min
5、=a[0];for(i=1;i<10;i++)if(min>a[i])min=a[i];printf(“min=%d”,min);}程序运行结果为:若输入:102234–9066457859-11100输出为:min=-902.采用“冒泡法”对任意输入的10个整数按由小到大的顺序排序。程序如下:main(){inta[10],i,j,t;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)for(j=0;j<10-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[
6、j+1]=t;}for(i=0;i<10;i++)
printf("%4d",a[i]);printf("");}程序运行结果:若输入10个数是:22349876–9059–114581–27则排序的结果为:-90–27–1122344559768198解析:冒泡法排序的思路是:n个数由小到大排序,将相邻两个数依次进行比较,将小数调换在前头,逐次比较,直至将最大的数移至最后;再将n-1个数继续比较,将次大数移至倒数第2位置;依此规律,直至比较结束。3.采用“选择法”对任意输入的10个整数按由大到小的顺序排序。程序如下:main(){inti,j,t,
7、max,max_j,b[10];for(i=0;i<10;i++)
scanf("%d",&b[i]);for(j=0;j<9;j++){max=b[j];max_j=j;for(i=j;i<10;i++)if(b[i]>max){max=b[i];max_j=i;}t=b[max_j];b[max_j]=b[j];b[j]=t;}for(i=0;i<10;i++)printf("%4d",b[i]);printf("");}程序运行结果:若输入10个数是:22349876–9059–114581–27则排序的结果为:98817659453422–1
8、1–27-90解析:选择法排序的思路是:将n个数依次比较,保存最大数的下标位置,