为了账号安全,请及时绑定邮箱和手机立即绑定

C语言代码,不知道哪错了,小白求大神解答一下,谢谢!

C语言代码,不知道哪错了,小白求大神解答一下,谢谢!

C C++
丶辉色灬 2016-10-26 21:08:50
求二元一次方程组的两个不相等的实数根, 采用了 条件语句 分为 是两个不相等的实数根 计算结果并输出  如果不是(两个相等或者没有实数根)输出 此函数没有两个不相等的实数根程序开始运行没有问题,问题在于输入 (例子)1,3,2  输出的结果 并不是正确答案
查看完整描述

2 回答

已采纳
?
望远

TA贡献1017条经验 获得超1032个赞

//运算符优先级的问题
#include<stdio.h> 
#include<math.h> 
#define EPS 1e-1 
int main() 
{ float a, b, c, x1, x2; 
printf("Input a,b,c:"); 
scanf("%f,%f,%f", &a, &b, &c);
 if (b*b>4 * a*c) {
	 x1 = (-b+(float)sqrt(b*b - 4 * a*c))/2*a; 
	 printf("x1=%5.2f\n", x1); 
	 x2 = (-b-(float)sqrt(b*b - 4 * a*c))/2*a; 
	 printf("x2=%5.2f\n", x2); } 
 else {
	 printf("此函数没有两个不相等的实数根\n"); 
	} 
}

运行结果:

//img1.sycdn.imooc.com//5810b36700016b7d03260109.jpg

查看完整回答
3 反对 回复 2016-10-26
  • 丶辉色灬
    丶辉色灬
    。。。。 大神 我按照你的代码输入一遍 然后 同样1,2,-3 出现的却是 x1=107374176.00 x2=0.00
  • 望远
    望远
    我不是大神。。一起学习嘛== x1 = (-b+(float)sqrt(b*b - 4 * a*c))/2*a; x2 = (-b-(float)sqrt(b*b - 4 * a*c))/2*a; 你原来这里没有注意运算符优先级,加上括号后可以正常运算 你的问题应该是输入时没有按照格式输入scanf("%f,%f,%f", &a, &b, &c);一定不能多空格,逗号一定要在英文状态下输入
  • 丶辉色灬
    丶辉色灬
    谢谢了 现在没问题了 开始是运算符的优先级没有注意 改正后 程序没问题 由于系统默认中文输入,导致我在运行程序的时候 输入的是中文逗号。。。。
  • 2 回答
  • 0 关注
  • 1779 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信