5学生成绩的输入输出和处理(循环)

上传人:第*** 文档编号:54451839 上传时间:2018-09-13 格式:PPT 页数:37 大小:1.01MB
返回 下载 相关 举报
5学生成绩的输入输出和处理(循环)_第1页
第1页 / 共37页
5学生成绩的输入输出和处理(循环)_第2页
第2页 / 共37页
5学生成绩的输入输出和处理(循环)_第3页
第3页 / 共37页
5学生成绩的输入输出和处理(循环)_第4页
第4页 / 共37页
5学生成绩的输入输出和处理(循环)_第5页
第5页 / 共37页
点击查看更多>>
资源描述

《5学生成绩的输入输出和处理(循环)》由会员分享,可在线阅读,更多相关《5学生成绩的输入输出和处理(循环)(37页珍藏版)》请在金锄头文库上搜索。

1、C语言程序设计,项目5 多人成绩的输入输出和处理,本章内容要点, while语句及其应用 do-while语句及其应用 for语句及其应用 break和continue语句的应用。,本章任务,在实际编程中,常常会利用循环结构重复执行某些操作。本章要完成的任务是处理一批学生成绩,要求计算出每个学生总分、平均分、最高总分、最低总分,并结合选择结构程序设计,按平均分输出及格人数和不及格人数。,任务分解: 单一科目成绩的输入、输出和处理。 多种科目成绩的输入、输出和处理。,5.1 while语句,While循环语句的一般形式while (表达式)语句;(循环体),语句运行流程图如下:,5.1 whil

2、e语句,例5.1 利用while语句“求123+99+100 ”的和。 main( ) int i, sum=0;i=1;while(i=100)sum=sum+i;i+;printf(“n1+2+3+100=%d“,sum);,运行结果: 1+2+3+100=5050,5.1 while语句,例5.2 输入10个学生的C语言课程考试成绩,求总成绩和平均成绩。 main() int i,score;int sum; float average; /* average存放平均成绩 */printf(“输入%d个学生的C语言课程考试成绩:n“,10);sum=0;i=0;while(i10) sc

