资源描述:
《C语言程序设计第九讲》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计第九讲主讲:厉福生上讲回顾函数的递归调用用递归写n的阶乘解方程算法变量的类型变量的存储类型数组在C语言中,把类型相同的若干变量组织起来就构成了数组。简单而言:数组就是很多个变量按一定的方式组合起来而成的。一维数组的定义类型说明符数组名[常量表达式];注意一:这里是C语言唯一一个使用中括号的地方。注意二:中括号中写的必须是常量表达式,不可有含有变量。中括号中的常量是数组中元素的个数。必须是整数。注意数组的类型实际上是指数组元素的类型。对于同一个数组,其所有元素的数据类型都是相同的。数组名的命名规则应符合标识符的命名规定。数组名不能与其他变量名相同。方括号
2、中常量表达式表示数组元素的个数。不能在方括号中用变量来表示元素的个数,但可以是符号常量或常量表达式。允许在同一个类型说明中,说明多个数组和多个变量。数组名表示首元素的地址,并不能代表整个数组。一维数组的引用数组名[下标]注意:这里的下标是0,1,2,3,……N个元素的数组下标是从0到N-1,每个数组元素都是一个独立的变量。数组名是0号元素的地址。一维数组的初始化定义同时赋初值的形式为:类型说明符数组名[常量表达式]={值,值,值,……值};注意:除了定义的同时赋初值之外,不可以这样赋值,只能对数组元素一一赋值。注意可以只给部分元素赋初值。在定义完之后只能给元素逐个赋
3、值,不能给数组整体赋值。如果定义同时赋初值,而且是全部赋值的情况下,可以不给出数组元素的个数。例如合法的用法有:inta[5];inta[5]={1,2,3,4,5};inta[10]={1,2,3};inta[]={1,2,3,4,5,6};错误的用法有:intc=5,a[c];inta[5];a[5]=8;inta[5];a[5]={1,2,3,4,5};inta[];以下程序的结果为?#includemain(){inta[5]={1,2,3,4,5},i;scanf("%d",a);for(i=0;i<5;i++)printf("%3d",
4、a[i]);}插入算法在一个有序未满的数组中插入一个元素,保证有序。如:元数组元素为:1,3,5,7,9现在插入一个数字6,保证其仍然有序。插入后的数组元素为1,3,5,6,7,9插入算法步骤定位:确定要插入的元素的位置。方法为:用待插入的元素减去后一个元素乘以待插入的元素送去前一个元素,如果两个差相乘小于0,则说明待插入元素在这两个数中间,便插入在此。插入:将后边的元素依次向后移动一位,装待插入的元素放在此处。例子#includemain(){inta[10]={1,3,5,7,9},i,k;for(i=0;a[i]!=0;i++)if(a[i]
5、<6&&a[i+1]>6)k=i+1;for(;i>k;i--)a[i]=a[i-1];a[i]=6;for(i=0;a[i]!=0;i++)printf("%3d",a[i]);}删除算法一在原数列中删除唯一的一个指定元素。如:1,2,3,4,5,6,7,8中把4删除。#includemain(){inta[10]={1,2,3,4,5,6};inti;for(i=0;i<9;i++)if(a[i]==4)break;for(;i<9;i++)a[i]=a[i+1];for(i=0;a[i];i++)printf("%3d",a[i]);}删除算
6、法二将下列数列中所有的3删除:1,3,5,7,5,4,3,2,3,5,7,3,3,9#includemain(){inta[20]={1,3,5,7,5,4,3,2,3,6,7,3,3,9};inti,j=0;for(i=0;a[j];i++)if(a[i]!=3)a[j++]=a[i];for(i=0;a[i];i++)printf("%3d",a[i]);}排序算法排序算法有很多种方法,主要的方法有三种:直接排序法选择排序法冒泡排序法直接排序法#includemain(){inta[5]={2,5,3,4,1};inti,j,
7、t;for(i=0;i<4;i++)for(j=i+1;j<5;j++)if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i<5;i++)printf("%3d",a[i]);}直接排序法执行过程#includemain(){inta[5]={2,5,3,4,1};inti,j,t,k;for(i=0;i<4;i++)for(j=i+1;j<5;j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(k=0;k<5;k++)printf("%3d",a[k]);