实训4.1——输出及格率
教学录像 光盘\chap4\实训4.1——输出及格率
某班有x名学生,某次数学考试共有y名学生不及格,求该班本次数学考试的及格率,并以百分数形式打印在屏幕上,x和y由键盘输入。总共x名学生且有y名学生不及格时,及格率为:
及格率=(x-y)/ x。
1. 需求分析
分析目标需求,程序中需要做到如下几条。
需求1:键盘输入x和y的值。
需求2:计算及格率。
需求3:屏幕打印。
2. 技术应用
根据C语言标准以及开发平台版本,完善各个需求模块。
对于需求1,使用标准输入函数scanf,且定义x和y为float型。
对于需求2,定义float型变量ratio,用于存储计算的及格率。
对于需求3,注意使用百分率形式输出时,%的打印格式为%%。
通过上述分析,写出完整的程序如下。
程序清单4.1:CalculatePassRatio.c
01 #include<stdio.h> 02 main() 03 { 04 float x=0; 05 float y=0; 06 float ratio=0; 07 printf("请输入年级总人数:\nx="); 08 scanf("%f", &x); //输入x的值 09 printf("请输入未及格人数:\ny="); 10 scanf("%f", &y); //输入y的值 11 printf("开始计算及格率\n"); 12 ratio=(x<y)? (-1): (x-y)/x; //计算百分率 13 printf("及格率为:\n"); 14 printf("ratio=%%%.2f\n", ratio*100); //百分制输出结果 15 }
程序第12行使用条件运算符计算及格率数值。运行程序时,键盘输入数字52和14,然后按回车键。
请输入年级总人数:
x= 52
请输入未及格人数:
y=14
输出结果为:
开始计算及格率
及格率为:
ratio = %73.08
程序第8行使用scanf函数输入x的值,有关scanf函数的应用将在本章后续章节作详细介绍。程序第12行用以计算百分率,为避免出现误操作,程序使用条件运算符判断输入是否有误,若输入x小于y,则输出-1,否则按照正常规则计算。程序第14行以百分制输出结果,因为%字符为特殊控制字符,因此需要使用%%格式来输出该字符,同时需要输出结果数值,因此仍然需要以%.2f格式输出结果,有关%.2f格式的输出将在下节作详细介绍。此外,由于计算结果为小数形式,因此输出时需要放大100倍转化为百分制形式。
随·堂·实·训4.1
使用上述方法以字符串形式输出表达式1003%26以及1003/26,以\隔开这两个表达式,并输出这两个表达式的值。例如,计算表达式17%3,则输出:
17%3 = 2 \ 17/3 = 5
提示:
(1)对%的输出应使用%%格式。
(2)对\的输出应使用\\格式。
作者心得:
实训4.1原程序并不完善,当x值为0时,由于程序第12行中存在除法,并且x为除数,因此程序运行时将出现崩溃。为避免程序崩溃,读者在输入数值时应避免输入0值。