C、Java、Python语言一元二次方程终结版

最近正在复习C语言,感觉一元二次方程这个程序在C语言里还是很有代表性的,所以总结一下:
在流程控制当中,for循环与while循环的用法完全等价,至于到底用谁,完全靠感觉,而do…while这个循环基本上很少用,主要用于人机交互,接下来用一元二次方程为例:
实例程序:

# include <stdio.h>
# include <math.h>

int main(void)
{
    double a,b,c;
	double delta;
    double x1,x2;
	char ch;
	
    do
	{
		printf("请从键盘上输入a,b,c的数值:\n");
		scanf("%lf %lf %lf",&a,&b,&c);  
		delta = b*b - 4*a*c;
		
		if (delta > 0)
		{
			x1 = (-b + sqrt(delta))/(2*a);
			x2 = (-b - sqrt(delta))/(2*a);
			printf("x1与x2的数值是:%lf   %lf\n",x1,x2);
		}
		else	if (delta == 0)
		{
			x1 = (-b + sqrt(delta))/(2*a);
			x2 = x1;
			printf("x1与x2的数值是:%lf   %lf\n",x1,x2);
		}
		else 
			printf("x1与x2的数值无解!\n");
		
		printf("您还想继续吗?继续请输入Y or y : \n");
		scanf(" %c",&ch); //注意:%c前面有空格
		
	}while( ch=='Y' || ch == 'y');
		
	return 0;
}

运行结果:
这里写图片描述
当然,我们也可以用函数进行模块化:
实例程序:

# include <stdio.h>
# include <math.h>

void compute(double a, double b, double delta)
{
	double x1;
	double x2;
	if ( b > 0 )
	{
		x1 = (-b + sqrt(delta))/2*a;
		x2 = (-b - sqrt(delta))/2*a;
		printf("x1的数值是:%lf ,x2的数值是:%lf",x1,x2);
	}
	else if ( b == 0)
	{
		x1 = (-b + sqrt(delta))/2*a;
		x2 = x1;
		printf("x1的数值是:%lf ,x2的数值是:%lf",x1,x2);
	}
	if ( b < 0)
	{
		printf("x1与x2的数值为空值!");
	}
}
int main()
{
    double a,b,c;
	double delta;
	
	printf("从键盘上输入相应的数值:\n");
	scanf("%lf %lf %lf",&a,&b,&c);
	delta = b*b - 4*a*c;
    
	compute(a, b, delta);
	
	return 0;
}

运行结果:
这里写图片描述
如果用Java语言的话,我们可以这么写:

import java.util.Scanner;




public class App1 //在Java当中函数的基本单位是类
{
     public static void main(String[] args)
     {
        @SuppressWarnings("resource")
		Scanner scanner = new Scanner(System.in);
        double a = scanner.nextDouble();
        double b = scanner.nextDouble();
        double c = scanner.nextDouble();
        double delta;
        delta = b*b - 4*a*c;
        
        compute(a, b, delta);
     }
	public static void compute(double a, double b, double delta)
	{
		double x1;
		double x2;
		if ( b > 0 )
        {
        	x1 = (-b + Math.sqrt(delta))/2*a;
        	x2 = (-b - Math.sqrt(delta))/2*a;
        	System.out.println("x1的数值是:"+x1+"\t"+"x2的数值是:"+"\t"+x2);
        }
        else if ( b == 0)
        {
        	x1 = (-b + Math.sqrt(delta))/2*a;
        	x2 = x1;
        	System.out.println("x1的数值是:"+x1+"\t"+"x2的数值是:"+"\t"+x2);
        }
        if ( b < 0)
        {
            System.out.println("x1与x2的数值为空值!");
        }
	}
}

运行结果:

1 5 6
x1的数值是:-2.0	x2的数值是:	-3.0

python版本:

#!/usr/bin/python
# -*- coding:utf-8 -*-

"""
python实现一元二次方程.
"""

import cmath


def compute_func(a,b,c,delta):
    """
    :param a:
    :param b:
    :param c:
    :param delta:
    :return: 返回相应的运算结果.
    """
    x1,x2 = '无解','无解'

    if delta > 0:
        x1 = (-b + cmath.sqrt(delta)) / 2*a
        x2 = (-b - cmath.sqrt(delta)) / 2*a
    elif delta == 0:
        x1 = x2 = (-b) / 2*a
    else:
        pass

    return x1,x2



print("请从键盘上输入ax2+bx+c=0相应的参数数值:")
a = float(input("请输入参数a的数值:"))
b = float(input("请输入参数b的数值:"))
c = float(input("请输入参数c的数值:"))

delta = b*b - 4*a*c;

x1,x2 = compute_func(a,b,c,delta)
print(x1,x2)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只懒得睁眼的猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值