第6章 数 组费下载.docVIP

  • 3
  • 0
  • 约3.13万字
  • 约 18页
  • 2017-11-24 发布于四川
  • 举报
PAGE PAGE 1 第六章 数 组 前面几章介绍的数据类型有整型、实型和字符型,它们都属于基本数据类型。除此之外,C语言还提供了一些更为复杂的数据类型,称为构造类型或导出类型,它们由基本类型按一定的规则组合而成。 数组是最基本的构造类型,它是一组相同类型数据的有序集合。数组中的元素在内存中连续存放,每个元素都属于同一种数据类型,用数组名和下标可以唯一确定数组元素。下面我们先看看下面的一个例子,了解一下怎样用数组。 6.1.1 排序问题 例6.1 用选择法对10个整数排序(从小到大) 设有数组a[11]有10个元素a[1]~a[10],将a[1]与a[2]~a[10]比较,若a[1]比a[2]~a[10]都小,则不进行交换,即无任何操作。若a[2]~a[10]中有一个以上比a[1]小,则将其中最小的一个(假设为a[i])与a[1]交换,此时a[1]中存放了10个数中最小的那个数。第二轮将a[2]与a[3]~a[10]比较,将剩下的9个数中的最小者a[i]与a[2]对换,此时a[2]中存放的是10个数中第2小的数。以此类推,共进行9轮比较,a[1]到a[10]就按由小到大顺序存放了。 #include stdio.h main() { int i,j,min,temp;// 定义变量 int a[11];// 定义数组,数组中存放10个数(元素),从a[1] ~ a[10]存放,但定 // 时要定义a[11],而不是a[10],因为数组最后的一个元素位置系统自动// 给放一个结束标志,所以定义数组时,一般都要多定义一个数组单元。 printf(Enter data:\n); for(i=1;i=10;i++) { printf(a[%d]=,i); scanf(%d,a[i]);//输入10个数 } printf(\n); printf(你输入的10个数是:); for(i=1;i=10;i++) printf(%5d,a[i]);// 输出你敲入的这10个数 printf(\n); for(i=1;i=9;i++) // 以下8行是对10个数进行排序,i=9是循环9次 { min=i; for(j=i+1;j=10;j++) if(a[min]a[j]) min=j; temp=a[i]; // 以下3行将a[i+1] ~ a[10]中最小者与a[i]对换 a[i]=a[min]; a[min]=temp; } printf(排好序的10个数是:); for(i=1;i=10;i++) // 输出已排好序的10个数 printf(%5d,a[i]); printf(\n\n); return 0; } 运行结果是:Enter data: a[1]= (敲入)6 a[2]= (敲入)90 a[3]= (敲入)45 a[4]= (敲入)56 a[5]= (敲入)5 a[6]= (敲入)15 a[7]= (敲入)44 a[8]= (敲入)78 a[9]= (敲入)58 a[10]=(敲入)99 你输入的10个数是: 6 90 45 56 5 15 44 78 58 99 排好序的10个数是: 5 6 15 44 45 56 58 78 90 99 程序的功能很明显,输入一批整数并排序,然后输出排好序后的数。这就要求保存输入数据,并对它们进行处理,程序中用一个整型数组,而不是若干个整型变量来存放它们。 定义一个整型数组a后,在内存中开辟了10个连续的单元,用于存放数组a的10元素a[0]~a[9]的值,这些元素的类型都是整型,由数组名a和下标唯一地确定每个元素。这10个数组元素接收输入数据后,相应内存单元的存储内容如图6.1所示。程序中为适应人们的习惯,将0单元当做1单元开始。 6 90 45 56 5 15 44 78 58 99 a a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] 图 6.1 数组元素的存储 在程序中使用数组,可以让一批相同类型的变量使用同一个数组变量名,用下标来相互区分。它的优点是表达简洁,可读性好,便于使用循环结构。 6.1.2 一维数组的定义和引用 1、定义 定义一个数组,需要明确数组变量名、数组元素的类型和数组的

文档评论(0)

1亿VIP精品文档

相关文档