C语言排序学生成绩ppt课件_第1页
C语言排序学生成绩ppt课件_第2页
C语言排序学生成绩ppt课件_第3页
C语言排序学生成绩ppt课件_第4页
C语言排序学生成绩ppt课件_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、项目四项目四项目要点:项目要点:数组的定义和使用数组的定义和使用 数组的存储结构数组的存储结构 数组的输入输出数组的输入输出 字符串处理函数字符串处理函数学习目标:学习目标:使用数组处理同一类型的大批数据使用数组处理同一类型的大批数据使用字符数组处理字符串使用字符数组处理字符串 使用二维数组处理字符串使用二维数组处理字符串 C C语言程序设语言程序设计计工作任务导入工作任务导入工作任务工作任务 一个班上一个班上50位学生参与考试,位学生参与考试,考了考了3门课程,现要求按总成绩的门课程,现要求按总成绩的高低输出成绩单高低输出成绩单引导问题引导问题1、课程的成绩如何存储、课程的成绩如何存储2、学

2、生信息如何存储、学生信息如何存储3、如何对成绩进行排序?、如何对成绩进行排序?任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩main() int i, x, s=0; for( i=0; i50; i+) scanf(“%d”,&x);s+=x; printf(“%fn”, s/50.0);只用了三个变量就解决了问题,但数据没有保存。 如果需要把成绩按从高到低的顺序全部打印出来,怎么办?计算50个学生成绩的平均分数 组 相同类型数据的集合。 让一组同一类型的数据共用一个变量名,而不需要为每一个数据都定义一个名字。任务任务1 输入输入/输出多个学生一门输出多个

3、学生一门课程的成绩课程的成绩 一维数组的定义数据类型 数组名常量表达式;数组元素的数据类型遵循C语言标识符规则数组长度几个数组元素任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.1 4.1.1 一维数组一维数组例如:例如:int a5int a5;阐明:常量表达式表示元素的个数,即数组长度。 常量表达式中可以包括常量和符合常量,不能包含变量。 任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.1 4.1.1 一维数组一维数组int i=5;int ai; /*数组长度为变量*/任务任务1 输入输入/输出多个学生一门输出多个学生一

4、门课程的成绩课程的成绩4.1.1 4.1.1 一维数组一维数组以下对一维整型数组a的正确定义的是:A、int a(10)B、int n=10, anC、int n;int an;D、#define SIZE 10 scanf(“%d”,%n); int aSIZE;任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.2 4.1.2 一维数组的引用一维数组的引用表示引用数组a中的第2个元素数组名下标表达式;Exampleint n=5,a20; a1 an a3*n表示引用数组a中的第6个元素表示引用数组a中的第16个元素若一个数组长度为若一个数组长度为n n,其,

5、其下标值范围是下标值范围是0 0(n-1)(n-1)C语言规定只能逐个引用数组元素而不能一次引用整个数组。 任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.2 4.1.2 一维数组的引用一维数组的引用输入5个学生的数学成绩,计算平均分,将平均分输出到屏幕上。void main()int i,mathScore5,sum=0;float average;for(i=0;i5;i+)scanf(%d,&mathScorei); for(i=0;i5;i+)sum=sum+mathScorei;average=sum/5.0;printf(%f ,avera

6、ge);数组元素的地址也是通过“&”运算符得到的。任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.2 4.1.2 一维数组一维数组1、上例中,语句average=sum/5.0;修改为average=sum/5;结果如何?2、练习:从键盘输入5个学生的成绩,求出并输出分数最高的学生序号及最高成绩。 。 数组的赋值只能逐个对数组元素赋值,不能直接对数组名赋值。因数组在内存占一片连续的存储空间,可用循环语句处理数组。fori=0;i5;i+) ai=(i1)*100;Examplefori=0;i100;i+) ai=i1;Example任务任务1 输入输

7、入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.2 4.1.2 一维数组的引用一维数组的引用int a5=0,1,2,3,4;int a =0,1,2,3,4;(1在定义数组时,对全部数组元素赋初值此时可以省略数组的长度Example任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.3 4.1.3 一维数组的初始化一维数组的初始化C C语言程序设语言程序设计计任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.3 4.1.3 一维数组的初始化一维数组的初始化(2在定义数组时,对部分数组元素赋初值int a5=1,2,

8、3;系统为其余元素赋系统为其余元素赋0ExampleC C语言程序设语言程序设计计任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.3 4.1.3 一维数组的初始化一维数组的初始化(3当初值的个数多于数组元素的个数时,编译出错int a5=1,2,3,4,5,6,7;Example任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.2 4.1.2 一维数组的引用一维数组的引用例:用初始化方法,把10个学生的数学成绩存储在数组中,再从键盘输入一个考分,查找该分数是否在数组中,如果是,则输出它是第几名学生的成绩。 。void main(

9、) int i,a10=56,65,76,68,92,37,87,51,73,48;int find;printf(请输入要查找的分数:n);scanf(%d,&find);for(i=0;i10;i+)if(ai=find) /*查找到了*/ printf(%d ,i+1);break; 任务任务1 输入输入/输出多个学生一门输出多个学生一门课程的成绩课程的成绩4.1.3 4.1.3 一维数组一维数组练习:一个班50位同学参加了一次C语言程序设计考试,现要输入全班同学的成绩,并按逆序输出。 任务任务2 排序学生成绩排序学生成绩 任务任务1 1中已经输入了中已经输入了5050个同学的成

10、个同学的成绩到数组中,现在需要确定如何对学绩到数组中,现在需要确定如何对学生成绩从低到高进行排序。生成绩从低到高进行排序。 w 两层循环结构w 外层循环每次把操作范围内最大的数放到最后位置w 内层循环每次把较大的数放到靠后的位置715693156739156379153679135679135569_715693175693157693156793156793156739任务任务2 排序学生成绩排序学生成绩w 有数组a,其元素值为7、1、5、6、9、3,现要把该数组按从小到大的顺序排列并输出。 main()int a=7,1,5,6,9,3; int i,j,t; printf(“the so

11、rted nembers:n”); for( i=0; i6; i+) printf(“%5dn”, xi);for( i=0; i6-1; i+) for( j=0; jxj+1) t=xj; xj=xj+1; xj+1=t; 任务任务2 排序学生成绩排序学生成绩任务任务2 排序学生成绩排序学生成绩4.2.1 4.2.1 冒泡法排序冒泡法排序1、上例中,如果要按从大到小的顺序排序,该如何修改程序呢? 2、练习:一个班50位同学参加了一次C语言程序设计考试,现要输入全班同学的成绩,并按从低到高排序并输出。 任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩 一个班上一个班上505

12、0位学生参与考试,考位学生参与考试,考了了3 3门课程,现要求按总成绩的高低门课程,现要求按总成绩的高低输出成绩单。输出成绩单。 如果仅仅使用一维数组进行上述如果仅仅使用一维数组进行上述处理,是很困难的,此时需要使用二处理,是很困难的,此时需要使用二维数组。维数组。x00 x01 x02x00 x01 x02x10 x11 x12x10 x11 x12数据类型 数组名常量表达式1常量表达式2;Examplefloat x23;行列int a3,4, b(3,4);int c , d(3)(4);任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩4.3.1 4.3.1 二维数组二维

13、数组二维数组的定义数组名行下标列下标Exampleint a34;a00=3;a01=a00+10;a34=3;a1,2=1;援用:/* 下标越界 */* a12=1; */任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩4.3.2 4.3.2 二维数组的引用二维数组的引用任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩练习:输入练习:输入5 5个同学三门课程的成绩并个同学三门课程的成绩并输出,计算各门课的总分及平均分,输出,计算各门课的总分及平均分,并输出并输出 。4.3.2 4.3.2 二维数组的引用二维数组的引用(1)分行对二维数组初始化Examplein

14、t a23=1,2,3,4,5,6;初始化后:初始化后: 1 2 3 4 5 6任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩4.3.3 4.3.3 二维数组的初始化二维数组的初始化Exampleint a23=1,2,3,4,5,6;初始化后:初始化后: 1 2 3 4 5 6(2)按数组排列的顺序初始化任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩4.3.3 4.3.3 二维数组的初始化二维数组的初始化任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩4.3.3 4.3.3 二维数组的初始化二维数组的初始化(3)对全部数组元素初始化Exam

15、pleint a 3=1,2,3,4,5,6;初始化后:初始化后: 1 2 3 4 5 6省略行号用二层循环语句处理数组,通常外循环控制行,内循环控制列。Examplefori=0;i3;i+) forj=0;j4;j+) aij=i+j;二维数组的赋值0 1 2 3 2 3 4 3 4 5任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩4.3.3 4.3.3 二维数组的初始化二维数组的初始化二维数组的输入输出Exampleint b34, i, j ; for ( i =0 ; i3 ; i+) for ( j =0 ; j4 ; j+) scanf(“%d”, &b

16、ij) ; for ( i =0 ; i3 ; i+) for ( j =0 ; j4 ; j+) printf(“%5d”, bij ) ;任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩4.3.3 4.3.3 二维数组的初始化二维数组的初始化任务任务3 处理多位学生多门课程的成绩处理多位学生多门课程的成绩练习:用初始化方法,把练习:用初始化方法,把5 5个同学三门个同学三门课程成绩存储在二维数组中,计算每课程成绩存储在二维数组中,计算每位同学的总成绩和平均分,输出总分位同学的总成绩和平均分,输出总分最高的同学的总成绩。最高的同学的总成绩。 4.3.3 4.3.3 二维数组初

17、始化二维数组初始化练习w 下列程序有哪些错误?请解释错误原因。下列程序有哪些错误?请解释错误原因。w (1)w main( )w int x, a10;w for( x=0;x=10;x+ ) w scanf(“%d”,&ax); w w x10练习w 下列程序有哪些错误?请解释错误原因。下列程序有哪些错误?请解释错误原因。w (2)w main( )w int i, j, a4 =1,2,3,4,5,6,7,8;w for( i=0;i4;i+ ) w for( j=0;j2;j+ ) w printf(“%d”,aij); w int a 2=1,2,3,4,5,6,7,8;任务任

18、务4 输入输入/输出学生输出学生 一个班上一个班上50位学生参与考试,需要位学生参与考试,需要输入输入/输出学生的姓名信息。这个任输出学生的姓名信息。这个任务需要解决多个字符的存放问题。务需要解决多个字符的存放问题。任务任务4 输入输入/输出学生输出学生4.4.1 4.4.1 字符数组字符数组char 数组名常量表达式;一维字符数组二维字符数组char 数组名常量表达式1常量表达式2;一维字符数组一维字符数组strExamplechar str10;char s135;二维字符数组二维字符数组s1(1)用字符常数初始化Examplechar c =C,h,i,n,a,0;初始化后:初始化后:一

19、维字符数组的初始化0anihC任务任务4 输入输入/输出学生输出学生4.4.1 4.4.1 字符数组字符数组一维字符数组的初始化任务任务4 输入输入/输出学生输出学生4.4.1 4.4.1 字符数组字符数组Examplechar c =“China”;char c =“China”;初始化后:初始化后:0anihC(2)直接用字符串常量初始化任务任务4 输入输入/输出学生输出学生4.4.1 4.4.1 字符数组字符数组(1)用字符常数初始化Example char Lan58= B,A,S,I,C,0, F,O,R,T,R,A,N,0, P,A,S,C,A,L,0, C,0, J,A,V,A,

20、0 ;二维字符数组的初始化每行存放一个字符串任务任务4 输入输入/输出学生输出学生4.4.1 4.4.1 字符数组字符数组二维字符数组的初始化Examplechar a310=basic,pascal,c;(2)直接用字符串常量初始化0c0lacsap0cisab练习:练习:1 1、给字符数组初始化为、给字符数组初始化为“Happy!”Happy!”,并输出各个数组元素。并输出各个数组元素。 2 2、输出一个钻石图形。如下图。、输出一个钻石图形。如下图。* * * * * * * * * * * * 任务任务4 输入输入/输出学生输出学生4.4.1 4.4.1 字符数组字符数组任务任务4 输入

21、输入/输出学生输出学生4.4.2 4.4.2 字符串字符串字符串是用双引号括起来的若干有效字符序列,字符串是用双引号括起来的若干有效字符序列,字符串可以包括字母、数字、转义字符等,字符串可以包括字母、数字、转义字符等,C语语言中,将字符串作为字符数组来处理。言中,将字符串作为字符数组来处理。 Examplechar str10=Happy ;char s135=“abc”,“def”,“ghi”;任务任务4 输入输入/输出学生输出学生4.4.2 4.4.2 字符串字符串C语言规定了一个语言规定了一个“字符串结束标志字符串结束标志”,以字符,以字符0代表。在处理字符数组的过程中,一旦遇代表。在处

22、理字符数组的过程中,一旦遇到结束符到结束符0,就表示已达到字符串末尾。,就表示已达到字符串末尾。 数组的长度是数组的长度是6,而不是,而不是5。 Examplechar str10=“Happy”;留意:每个字符串末尾都有结束符“0”,它要占1个字节的存储单元 。练习:练习:1 1、分析以下程序,其运行结果是什么?、分析以下程序,其运行结果是什么? void main()void main() char c5= a, b, char c5= a, b, 0, c, 0;0, c, 0;printf(%sn,c);printf(%sn,c); 2 2、有字符串、有字符串“abcAbcDEFDef

23、”abcAbcDEFDef”,把该字符,把该字符串中的小写字母转换为大写字母后输出。串中的小写字母转换为大写字母后输出。 任务任务4 输入输入/输出学生输出学生4.4.2 4.4.2 字符串字符串任务任务4 输入输入/输出学生输出学生4.4.3 4.4.3 字符串输入字符串输入/ /输出输出1.字符数组的元素逐个输入和输出用格式输入输出函数scanf()和printf(),运用“%c格式符,或用字符输入输出函数getchar()和putchar()。每次输入或输出一个字符。for(i=0;i10;i+)scanf(“%c”,&ci);for(i=0;i10;i+)ci=getchar(

24、);注:注:getchar()getchar()和和putchar()putchar()定义定义在标题文件在标题文件“stdio.hstdio.h中,使用中,使用前要用前要用#include #include 把它把它们包含进来们包含进来任务任务4 输入输入/输出学生输出学生4.4.3 4.4.3 字符串输入字符串输入/ /输出输出2.字符数组整体输入和输出用格式输入输出函数 scanf()和 printf(),运用“%s格式符,输入和输出字符串。(1一维字符数组scanf(“%s”, 字符数组名字符数组名);printf (“%s”, 字符数组名字符数组名);Examplechar s110

25、 ;scanf (“%s”, s1 );printf (“%s”, s1 );不用加&任务任务4 输入输入/输出学生输出学生4.4.3 4.4.3 字符串输入字符串输入/ /输出输出2.字符数组整体输入和输出(2二维字符数组 在二维数组中每行存放一个字符串,输入输出时要用行的首地址。 scanf(“%s”,字符数组名行下标);printf(“%s”,字符数组名行下标);Examplechar str310 ;scanf (“%s”, str1 );printf (“%s”, str1 );任务任务4 输入输入/输出学生输出学生4.4.3 4.4.3 字符串输入字符串输入/ /输出输出-

26、 -举例举例main()char ss310 ; int i;for(i=0; i3; i+) scanf(“%s”, ssi);for(i=0; i3; i+) printf(“%s”, ssi);留意:在scanf()和printf的“%s是直接控制字符串的,只要求某个字符串的起始地址作为参数。输入时,scanf()会自动把用户输入的回车符、空格或制表符转换成“0加在字符串的末尾,printf()则在遇到“0就结束输出,但不能自动换行。 main()main() char str14 ; char str14 ; scanf(“%s”,str); scanf(“%s”,str); prin

27、tf(“n%s”,str);printf(“n%s”,str); printf(“string”); printf(“string”); 输入:输入:How are you?How are you?输出:输出:Howareyou?Howareyou?输入:输入:How are you?How are you?输出:输出:HowstringHowstring练习:练习:1 1、输入一行字符串,统计其中大写字、输入一行字符串,统计其中大写字母、小写字母、数字以及其他字符的个母、小写字母、数字以及其他字符的个数。数。任务任务4 输入输入/输出学生输出学生4.4.3 4.4.3 字符串输入字符串输入/

28、 /输出输出任务任务5 任务拓展任务拓展4.5.1 4.5.1 字符串处理函数字符串处理函数 程序中如果调用下面介绍的4个字符串处理函数,在程序的开始应该写预处理命令: #include 在字符串处理函数中,凡是用数组名或字符串首地址作参数的地方,都可以用指针变量作参数。指针变量的概念在第6章介绍。阐明:任务任务5 任务拓展任务拓展4.5.1 4.5.1 字符串处理函数字符串处理函数1.求字符串长度函数strlen()格式:strlen(str)功能:测试字符串长度。函数值就是str中字符的 个数(不包含字符串的结束符“0” )。任务任务5 任务拓展任务拓展4.5.1 4.5.1 字符串处理函数字符串处理函数1.求字符串长度函数strlen()Examplechar str10= China;printf(%d,strlen(str);或或 printf(%d,strlen(China);输出结果:输出结果:5任务任务5 任务拓展任务拓展4.5.1 4.5.1 字符串处理函数字符串处理函

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论