| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦   
共有 374 人关注过本帖
标题:求二元一次方程程序问题
收藏  订阅  推荐  打印
bearangel
Rank: 1
等级:新手上路
帖子:12
积分:240
注册:2008-7-15
求二元一次方程程序问题

#include <stdio.h>
#include <math.h>
main ()
{
     double a,b,c,disc,x1,x2,p,q;
     scanf ("%f,%f,%f",&a,&b,&c);
     disc=b*b-4*a*c;
     if (disc<0) printf ("方程无解%d");
     else
     p=-b/(2*a);
     q=sqrt((disc)/(2*a));
     x1=p+q;
     x2=p-q;   
     printf ("x1=%.3f,x2=%.3f",x1,x2);   
}
我是个新手
这个程序能通过编译
但是不能求出结果,谁能帮我看看那里出错了
2008-7-28 15:42
sxn0508
Rank: 2
等级:注册会员
帖子:117
积分:1675
注册:2008-1-24

编译能通过??!!
你的编译器还支持中文标点?!
x2=p-q; 这后面是个中文的分号
2008-7-28 15:57
bearangel
Rank: 1
等级:新手上路
帖子:12
积分:240
注册:2008-7-15

这个是我在论坛发帖时输入的
在我的程序中是没有的
2008-7-28 16:01
himpo
Rank: 2
等级:注册会员
帖子:132
积分:1612
注册:2008-5-16

你那个是一元二次方程吧。。。

#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) printf ("方程无解%d");
    else   {                       //后面都属于else
            p=-b/(2*a);
            q=sqrt(disc)/(2*a);    //这里有问题
            x1=p+q;
            x2=p-q;   
            printf ("x1=%.3f,x2=%.3f",x1,x2);   
           }
return 0;
}

别的没细看。。

[ 本帖最后由 himpo 于 2008-7-28 16:09 编辑 ]
2008-7-28 16:05
sxn0508
Rank: 2
等级:注册会员
帖子:117
积分:1675
注册:2008-1-24

scanf的时候double型要用%lf
2008-7-28 16:06
xiaomengxia2008
Rank: 2
等级:注册会员
帖子:80
积分:970
注册:2008-7-23

#include <stdio.h>
#include <math.h>
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) printf ("方程无实数解%d");
     else  p=-b/(2*a);
     q=(sqrt(disc))/(2*a);/*这里你的公式弄错了吧!*/
    /* printf("%f",q);*/
     x1=p+q;
     x2=p-q;   
     printf ("x1=%.3f,x2=%.3f",x1,x2);   
}
2008-7-28 16:09
深深
Rank: 1
等级:新手上路
帖子:8
积分:184
注册:2008-7-18
回复 4# himpo 的帖子

貌似还是有错.依然出不来啊
2008-7-28 17:16
学不懂也要学C
Rank: 1
等级:新手上路
帖子:31
积分:448
注册:2008-7-3

double a,b,c,disc,x1,x2,p,q;
     scanf ("%lf,%lf,%lf",&a,&b,&c);
此处类型要匹配,只要改过来就可以运行得到正确答案了。
2008-7-28 17:23
crabeam
Rank: 1
等级:新手上路
帖子:27
积分:396
注册:2008-6-17

#include "stdio.h"
#include"math.h"
void 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)
   printf("方程无解:\n");
   else
   {
   p=-b/(2*a);
   q=sqrt(disc/(2*a));
   x1=p+q;
   x2=p-q;
   printf("x1=%lf\nx2=%f\n",x1,x2);
   }

}
float
6~7 有效数字
double
15~16  有效数字
long double
18~19   有效数字

双精度用格式:%lf

长双精度(long double)的 格式 可以用以下方式
%lf   %le   %lg
2008-7-28 20:09
共有 373 人关注过本帖
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.056204 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved