C程序设计讲义四川职业技术学院邓绯第1页共5页C程序设计讲义数组(理论一)教学目的:1.了解一维数组的基本概念2.掌握数组类型变量的定义与引用3.掌握数组元素的引用4.程序实现排序教学重点:一维数组的定义与引用教学难点:典型算法“冒泡法”的理解。授课形式:理论教学条件:多媒体教学内容:复习:顺序,选择,循环语句提出:如何给一个班的同学起变量名新课:数组一维数组一维数组中的各个数组元素是排成一行的一组下标变量,用一个统一的数组名来标识,用一个下标来指示其在数组中的位置。下标从0开始。一维数组通常和一重循环相配合,对数组元素进行处理。1.一维数组的定义(先定义后使用)定义一维数组的格式:类型说明数组名[整型常量表达式]例如:inta[100];定义了一个数组a,元素个数为100,数组元素类型为整型。说明:(1)数组名:按标识符规则。本例a就是数组名。(2)整型常量表达式:表示数组元素个数(数组的长度)。可以是整型常量或符号常量,不允许用变量。(3)类型说明:指的是数据元素的类型,可以是基本数据类型,也可以是构造数据类型。类型说明确定了每个数据占用的内存字节数。(4)C编译程序为数组分配了一片连续的空间。(5)C语言还规定,数组名是数组的首地址。即a=&a[0]2.一维数组的初始化C程序设计讲义四川职业技术学院邓绯第2页共5页数组可以在定义时初始化,给数组元素赋初值。数组初始化常见的几种形式:(1)对数组所有元素赋初值,此时数组定义中数组长度可以省略。(2)对数组部分元素赋初值,此时数组长度不能省略。(3)对数组的所有元素赋初值0。注意:如果不进行初始化,如定义inta[5];那么数组元素的值是随机的,不要指望编译系统为你设置为默认值0。3.数组元素的引用形式:数组名[下标]注意:数组元素引用时,下标为整型的表达式,可以使用已赋值的变量或是符号常量。例:数组元素的引用例子。voidmain(){inta[10],b[5]={55,44,33,22,11},i;for(i=0;i10;i++){a[i]=i+1;printf(“%4d”,a[i]);}printf(“\n”);for(i=0;i5;i++){printf(“%4d”,b[i]);}printf(“\n”);}说明:(1)引用数组元素时,下标可以是整型常数、已经赋值的整型变量或整型表达式。(2)数组元素本身可以看作是同一个类型的单个变量,因此对变量可以进行的操作同样也适用于数组元素。也就是数组元素可以在任何相同类型变量可以使用的位置引用。(3)引用数组元素时,下标不能越界。否则结果难以预料(覆盖程序区-程序飞出,覆盖数据区-数据覆盖破坏,操作系统被破坏,系统崩溃)。4.一维数组的应用例:从键盘输入100个整型数据,找出其中的最小值并显示出来。#include“stdio.h”#definesize100C程序设计讲义四川职业技术学院邓绯第3页共5页voidmain(){inti,data[size];intmin_allo=0;for(i=0;isize;i++)scanf(“%d”,&data[i]);for(i=1;isize;i++){if(data[i]data[min_allo])min_allo=i;}printf(“minis%5d,alloctionis%5d”,data[min_allo],min_allo);}例:采用“冒泡法”对任意输入的10个整数按由小到大的顺序排序。假设有十个数(34,321,100,56,23,-5,9,0,12,-33)例:已知某课程的平时,实习,测验和期末成绩,求该课程的总成绩。其中平时,实习,测验和期末分别占10%,20%,20%,50%。/*功能:从键盘上循环输入某课程的平时,实习,测验和期末成绩,按%10,20%,20%,50%的比例计算总评成绩,并在屏幕上显示出来。按空格键继续循环,其他键终止循环。*/#include“stdio.h”#includestdio.h#defineN10main(){inta[10],i,j,t;clrscr();printf(pleaseinputthe10numbers:\n);for(i=0;iN;i++)scanf(%d,&a[i]);for(i=0;iN-1;i++)for(j=N-1;ji;j--)if(a[j]a[j-1]){t=a[j];a[j]=a[j-1];a[j-1]=t;}printf(\ntheresultofsort:\n);for(i=0;iN;i++)printf(%d,a[i]);getch();/*库函数getch():等待键盘输入任一字符,目的使程序暂停。}}输入10个整数输出排序后的10个整数冒泡排序交换C程序设计讲义四川职业技术学院邓绯第4页共5页voidmain(){inti=1,j;charcon_key=’\x20’;floatscore[5],ratio[4]={0.1,0.2,0.2,0.5};while(con_key==’\x20’){clrscr();printf(“pleaseinputthe%2dstudent’sscore\n”,i++);printf(“pingshishixiceyanqimochengji\n”);score[4]=0;/*score[4]:存储总评成绩*/for(j=0;j4;j++){scanf(“%f”,&score[j]);score[4]+=score[j]*ratio[j];}printf(“thetotalscoreis:%6.1f\n”,score[4]);printf(“\nspacecontinue,otherquit”);con_key=getch();/*等待键盘输入一个字符*/}}例:将一个数组中的值按逆序重新存放,原来的顺序为:8,6,5,4,1,要求改为1,4,5,6,8#include“stdio.h”#defineN5voidmain(){inta[N]={8,6,5,4,1},i,temp;printf(“\nbeforearray:\n”);for(i=0;in;i++)printf(“%4d”,a[i]);for(i=0;iN/2;i++){temp=a[i];a[i]=a[n-i-1];C程序设计讲义四川职业技术学院邓绯第5页共5页a[n-i-1]=temp;}printf(“\nafterarray:\n”);for(i=0;iN;i++)printf(“%4d”,a[i]);}课后总结:1.讲解了一维数组的基本概念2.讲解了数组类型变量的定义与引用3.讲解了数组元素的引用4.请同学们认真记忆一下排序程序