项目三 学生成绩分等级及分组汇总
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
S1
(a)顺序结构
(b)选择结构
(c)循环结构
图3.1 三种基本控制结构流程图
任务1 寻找最大值与最小值
3.1.1 三种基本控制结构
结构化程序设计 基本思想:任何程序都可以用三种基本结构 表示, 结构化程序:由三种基本结构反复嵌套构成 的程序。 优点:结构清晰,易读,提高程序设计质量 和效率。
3.2.2 switch语句(带 break语句)
练习
编程:运输公司对用户计算运费。路程(s)越远, 每公里运费越低。标准如下: s<=250 没有折扣 250<=s<500 2%折扣 500<=s<1000 5%折扣 1000<=s<2000 8%折扣 2000<=s<3000 10%折扣 s>=3000 15%折扣 设每公里每吨货物的基本运费为p,货物重为w,距 离为s,折扣为d,则总运费的计算公式为: f=p*w*s*(1-d)
表达式1
N
表达式 2?
表达式3
Y
语句
任务3 统计一组学生的总分及平均分
问题3.10 用for语句计算
s=1+2+3+……+99+100 void main( ) { int n,s=0; for(n=1;n<=100;n++) 从0开始,输出n个连续的偶 数 void main( ) { int a=0,n;
!= 0
表达式
=0
语句1
语句2
任务1 寻找最大值与最小值
3.1.2 if语句 形式3:
if(表达式1)语句1; else if(表达式2)语句2; else if(表达式3)语句3; 表达式1 ………… !=0 else 语句n;
=0 表达式2 !=0 =0 表达式3 !=0 =0
语句1
语句2
3.2.1 switch语句 (不带break语句)
任务2 将学生成绩分等级
void main( ) { int a; printf("input integer number: "); 一般形式为: scanf("%d",&a); switch (a) switch(表达式) { case 1:printf("Monday\n");break; { case 常量表达式1: 语句1;break; case 2:printf("Tuesday\n"); break; case 常量表达式2: 语句2;break; case 3:printf("Wednesday\n");break; case 4:printf("Thursday\n");break; … case 5:printf("Friday\n");break; case 常量表达式n: 语句n; break; case 6:printf("Saturday\n");break; [default : 语句n+1; [break;]] case 7:printf("Sunday\n");break; } default:printf("error\n"); } }
printf("\n input n: ");
scanf("%d",&n); for(;n>0;a++,n--) printf("%d ",a*2); }
s=s+n;
printf("s=%d\n",s); }
练习
1、编程:从0开始,输出n个连续的偶数。
任务3 统计一组学生的总分及平均分
for语句使用注意事项
①for语句中的各表达式都可省略,但分号间隔符不能少。 如:for(;表达式;表达式)省去了表达式1。 for(表达式;;表达式)省去了表达式2。 for(表达式;表达式;)省去了表达式3。 for(;;)省去了全部表达式。 ②在循环变量已赋初值时,可省去表达式1,如例3.11 即属于这种情形。 ③如省去表达式2或表达式3则将造成无限循环, 这时应 在循环体内设法结束循环
项目三 学生成绩分等级及分 组汇总
项目要点:
if表达式 switch表达式 for循环语句 break及continue语句
学习目标:
if语句及条件运算符的使用方法 三种循环语句的使用 break及continue语句的使用方法
工作任务导入
工作任务
一个小组有成员若干人,数学期末考试成绩 出来了,要求寻找最高分和最低分,并对每个学 生的成绩进行等级评定,最后统计这一组学生的 成绩总分及平均分
任务1 寻找最大值与最小值
3.1.4 条件运算符和条件表达式
条件运算符: ? : 三目运算符 条件表达式:由条件运算符组成条件表达式 表达式1 ?表达式2 : 表达式3 条件运算符不能分开单独使用,?:配套使用 例如:if(a>b) max=a; else max=b; 可用条件表达式写为 max=(a>b)?a:b; max=a>b?a:b;
引导问题
1、学生成绩如何比较,如何设置最大值与最小值 2、成绩等级如可评定 3、各种循环语句有何区别,该如何选择使用 4、break及continue语句是如何实现转移控制的
任务1 寻找最大值与最小值
3.1.1 三种基本控制结构
三种基本结构:顺序结构、分支结构、循环结构
S1 条 件 S2 S1 S2 条件
编程:输入一个字符,判别它是否为大写字母,如果是,将转 换成小写字母,如果不是,则不转换,然后输出得到的字符。
main( ) { char ch , c; scanf(“%c” , &ch) ; if(ch>=’A‟&&ch<=’Z‟)
c=ch+32; else c=ch ; printf(" %c” , c); } 条件语句部分用下面的条件表达式来代替:
任务3 统计一组学生的总分及平均分
3.3.1 for语句的一般形式为:
for(表达式1;表达式2;表达3) 语句;
表达式1: 通常用来给循环变量 赋初值,一般是赋值表达式,也允 许在for语句外给循环变量赋初值 ,此时可以省略该表达式。 表达式2: 通常是循环条件,一 般为关系表达式或逻辑表达式。 表达式3: 通常可用来修改循环 变量的值,一般是赋值语句。 语句: 为循环体语句。
任务1 寻找最大值与最小值
3.1.2 if语句
main() {int a=2,b=3,c=4; if(a=b) c=a; printf(“%d”,c); }
3
任务1 寻找最大值与最小值
3.1.2 if语句 形式2:if(表达式)语句1;else 语句2;
例3.2 输入两个整数,输出其中的较
大数。 main( ) { int a,b; printf("input two numbers: "); scanf("%d%d",&a,&b); if(a>b) printf("max=%d\n",a); else printf("max=%d\n",b); }
任务1 寻找最大值与最小值
3.1.2 if语句
形式1: if(表达式)语句;
输入两个整数,输出其中的较大数 void main( ) {int a,b,max; printf(“\n input two numbers:”); scanf("%d%d",&a,&b); max=a; if(max<b)max=b; printf("max=%d",max); } 表达式 !=0 语句 =0
任务2 将学生成绩分等级
3.2.3 switch语句使用注意事项
(1) 在每个case后的各常量表达式的值应互不能相同,否则会出现错误。
(2) 在每个case后允许有多个语句,可以不用{ }括起来。 (3) 许多个case共用一个语句序列。
(4) 如果每个case中都有break语句,那么case和default出现的次序不会影
3OK97
任务1 寻找最大值与最小值
3.1.3 if语句使用注意事项
②在if语句中,条件判断表达式必须用括号括起, 在语句之后必须加分号 。 ③在if语句的三种形式中,所有的语句应为单个 语句,如果要想在满足条件时执行一组(多个)语 句,则必须把这一组语句用{ }括起来组成一个 复合语句。但要注意的是在}之后不能再加分号。 例如: if(a>b){a++;b++;} else{ a=0;b=10;}
任务1 寻找最大值与最小值
3.1.2 if语句
练习:输入一个年份,判断是否为闰年, 是闰年输出为“×× is a leap year!”, 否则输出为“×× isn’t a leap year!”。 。
任务1 寻找最大值与最小值
3.1.3 if语句使用注意事项
注意: ①在三种形式的if语句中,在if关键字之后均为表 达式。该表达式通常是逻辑表达式或关系表达式, 但也可以是其它表达式,如赋值表达式等,甚至也 可以是一个变量。 main() { int a=2,b=3; if(a=b) printf(“%d”,a); if(3) printf(“OK”); if(‘a‟) printf(“%d”, „a‟);
语句3
语句n
任务1 寻找最大值与最小值
3.Fra Baidu bibliotek.2 if语句
void main( ) { char c; printf(“input a character: ”); c=getchar( ); if(c<32) printf(“This is a control character\n”); else if(c>=„0‟&&c<=„9‟) printf(“This is a digit\n”); else if(c>=„A‟&&c<=„Z‟) printf(“This is a capital letter\n”); else if(c>=„a‟&&c<=„z‟) printf(“This is a small letter\n”); else printf("This is an other character\n"); }
练习
1、编程:用户输入运算数和四则运算符,输出计 算结果。
2、本任务对某位同学的一次考试成绩进行百分 制评分,共分A、B、C、D、E五个等级,90分以 上为‘A‟,80~89分为‘B‟,70~79分为‘C‟、 60~69分为‘D‟,60分以下为‘E‟。
任务3 统计一组学生的总分及平均分
数学期末考试成绩出来了,一个小组有 成员10人,要求计算这一组的成绩总分与 平均分,并按要求输出。
练习
小组成员3人参与数学期末考试,要 求寻找最高分和最低分。
任务2 将学生成绩分等级
教师对全班同学的一次考试成绩进 行百分制评分,输出对应的等级分。共 分A、B、C、D、E五个等级。90分以上为 A,81-89分为B,70-79分为C,60-69分 为D,60分以下为E。 。
任务2 将学生成绩分等级
c = ch>=’A‟&&ch<=’Z‟? ch+32: ch
实例1、从键盘上输入一个数,如果不是0, 则判断其正负和奇偶。 实例2、从键盘上输入一个字符,判断输 出是数字字符、大写字符、小写字符还 是其他字符。
实例3、数学分支函数,输入x,输出y 的值。
1 / x x 0 y 0 x 0 1 / 2 x x 0
例3.7 从键盘输入一个数字,则输出 一个英文单词。 void main( ) { int a; printf("input integer number: "); 一般形式为: scanf("%d",&a); switch (a) switch(表达式) { case 1:printf("Monday\n"); { case 常量表达式1: 语句1; case 2:printf("Tuesday\n"); case 3:printf("Wednesday\n"); case 常量表达式2: 语句2; case 4:printf("Thursday\n"); …... case 5:printf("Friday\n"); case 6:printf("Saturday\n"); case 常量表达式n: 语句n; case 7:printf("Sunday\n"); [default : 语句n+1;] default:printf("error\n"); } } }
响程序的运行结果。 (5) default子句可以省略不用。
(6) 字符常数出现在case中,它们会自动转换成整型。
(7) switch可以嵌套使用,要求内层的switch必须完全包含在外层的某个 case中,内、外层switch的case中含有相同的常数,不会引起误会。 (8) switch语句只能进行相等性检查,而if不但可进行相等性检查,还可 以计算关系或逻辑表达式。因此switch语句不能完全替代if语句。