鱼C论坛

 找回密码
 立即注册
查看: 4673|回复: 12

C语言实例抛物线求根!

[复制链接]
发表于 2012-7-24 21:26:11 | 显示全部楼层 |阅读模式
1鱼币
#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,disc,x1,x2,p,q;
    scanf("a=%lf,b=%lf,c=%lf\n",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/2*a;
x1=p+q;
x2=p-q;
printf("\nx1=%f,x2=%f\n",x1,x2);
}

这么写有错误的地方吗?

最佳答案

查看完整内容

刚才的错了!不能写作scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c); ,应写为scanf("%lf%lf%lf",&a,&b,&c); 才对!记住啊!scanf中间%lf之间都用逗号或者空格或者什么也不加都可以!比如scanf("%lf,%lf,%lf",&a,&b,&c); 或者scanf("%lf %lf %lf",&a,&b,&c);或者scanf("%lf%lf%lf",&a,&b,&c);这三种都可以,但记住用空格或者什么也不不加时在执行输入时可以用空格或者TAB键或者ENTER键隔开都可以,但用逗号隔开时在输入时必须用逗号隔开 ...
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-7-24 21:26:12 | 显示全部楼层
刚才的错了!不能写作scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
,应写为scanf("%lf%lf%lf",&a,&b,&c);
才对!记住啊!scanf中间%lf之间都用逗号或者空格或者什么也不加都可以!比如scanf("%lf,%lf,%lf",&a,&b,&c);
或者scanf("%lf %lf %lf",&a,&b,&c);或者scanf("%lf%lf%lf",&a,&b,&c);这三种都可以,但记住用空格或者什么也不不加时在执行输入时可以用空格或者TAB键或者ENTER键隔开都可以,但用逗号隔开时在输入时必须用逗号隔开!还有scanf("a=%lf,b=%lf,c=%lf\n",&a,&b,&c);这段语句的双引号里好像不能用换行,你运行一下试试!


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-24 22:52:20 | 显示全部楼层
1. 没判断disc是否大于0
2. 第二个2a也有括号才对。

我是64的系统,没法try。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 00:25:13 | 显示全部楼层
#include<stdio.h>
#include<math.h>
int main()
{
double a,b,c,disc,x1,x2,p,q;
    scanf("%lf%lf%lf",&a,&b,&c);
disc=b*b-4*a*c;

if(disc>=0)
{
q=sqrt(disc);
x1=(-b+q)/(2*a);
x2=(-b-q)/(2*a);
if(disc==0)printf("x1=x2=%.2lf\n",x1);
else
printf("x1=%.2lf x2=%.2lf\n",x1,x2);
}
return 0;
}

帮你改了 你看一下吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-25 11:07:03 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-25 11:08:19 | 显示全部楼层
arkhe 发表于 2012-7-24 22:52
1. 没判断disc是否大于0
2. 第二个2a也有括号才对。

我的也是64位的系统。。。。。
假设输入的DISC恒大于等于零,括号也加上了,可是还是不行。求解释
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-25 11:10:08 | 显示全部楼层
arkhe 发表于 2012-7-24 22:52
1. 没判断disc是否大于0
2. 第二个2a也有括号才对。

#include<stdio.h>
#include<math.h>
void main()
{
double a,b,c,disc,x1,x2,p,q;
scanf("a=%lf,b=%lf,c=%lf\n",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;
x2=p-q;
printf("\nx1=%f,x2=%f\n",x1,x2);
}


1 4 4

x1=-1.#IND00,x2=-1.#IND00
Press any key to continue

还有后面的那个#什么的,怎么回事?
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 11:38:34 | 显示全部楼层
毒﹉ 发表于 2012-7-25 11:10
#include
#include
void main()

首先你的输入和输出都有问题  你可以看一下 我帮你修改的,还有你的公式也用错了
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 14:26:48 | 显示全部楼层
从数学的角度来说,这么求根误差可能很大
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 14:29:39 | 显示全部楼层
#include<stdio.h>


#include<math.h>
#include<conio.h>
void main(void)
{       
        float x1=0,x2=0,a=0,b=0,c=0,j=0,k=0,m=0;
        printf("please input three numbers:a,b,c\n");
        scanf("%f %f %f",&a,&b,&c);
        j=sqrt(b*b-4.0*a*c)/(2.0*a);
        k=-b/(2.0*a);
        x1=k+j;x2=k-j;
        printf("x1=%f,x2=%f\n",x1,x2);
        getch();

}
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 14:36:43 | 显示全部楼层
scanf("a=%lf,b=%lf,c=%lf\n",&a,&b,&c);
不能这样写,应写为scanf("%lf%lf,%lf\n",&a,&b,&c);
才对!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2012-7-25 14:37:53 | 显示全部楼层
scanf("a=%lf,b=%lf,c=%lf\n",&a,&b,&c);
不能这样写,应写为scanf("%lf%lf,%lf\n",&a,&b,&c);
才对!记住啊!:L
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-7-25 15:28:41 | 显示全部楼层
吴庆龙 发表于 2012-7-25 14:48
刚才的错了!不能写作scanf("a=%lf,b=%lf,c=%lf",&a,&b,&c);
,应写为scanf("%lf%lf%lf",&a,&b,&c);
才对 ...

非常感谢!!!!谢!!!!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-14 08:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表