编写程序,求一元二次方程ax2+bx+c=0的根(保留2位小数)。系数a、b、c为浮点数,其值在运行时由键盘输入
【运行结果】(运行6次,□表示空格,↙表示回车)
输入一元二次方程的系数a, b, c: 0□0□0↙
方程无穷解!
输入一元二次方程的系数a, b, c: 0□0□1↙
方程无解!
输入一元二次方程的系数a, b, c: 0□2□1↙
方程有一个根: x=-0.50
输入一元二次方程的系数a, b, c: 1□2□1↙
方程有两个相同实根: x1=x2=-1.00
输入一元二次方程的系数a, b, c: 2.1□8.9□3.5↙
方程有两个不同实根: x1=-0.44□x2=-3.80
输入一元二次方程的系数a, b, c: 2□2□1↙
方程有两个不同虚根: x1=-0.50+0.50i□x2=-0.50-0.50i
我写的程序是:
#include<stdio.h>
#include<math.h>
int main (void){
double a, b, c, d;
d=b*b-4*a*c;
printf("输入一元二次方程的系数a, b, c: ");
scanf("%lf %lf %lf",&a,&b,&c);
if(a==0&&b==0&&c==0)
printf("方程无穷解!\n");
else if(a==0&&b==0&&c!=0)
printf("方程无解!\n");
else if(a==0&&b!=0&&c!=0)
printf("方程有一个根: x=%.2f\n",-c/b);
else if(a!=0&&d==0)
printf("方程有两个相同实根: x1=x2=%.2f\n",-b/(2*a));
else if(a!=0&&d>0)
printf("方程有两个不同实根:x1=%.2f x2=%.2f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
else if(a!=0&&d<0)
printf("方程有两个不同虚根:x1=%.2f x2=%.2f\n",(-b+sqrt(-d)*i)/(2*a),(-b-sqrt(-d)*i)/(2*a)
return 0;
}
求问哪里错了T^T 展开
首先是d=b*b-4*a*c;要放在输入后面!
printf("方程有两个不同虚根:x1=%.2f x2=%.2f\n",(-b+sqrt(-d)*i)/(2*a),(-b-sqrt(-d)*i)/(2*a);
感觉这个会出错,输出结果:“方程有两个不同虚根:x1=··· x2=···”应该不会有i,i会变成未定义
应该改成prinf("方程有两个不同虚根:x1:%.2f+%.2fi x2:%.2f+%.2fi",
-b/(2*a),sqrt(-d)/(2*a),b/(2*a),-sqrt(-d)/(2*a));需要加括号的加上
以下为代码:
#include
#include
int main (void){
double a, b, c, d;
printf("输入一元二次方程的系数a, b, c: ");
scanf("%lf %lf %lf",&a,&b,&c);
\x09d=b*b-4*a*c;
if(a==0&&b==0&&c==0)
printf("方程无穷解!\n");
else if(a==0&&b==0&&c!=0)
printf("方程无解!\n");
else if(a==0&&b!=0&&c!=0)
printf("方程有一个根: x=%.2f\n",-c/b);
else if(a!=0&&d==0)
printf("方程有两个相同实根: x1=x2=%.2f\n",-b/(2*a));
else if(a!=0&&d>0)
printf("方程有两个不同实根:x1=%.2f x2=%.2f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
else if(a!=0&&d<0)
\x09\x09printf("方程有两个不同虚根 x1:%.2f+%.2fi x2:%.2f+%.2fi",-b/(2*a),(sqrt(
d))/(2*a),b/(2*a),(-sqrt(-d))/(2*a));\x09\x09
\x09return 0;
}
扩展资料:
编译 & 执行 C++ 程序方法:
1、打开vs2010,选择"visual c++开发设置",然后点击"启动Visual Studio"。
2、"Visual Studio"选择默认环境设置。
3、进入"Visual Studio"后点击新建项目。
4、在弹出窗口选择 Visual C++标签下的空项目,输入名称以及保存位置。
5、在左侧的"解决方案资源管理器"中,选择"源文件"右击,然后选择"添加"->"新建项"。
6、在弹出窗口中,选择"C++文件(.cpp)",输入文件名称,单击"添加"。
7、现在输入具体的代码,例如输入简单的Hello World程序。
8、依次单击"调试"->"开始执行(不调试)"或按Ctrl+F5开始运行。
printf("方程有两个不同虚根:x1=%.2f x2=%.2f\n",(-b+sqrt(-d)*i)/(2*a),(-b-sqrt(-d)*i)/(2*a);
感觉这个会出错,输出结果:“方程有两个不同虚根:x1=··· x2=···”应该不会有i,i会变成未定义
试试这样prinf("方程有两个不同虚根: x1:%.2f+%.2fi x2:%.2f+%.2fi",
-b/(2*a),sqrt(-d)/(2*a),b/(2*a),-sqrt(-d)/(2*a));需要加括号的加上
#include
#include
int main (void){
double a, b, c, d;
printf("输入一元二次方程的系数a, b, c: ");
scanf("%lf %lf %lf",&a,&b,&c);
d=b*b-4*a*c;
if(a==0&&b==0&&c==0)
printf("方程无穷解!\n");
else if(a==0&&b==0&&c!=0)
printf("方程无解!\n");
else if(a==0&&b!=0&&c!=0)
printf("方程有一个根: x=%.2f\n",-c/b);
else if(a!=0&&d==0)
printf("方程有两个相同实根: x1=x2=%.2f\n",-b/(2*a));
else if(a!=0&&d>0)
printf("方程有两个不同实根:x1=%.2f x2=%.2f\n",(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a));
else if(a!=0&&d<0)
printf("方程有两个不同虚根 x1:%.2f+%.2fi x2:%.2f+%.2fi",-b/(2*a),(sqrt(-d))/(2*a),b/(2*a),(-sqrt(-d))/(2*a));
return 0;
}
可以运行
2014-10-22
亲~可以不要压缩包吗?