c语言编程题
描述求一元二次方程“ax^2+bx+c=0”的根,其中a不等于0。结果要求精确到小数点后5位。
若两个实根相等,则输出形式为:“x1=x2=XXX.XXXXX”;
若两个实根不等,需满足根小者在前的原则,中间用分号隔开,输出形式为:“x1=XX.XXXXX;x2=XX.XXXXX";
若无实根输出“No answer!”。
格式
输入格式
输入一行,包含三个浮点数a, b, c(它们之间以一个空格分开),分别表示方程a的系数。
输出格式
输出一行,表示方程的解。 所有输出部分要求精确到小数点后5位,数字、符号之间没有空格。
我打的::不知道问题出哪了
#include<stdio.h>
#include<math.h>
int main()
{
int a,b,c,g,x;
double x1,x2;
scanf("%d %d %d",&a,&b,&c);
if(0==a*x*x+b*x+c)
{
g=b*b-4*a*c;
if(g<0)
printf("No answer");
while(g>=0)
{
if(g>0)
{
x1=(-b+sqrt(g))/2*a;
x2=(-b-sqrt(g))/2*a;
}
if(g==0)
{
x1=(-b)/2*a;
x2=x1;
}
return(0);
}
printf("%lf;%lf",x1,x2);
}
} 本帖最后由 jackz007 于 2021-1-6 11:50 编辑
int a,b,c,g,x;
. . . . . .
if(0==a*x*x+b*x+c)
x 未赋值就引用,这个逻辑条件怕是永远也无法满足。后面计算 x1、x2 的代码根本没有机会得到执行!
#include<stdio.h>
#include<math.h>
int main()
{
int a , b , c , d ;
double x1 , x2 ;
scanf("%d%d%d" , & a , & b , & c) ;
d = b * b - 4 * a * c ;
if(d >= 0) {
x1 = 1.0 * (- b + sqrt(d)) / (2 * a) ;
x2 = 1.0 * (- b - sqrt(d)) / (2 * a) ;
if(x2 < x1) printf("x1 = %.5lf ; x2 = %.5lf\n" , x2 , x1) ;
else if (x2 > x1) printf("x1 = %.5lf ; x2 = %.5lf\n" , x1 , x2) ;
else printf("x1 = x2 = %.5lf\n" , x1 , x2) ;
} else {
printf("No answer") ;
}
}
编译、运行实况
D:\0002.Exercise\C>g++ -o x x.c
D:\0002.Exercise\C>x
5 3 2
No answer
D:\0002.Exercise\C>x
2 5 3
x1 = -1.50000 ; x2 = -1.00000
D:\0002.Exercise\C>x
2 -5 3
x1 = 1.00000 ; x2 = 1.50000
D:\0002.Exercise\C>
哇 谢谢你啊 谢谢谢谢 大佬 你qq多少呐明天c语言考试 救救孩子吧{:5_111:} 呃呃 我把x改成d d=b*b-4*a*c还是不行{:5_100:}
#include<stdio.h>
#include<math.h>
int main()
{
int g;
int a,b,c;
double x1,x2;
scanf("%d %d %d",&a,&b,&c);
g=b*b-4*a*c;
if(g<0)
printf("No answer");
while(g>=0)
{
if(g>0)
{
x1=1.0*(-b+sqrt(g))/(2*a);
x2=1.0*(-b-sqrt(g))/(2*a);
}
if(g==0)
{
x1=(-b)/(2*a);
x2=x1;
}
return(0);
}
printf("%.5lf;%.5lf",x1,x2);
}
小木研 发表于 2021-1-6 11:51
哇 谢谢你啊 谢谢谢谢 大佬 你qq多少呐明天c语言考试 救救孩子吧
问题解决了,请给最佳答案 #include <stdio.h>
#include <math.h>
int main()
{
int a, b, c, delta;
double p, q, x1, x2;
printf("请输入三位数:");
scanf("%d%d%d", &a, &b, &c);
if (a < 0)
{
a = -a;
b = -b;
c = -c;
}
else if (a > 0)
{
delta = b * b - 4 * a * c;
if (delta > 0)
{
p = -b / (2.0 * a);
q = sqrt(delta) / (2.0 * a);
x1 = p + q;
x2 = p - q;
printf("该方程有两个不同的解为:\nx1 = %.2f\nx2 = %.2f\n", x1, x2);
}
else if (delta == 0)
{
p = -b / (2.0 * a);
x1 = p;
printf("该方程有两个相同的解为:\nx1 = x2 = %.2\n", p);
}
else
{
p = -b / (2.0 * a);
delta = -delta;
q = sqrt(delta) / (2.0 * a);
printf("该方程有两个共轭复根为:\nx1 = %.2f + %.2fi\nx2 = %.2f - %.2fi\n", p, q, p, q);
}
}
else
{
printf("该方程不是一元二次方程\n");
}
return 0;
}
页:
[1]