一、do-while 语句
问题:每次测试后狐狸老师总会把成绩输入计算机,进行处理分析。但输入时有时会出错,如当满分为100分时,输入小于0或大于100的数,表示输入有误。试编一程序,输入某一位同学成绩时,自动检查输入数据的正确性,当输入有误时重新输入。
我们用do-while语句来编写这个程序。do-while语句的特点是先执行循环体,然后判断循环条件是否成立。其一般形式为:
do
语句;
while(表达式);
先执行一次循环体,然后判断表达式,当表达式的值为真(非 0)时,返回重新执行循环体语句,如此反复,直到表达式的值为假(0)为止,此时循环结束。它的执行过程如图47.1所示。do-while语句常用于检验输入数据是否正确,以确保程序的正确运行。
上述问题程序的流程图如图:
二、各数位之和
问题:尼克与格莱尔很喜欢玩“加加乐”游戏,游戏规则是一方报出一个数,另一方说出该数的各个数位之和:如尼克说12,格莱尔就说3;尼克说567,格莱尔就说18。
试编一程序,输入一个整数,输出它的各个数位之和。
变量n保存输入的数,sum是累加器用于求各个数位之和,a保存个位上的数字,个位上的数字可用n%10求出。流程图如图:
三、纯小数变整数
问题:试编一程序,输入一个纯小数,把它变成整数后输出(设纯小数的小数位数不超过9)。
由于实数(浮点数)在内存中存放时是用有限的存储单元存储的,能提供的有效数字总是有限的。因此存储时可能会产生一些微小的误差。所以判断两个实数是否相等时,我们不能通过相等运算符(==)进行。而是通过判断两个实数相减后差的绝对值是否小于一个很小的数进行的。函数fabs()可以求浮点数的绝对值,函数abs()可以求整数的绝对值。流观图如图:
四、数学计算
问题:风之巅小学的书香有312个座位,已知第一排有15个座位,以后排增加2个座位,最后一排有几个位?一共有几排?试编一程序算一算。
用变量p表示当前的排数,x表示当前排的座位数,sum表示当前的总座位数。当总座位数不等于312时,排数p+1,每排的座位数x+2,不停循环;当总座位数等于312时,退出循环,输出最后一排的座位数x、排数p。流程图如图