C语言 排序学生成绩

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组初始化
练习:用初始化方法, 练习:用初始化Hale Waihona Puke Baidu法,把5个同学三门 课程成绩存储在二维数组中, 课程成绩存储在二维数组中,计算每 位同学的总成绩和平均分, 位同学的总成绩和平均分,输出总分 最高的同学的总成绩。 最高的同学的总成绩。
练习
下列程序有哪些错误?请解释错误原因。 下列程序有哪些错误?请解释错误原因。 (1) main( ) { int x, a[10]; ; for( x=0;x<=10;x++ ) x<10 ; ; scanf(“%d”,&a[x]); ; }
{ printf(“the sorted nembers:\n”); t=x[j]; for( i=0; i<6; i++) x[j]=x[j+1]; printf(“%5d\n”, x[i]); x[j+1]=t; } }
任务2 任务 排序学生成绩
4.2.1 冒泡法排序 1、上例中,如果要按从大到小的顺序排 序,该如何修改程序呢? 2、练习:一个班50位同学参加了一次C语 言程序设计考试,现要输入全班同学的 成绩,并按从低到高排序并输出。
4.3.2 二维数组的引用
练习:输入 个同学三门课程的成绩并 练习:输入5个同学三门课程的成绩并 输出,计算各门课的总分及平均分, 输出,计算各门课的总分及平均分, 并输出 。
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
(1)分行对二维数组初始化
Example
int a[2][3]={{1,2,3},{4,5,6}};
int i=5; int a[i]; /*数组长度为变量*/
4.1.1 一维数组
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
以下对一维整型数组a的正确定义的是: A、int a(10) B、int n=10, a[n] C、int n; int a[n]; D、#define SIZE 10 scanf(“%d”,%n); int a[SIZE];
任务3 任务 处理多位学生多门课程的成绩
4.3.1 二维数组
二维数组的定义
数据类型
数组名[常量表达式1][常量表达式2];

Example

