小笨蛋又来求助 了。。。自从学了c,就没觉得自己聪明
c语言吧
全部回复
仅看楼主
level 3
anemptyhouse 楼主

看看那里出了问题啊。无论输入啥都显示无解么。
我是小白自学的。求各位大师指教
#include "stdafx.h"
# include <stdio.h>
# include <windows.h>
# include <math.h>
int main(void)
{
double i;
double j;
double k;
double delta;
double x1;
double x2;
printf("请输入该一元二次方程的二次项系数:\n");
scanf_s("%f", &i);
printf("请输入该一元二次方程的一次项系数:\n");
scanf_s("%f", &j);
printf("请输入该一元二次方程的常数项:\n");
scanf_s("%f", &k); delta = j*j - 4*i*k;
if (delta == 0)
{
x1 = -j / (2*i);
x2 = x1;
printf("这个方程有两个相等的解.x1=x2=%f", x1);
}
else if (delta < 0)
printf("这个一元二次方程无解");
else
{
x1 = (-j + sqrt(delta)) / (2*i);
x2 = (-j - sqrt(delta)) / (2*i);
printf("这个方程有两个不等实数解");
printf("x1=:%f", x1);
printf("x2=:%f", x2);
}
system("pause");
return 0;
}
没有报错,可以运行,就是比较怪异,输入121都是无解
2012年08月11日 16点08分 1
level 3
anemptyhouse 楼主
还想问下scanf和scanf_s的区别是啥啊,为啥我用scanf就warnning呢?多谢了
2012年08月11日 16点08分 2
level 3
anemptyhouse 楼主
我把if那里的==换成了=
更奇怪了,
不管输入什么都是显示有两个相等解并且是-0.5
晕了
2012年08月11日 16点08分 4
delta == 0表示delta等于0,可能为真或假。delta = 0代表把0赋值给delta,一般都会为真,除非赋值不成功。。。你懂的,然后x1 = x2
2012年08月12日 00点08分
level 10
double输入时控制符是%lf
另外可能是精度问题,浮点与0比较时最好设定个精度,比如1e-8
那个scanf_s应该是VS系列出的函数吧,用scanf出警告是因为编译器认为scanf不安全 所以它建议最好用scanf_s
2012年08月11日 16点08分 5
动了,多谢大侠!已经修复。是控制符的问题
2012年08月11日 16点08分
1