题目

1112:C语言考试练习题_一元二次方程

代码

import math

while True:
	try:
		a,b,c=map(float,input().strip().split())
		
		delta = b*b - 4*a*c
		
		x1 = (-b + math.sqrt(delta)) / (2*a)
		x2 = (-b - math.sqrt(delta)) / (2*a)
		
		if x1>=x2:
		    print('{:.2f} {:.2f}'.format(x1,x2))
		else:
		    print('{:.2f} {:.2f}'.format(x2,x1))
	except:
		break

记录

本题在第一次提交代码时,x的计算我写为 (...)/2*a ,但依然提交通过,查阅本题题解才发现这个问题。

此处理应写为 (...)/(2*a)(...)/2/a ,像题解作者所说,这个事情不科学且不合理。

也许与编程语言的一些底层处理有关?希望有大佬可以告知!

参考资料

题解 | C语言考试练习题_一元二次方程