float x[2][3];
int x[0][1] x[0][2] ; x[0][0]a[3,4], b(3,4); x[1][0] x[1][1] x[1][2] int c[ ][ ], d(3)(4);
设 计
项目四 语 言 程 序 C C C C
项目要点: 项目要点:
数组的定义和使用 数组的存储结构 数组的输入输出 字符串处理函数
学习目标: 学习目标:
使用数组处理同一类型的大批数据 使用字符数组处理字符串 使用二维数组处理字符串
工作任务导入
工作任务
一个班上50位学生参与考试, 一个班上 位学生参与考试,考了 位学生参与考试 3门课程,现要求按总成绩的高低输出 门课程, 门课程 成绩单
0 1 2
1 2 3
2 3 4
3 4 5
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
二维数组的输入输出
Example
int b[3][4], i, j ; for ( i =0 ; i<3 ; i++) for ( j =0 ; j<4 ; j++) scanf(“%d”, &b[i][j]) ; for ( i =0 ; i<3 ; i++) for ( j =0 ; j<4 ; j++) printf(“%5d”, b[i][j] ) ;
从高到低的顺序全部打 印出来,怎么办?
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
数 组
相同类型数据的 集合。 让一组同一类型 的数据共用一个变 量名,而不需要为 每一个数据都定义 一个名字。
4.1.1 一维数组 一维数组的定义
数据类型
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
表示引用数组a中的第2个元素 表示引用数组a中的第6个元素 表示引用数组a中的第16个元素
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.2 一维数组的引用
输入5个学生的数学成绩,计算平均分,将平均分 输出到屏幕上。 数组元素的地址也 void main() 是通过“&”运算符 得到的。 { int i,mathScore[5],sum=0;float average; for(i=0;i<5;i++) { scanf("%d",&mathScore[i]); } for(i=0;i<5;i++) { sum=sum+mathScore[i]; } average=sum/5.0; printf("%f ",average); }
任务3 任务 处理多位学生多门课程的成绩
一个班上50位学生参与考试, 一个班上50位学生参与考试,考 50位学生参与考试 门课程, 了3门课程,现要求按总成绩的高低 输出成绩单。 输出成绩单。 如果仅仅使用一维数组进行上述 处理,是很困难的,此时需要使用二 处理,是很困难的,此时需要使用二 维数组。 维数组。
设 计
语 言 程 序
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.3 一维数组的初始化
(1)在定义数组时,对全部数组元素赋初值 此时可以省略数组的长度
Example
C C C C
int a[5]={0,1,2,3,4}; int a[ ]={0,1,2,3,4};
练习
下列程序有哪些错误?请解释错误原因。 下列程序有哪些错误?请解释错误原因。 (2) ) main( ) { int i, j, a[4][ ]=1,2,3,4,5,6,7,8; ; for( i=0;i<4;i++ ) ; ; for( j=0;j<2;j++ ) ; ; printf(“%d”,a[i][j]); ; } int a[ ][2]={1,2,3,4,5,6,7,8};
数组名[常量表达式];
数组元素 的数据类型
遵循C语言 标识符规则
例如: a[5]; 例如:int a[5]
数组长度 几个数组元素
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.1 一维数组 说明: 常量表达式表示元素的个数,即数组 长度。 常量表达式中可以包括常量和符合常 量,不能包含变量。
(3)对全部数组元素初始化
Example
int a[ ][3]={1,2,3,4,5,6};
初始化后: 1 4 2 5 3 6
省略行号
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
二维数组的赋值 用二层循环语句处理数组, 通常外循环控制行, 内循环控制列。
Example
for(i=0;i<3;i++) ( ; ) for(j=0;j<4;j++) ( ; ) a[i][j]=i+j; ;
4.1.3 一维数组的初始化
(3)当初值的个数多于数组元素的个数时, 编译出错
Example
int a[5]={1,2,3,4,5,6,7};
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.2 一维数组的引用
例:用初始化方法,把10个学生的数学成绩存储在数组 中,再从键盘输入一个考分,查找该分数是否在数组中, 如果是,则输出它是第几名学生的成绩。 。 void main() { int i,a[10]={56,65,76,68,92,37,87,51,73,48}; int find; printf("请输入要查找的分数:\n"); scanf("%d",&find); for(i=0;i<10;i++) { if(a[i]==find) /*查找到了*/ { printf("%d ",i+1);break; } } }
任务2 任务 排序学生成绩
7 1 5 6 9 3 7 1 5 6 9 3 1 5 6 7 3 9 1 7 5 6 9 3 1 5 6 3 7 9 1 5 7 6 9 3 1 5 3 6 7 9 1 5 6 7 9 3 1 3 5 6 7 9 1 5 6 7 9 3 1 3 5 5 6 9 1 5 6 7 3 9
引导问题
1、课程的成绩如何存储 、 2、学生信息如何存储 、 3、如何对成绩进行排序? 、如何对成绩进行排序?
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
计算50个学生成绩的平均分 main() { int i, x, s=0; for( i=0; i<50; i++) {scanf(“%d”,&x); s+=x; } printf(“%f\n”, s/50.0); } 只用了三个变量就 解决了问题,但数 如果需要把成绩按 据没有保存。
4.1.2 一维数组的引用
数组的赋值只能逐个对数组元素赋值,不能直接对数组名赋值。 因数组在内存占一片连续的存储空间,可用循环语句处理数组。
Example
Example
for(i=0;i<5;i++) ( ; ; ) a[i]=(i+1)*100; + ;
for(i=0;i<100;i++) ( ; ; ) a[i]=i+1; + ;
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.2 一维数组的引用
C语言规定只能逐个引用数组元素而不能一次引 用整个数组。
数组名[下标表达式];
Example
int n=5,a[20]; a[1] a[n] a[3*n]
若一个数组长度为n 若一个数组长度为n,其 下标值范围是0 (n下标值范围是0~(n-1)
初始化后: 1 4 2 5 3 6
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
(2)按数组排列的顺序初始化
Example
int a[2][3]={1,2,3,4,5,6};
初始化后: 1 4 2 5 3 6
任务3 任务 处理多位学生多门课程的成绩
4.3.3 二维数组的初始化
设 计
语 言 程 序
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.3 一维数组的初始化
(2)在定义数组时,对部分数组元素赋初值
Example
C C C C
int a[5]={1,2,3}; 系统为其余元素赋0 系统为其余元素赋
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
两层循环结构 – 外层循环每次 把操作范围内 最大的数放到 最后位置 – 内层循环每次 把较大的数放 到靠后的位置
任务2 任务 排序学生成绩
有数组a,其元素值为7、1、5、6、9、3,现 要把该数组按从小到大的顺序排列并输出。
for( i=0; i<6-1; i++) main() {int a[]={7,1,5,6,9,3}; int i,j,t; for( j=0; j<6-1-i; j++) if(x[j]>x[j+1])
任务3 任务 处理多位学生多门课程的成绩
4.3.2 二维数组的引用 引用:
Example
数组名[行下标][列下标]
int a[3][4]; a[0][0]=3; a[0][1]=a[0][0]+10;
a[3][4]=3; /* 下标越界 */ a[1,2]=1; /* a[1][2]=1; */
任务3 任务 处理多位学生多门课程的成绩
4.1.2 一维数组
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
1、上例中,语句 average=sum/5.0; 修改为 average=sum/5; 结果如何? 2、练习:从键盘输入5个学生的成绩,求出并 输出分数最高的学生序号及最高成绩。 。
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
4.1.3 一维数组
任务1 输入/输出多个学生一门 任务 输入 输出多个学生一门 课程的成绩
练习:一个班50位同学参加了一次C语言 程序设计考试,现要输入全班同学的成 绩,并按逆序输出。
任务2 任务 排序学生成绩
任务1中已经输入了50个同学的成 任务1中已经输入了50个同学的成 50 绩到数组中,现在需要确定如何对学 绩到数组中, 生成绩从低到高进行排序。 生成绩从低到高进行排序。
相关文档
最新文档