理论教育 方程判断、switch语句、一元二次方程、位数求解

方程判断、switch语句、一元二次方程、位数求解

时间:2023-11-02 理论教育 版权反馈
【摘要】:程序代码如下:例3.9输入x和y,判断x和y是否满足方程y=6x-7。程序代码如下:例3.10的问题也可以使用switch语句来编写。程序代码如下:例3.11求一元二次方程ax2+bx+c=0(a≠0)的根。程序代码如下:例3.13输入一个不多于5位的正整数,编写完成以下两项任务的程序:求出它的位数并输出。

方程判断、switch语句、一元二次方程、位数求解

例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间),来确定该数的位数。可以使用求余数运算%和除法运算/相结合,将输入的正整数的每一位数码分离出来。

程序代码如下:

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