C语言程序设计案例精粹
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

实训4.1——输出及格率

教学录像 光盘\chap4\实训4.1——输出及格率

某班有x名学生,某次数学考试共有y名学生不及格,求该班本次数学考试的及格率,并以百分数形式打印在屏幕上,xy由键盘输入。总共x名学生且有y名学生不及格时,及格率为:

及格率=(x-y)/ x

1. 需求分析

分析目标需求,程序中需要做到如下几条。

需求1:键盘输入xy的值。

需求2:计算及格率。

需求3:屏幕打印。

2. 技术应用

根据C语言标准以及开发平台版本,完善各个需求模块。

对于需求1,使用标准输入函数scanf,且定义xy为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值。