例3.8 输入3个字符存放在变量a、b、c中,然后经过交换变量a、b、c的值,使a、b、c中存放的字符按ASCII码值从大到小排序,最后输出从大到小排序的3个字符。
【分析】可先让变量a与b、c比较,比较之后通过交换将ASCII码值最大的字符放在变量a中。最后,让b和c两个变量比较,通过交换将ASCII码值大的字符放在变量b中。
程序代码如下:
例3.9 输入x和y,判断x和y是否满足方程y=6x-7。
【分析】当判断两个实数a和b是否相等时,由于实数存在误差,因此不能直接用等式(a==b)来判断,可以用“fabs(a-b)<=1e-6”来判断。其中,数学函数fabs(a-b)是取a-b的绝对值,1e-6(即10-6)是一个接近0的数,若“fabs(a-b)<=1e-6”成立,则认为a和b相等。
同样,判断x和y是否满足方程y=6x-7就是判断实数y和6*x-7是否相等。应该用“fabs(y-(6*x-7))<=1e-6”来判断。若“fabs(y-(6*x-7))<=1e-6”成立,则认为“(y==6*x-7)”成立,认为满足方程y=6x-7,否则不满足。
当需要使用fabs之类的数学函数时,需要到数学函数库中调用它们,所以在程序的开头必须加上“#include<math.h>”,把math.h文件包含到本程序中来。
程序代码如下:
例3.10 输入一个百分制成绩,输出用英文字母表示的等级制成绩。规则:若百分制成绩大于或等于90分,则等级制成绩为A;若百分制成绩小于90分但大于或等于80分,则等级制成绩为B;若百分制成绩小于80分但大于或等于70分,则等级制成绩为C;若百分制成绩小于70分但大于或等于60分,则等级制成绩为D;若百分制成绩小于60分,则等级制成绩为E。
【分析】本题可以用if语句实现。由于题中将百分制成绩分为5个等级,所以构建4个表达式就可以了。
程序代码如下:
例3.10的问题也可以使用switch语句来编写。程序代码如下:
例3.11 求一元二次方程ax2+bx+c=0(a≠0)的根。
【分析】一元二次方程ax2+bx+c=0(a≠0)求根有以下3种情况:(www.daowen.com)
(1)b2-4ac=0,有两个相等的实根。
(2)b2-4ac>0,有两个不相等的实根。
(3)b2-4ac<0,有两个共轭复根。
程序中的函数sqrt是求平方根函数,它是一个数学函数,需要从math.h库中调用它,所以在程序的开头必须加上“#include<math.h>”。
程序代码如下:
例3.12 请输入算术运算符号+、-、*、/中的某一种,再输入两个整数分别存放变量a、b中。在屏幕上输出a+b或a-b或a*b或a/b的值。当作a/b运算时,由于b不能为0,因此若b为0,就要给出提示信息。
【分析】可以使用switch语句编写,对于其中的a/b运算,嵌套一个if语句即可。
程序代码如下:
例3.13 输入一个不多于5位的正整数,编写完成以下两项任务的程序:
(1)求出它的位数并输出。
(2)按逆序输出它的每位数码。例如,输入“12345”,输出“12345是5位数,逆序输出为54321。”。
【分析】输入最大数为99999(5位),最小数位1(1位)。可以根据输入的正整数的范围(1位在1~9间,2位在10~99间,3位在100~999间,4位在1000~9999间,5位在10000~99999间),来确定该数的位数。可以使用求余数运算%和除法运算/相结合,将输入的正整数的每一位数码分离出来。
程序代码如下:
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。