3、anf(“%d“,5.1 while语句,average=(float)sum/10; /* 求平均成绩 */ printf(“总成绩为:%dn“,sum); printf(“平均成绩为:%.2f“,average); ,运行结果: 输入10个学生的考试成绩: 82 91 88 70 85 93 67 73 80 77 总成绩为:806 平均成绩为:80.60,习题,P1101.(1)2.(1)(2)3.(1)(2)4.(1),5.2 do-while语句,do-While循环语句的一般形式do 语句(循环体) while (表达式) ;,语句运行流程图如下:,5.2 do-while语句,例

4、5.3 利用do-while语句“求123+99+100 ”的和 main( ) int i, sum=0; i=1;dosum=sum+i;i+; while (i=100);printf(“n1+2+3+100=%d“,sum); ,运行结果: 1+2+3+100=5050,习题,P1101.(3)4.(1),5.3 for语句,for语句的一般形式for (表达式1; 表达式2; 表达式3) 语句(循环体),for语句最简单的应用形式也是最容易理解的形式如下: for(循环变量赋初值;循环条件;循环变量增量)语句(循环体),说明: “表达式1”一般是是一个赋值表达式, 它用来给循环控制变

5、量赋初值; “表达式2”一般是一个关系表达式或逻辑表达式,它决定什么时候退出循环;“表达式3”一般是个算术表达式,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用“;”间隔。,5.3 for语句,如: for(i=1; i100时,结束循环。,5.3 for语句,语句运行流程图如下:,5.3 for语句,例5.4 利用for语句“求123+99+100 ”的和。 main( ) int i,sum; for(i=0,sum=0; i=100; i+)sum=sum+i;printf(“n1+2+3+100=%d“,sum); ,运行结果: 1+2+3+100=5050,5.3 fo

6、r语句,例5.5 输入10个学生的C语言考试成绩,输出其中的最高分和最低分,以及本门课程的总成绩和平均成绩。 #define N 10 main() int i,score;int max,min,sum; /* max和min分别存放最高分和最低分,sum存放总成绩 */float average; /* average存放平均成绩 */printf(“输入%d个学生的考试成绩:n“,N);scanf(“%d“,解决任务一:单一科目成绩的输入、输出和处理。,5.3 for语句,for(i=1;imax) max=score;else if (scoremin) min=score;avera

7、ge=(float)sum/N; /* 求平均成绩 */printf(“最高分为:%dn“,max);printf(“最低分为:%dn“,min);printf(“总成绩为:%dn“,sum);printf(“平均成绩为:%.2f“,average); ,运行结果: 输入10个学生的考试成绩: 82 91 88 70 85 93 67 73 80 77 最高分为:93 最低分为:67 总成绩为:806 平均成绩为:80.60,5.3 for语句,例5.6 检测给定整数是否素数。 main( ) int i, k, flag; scanf(“%d“, ,运行结果: 17 17 is a prim

8、e,习题,P1101.(2)2.(3)(4)4.(1),5.4 goto语句,如:goto loop;,goto语句是一种无条件转移语句,一般形式为:goto 语句标号;,5.4 goto语句,例5.7 利用goto语句“求123+99+100 ”的和。 main() int i,s=0; i=1; label : if (i=100) s=s+i; i+; goto label; printf(“s=%dn“,s );,运行结果: 1+2+3+100=5050,5.4 goto语句,例5.8 利用goto语句跳出循环。 main( ) int i, sum=0;i=1;while(i50)

9、goto label; label:printf(“n1+2+3+50=%d“,sum); ,运行结果: 1+2+3+50=1275,5.5 几种循环控制语句的比较,(1)while语句和for语句是属于先判断循环条件的循环语句,故循环体有可能一次也不执行,属于当型循环结构。 (2)do-while语句是执行完循环体后,再判断循环条件的循环语句,循环体至少执行一次,属于直到型循环结构。 (3)循环体至少执行1次时,四种循环都可用来处理同一问题,可以互相代替。所有循环语句都是在循环条件为真(非0)时才能执行循环体。,5.5 几种循环控制语句的比较,(4)如果循环次数可以在进入循环语句之前确定,使

10、用for语句较好;在循环次数难以确定时使用while和do-while语句较好。 (5)用while和do-while循环时,循环变量初始化的操作应在while和do-while之前完成;而for语句可以在表达式1中实现变量的初始化。 (6)while和do-while循环,只在while后面指定循环条件,在循环体中包含应反复执行的操作语句,包括使循环趋于结束的语句。for循环可以在表达式3中包含使循环趋于结束的操作。,5.6 break语句和continue语句,一、break语句,break语句的一般形式为:break;,说明:其执行过程是:在循环语句中如果执行到break语句,则终止br

11、eak所在循环的执行,循环体中break语句之后的语句也不再执行。通常break语句总是与if语句联用,即满足条件时便跳出循环。,5.6 break语句和continue语句,例5.10 break语句的应用。main()int i,s=0;for (i=1;i5) break;s=s+i;printf(“s=%dn“,s);,运行结果: s=15,5.6 break语句和continue语句,二、continue 语句,contiune语句的一般形式为:continue;,说明:其执行过程是:如果在循环体语句的执行过程中遇到并执行了continue语句,那么系统将跳过循环体中剩余的语句而强制

12、执行下一次循环。与break语句的用法相似,continue语句常与if条件语句一起使用。,5.6 break语句和continue语句,例5.11 把100200之间不能被3和2整除的数输出。main( )int k=0,n=100;while(n=200) n+;if(n%3=0 | n%2=0) continue;printf(“%5d“,n);k+;if(k%5=0) printf(“n“);,运行结果: 101 103 107 109 113 115 119 121 125 127 131 133 137 139 143 145 149 151 155 157 161 163 167

13、 169 173 175 179 181 185 187 191 193 197 199,5.6 break语句和continue语句,说明:break语句与continue语句区别:continue是结束本次循环,进行下一次循环,而不是结束整个循环过程。对单层循环,break语句是结束整个循环,转到循环体外;对于多层循环,则是结束最内层循环。break语句和continue语句只对do-while语句、while语句和for语句构成的循环有控制作用,对goto语句构成的循环无效。,习题,P1101.(4)(5),5.7 循环嵌套,一、 循环嵌套的几种形式 一个循环体内又包含另一个完整的循环结

14、构,称为循环的嵌套。内嵌的循环中还可以再嵌套循环,这就是多层循环。 do-while循环、while循环和for循环等可以互相嵌套,goto语句构成的循环很少使用 循环嵌套的常见形式见书。,5.7 循环嵌套,二、循环嵌套应用举例 例5.12 打印九九乘法表。 main() int i,j;for( i=1;i=9;i+) /*共输出九行*/for( j=1;j=i;j+) /*每行输出i列*/printf(“%d*%d=%-3d“, j, i, j*i );printf(“n“); /*每行的列数输出完后换行*/ ,运行结果: 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3

15、=9 1*4=4 2*4=8 3*4=12 4*4=16 1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36 1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49 1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64 1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81,5.7 循环嵌套,例5.13 分别输入4个学生的高等数学成绩、大学英语成绩和C语言成绩,求每个学生的总成绩和平均成绩。 源程序如下: #define N 4 main() int score,sum; int i,j;printf(“在对应的序号后输入每个学生每门课程的成绩,以回车结束n“);,解决任务二:多种科目成绩的输入、输出和处理。,5.7 循环嵌套,for (i=0;iN;i+)printf(“%10s%10s%10s%10sn“,“学生序号“,“高等数学“,“大学英语“,“C语言“);sum=0;printf(“%8d“,i+1);for (j=0;j3;j+)scanf(“%d“, ,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号