{x=(x1*f2-x2*f1)/(f2-f1); f=((x-5.0)*x+16.0)*x-80.0; if(f*f1>0) {f1=f; x1=x;} else {f2=f;x2=x;} }while(fabs(f)>=0.0001); printf(“A root of equation is %8.4f”,x); } 7、作业 P152 7.7 7.8 7.11 7.12 数 组 【教学目的】 掌握数组的概念及使用方法 【教学重点】 一维数组的原理与使用方法及在程序设计中的使用 【教学难点】 多维数组的原理与使用 【教学方法】 讲授式、讨论式、读书指导、案例分析式。 【新课内容】 1、数组的有关概念 数组是具有一定顺序关系的若干相同类型变量的集合,特点: 数组具有有序性 数组具有同一性 数组具有整体性 组成数组的每个分量称为数组的元素; 数组的维数(一维,二维,三维) 定义 类型说明符 数组名[常量表达式]; int a[5]; char c[20]; float x[10]; 注意: 数组名定名规则与变量名相同; 数组名后是方括号,而不是小括号; 常量表达式表示元素的个数,下标从零开始。 数组的大小是固定的,不能动态定义。 例如:int n; scanf(“%d”,&n);int a[n];是错误的。 2、引用 数组必须先定义,后使用。 只能逐个引用数组元素。 引用形式:数组名[下标]; 其中下标可以是整型常量、变量或表达式; 数组长度为M时,下标值为0,1,2…M-1 例如,定义数组 int a[3],数组元素为a[0] a[1] a[2] a[0]=10; a[1]=25; a[2]=a[0]+a[1]; 初始化 顺序指定全部元素的初始值 [static] int a[5]={1,2,3,4,5}; 新标准可以对auto进行初始化。 指定部分元素的初始值 int a[5]={0,0,1}; 以上语句只给数组a的前面三个元素赋了初始值,未赋初值的元素的值在此默认为0; 常见错误 1). int a[5]={0,1,2,3,4,5}; 多了一个初值。 2). int a(5); int a[5]; 3). int a[5]=0; int a[5]={0}; 4). int a[5]=(0,1,2,3,4); int a[5]={0,1,2,3,4}; 5). int a={0,1,2,3,4}; 6).int a[5]; a={0,1,2,3,4};或a[5]={0,1,2,3,4}; 3、输入和输出 C语言规定,对数组的使用只能逐个引用数组元素,不能一次引用整个数组。同样,对数组的输入和输出也是依次对每个元素进行的。 例如,输入10个数,并将它们输出。 main() { int a[10],i; for(i=0;i<10;i++) scanf(\for(i=0;i<10;i++) printf(\} 常见错误 int a[10]; for(i=1;i<=10;i++) a[i]=i; 改正: for(i=0;i<10;i++) a[i]=i; 说明:在循环体内利用循环控制变量作为下标输入输出数组元素,因此数组元素输入输出的次序和数量可以控制。 例如,下面的程序段将一个数组按照逆序打印数组元素的值。 for(i=9;i>=0;i--) printf(\下面的程序段只打印一个数组的前五个元素的值。 for(i=0;i<5;i++) printf(\4、一维数组应用举例 例 有一个一维数组,有10个整数存放其中,找出其中最大的一个数。 main() { int i,max,x[10]; printf(\ for(i=0;i<10;i++) scanf(\ max=x[0]; for(i=1;i<10;i++) if(x[i]>max) max=x[i]; printf(\ } 例 有一个一维数组,有10个整数存放其中,找出其中最大的一个数及其下标。 main() { int i,max,x[10],k; printf(\ for(i=0;i<10;i++) scanf(\ max=x[0];k=0; for(i=1;i<10;i++) if(x[i]>max) { max=x[i]; k=i;} printf(\ } 从键盘上输入一个学生五门功课的成绩,求平均分 main() {int i; float sum=0,a[5]; printf(\ for(i=0;i<5;i++) scanf(\ for(i=0;i<5;i++) sum+=a[i]; printf(“average=%.2f\\n\ } 例 使用数组编程,计算出前10项fibonacci数列,要求一行打印5个数。 应用举例(排序:冒泡法) 假定有5个无序的数 21,13,90,32,-1 应用举例(排序:冒泡法)续 应用举例(排序:冒泡法)续 for(i=1;i<=n-1;i++) for( j=0;j
相关推荐: