| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1012 人关注过本帖, 1 人收藏
标题:c语言编程出错,高手帮忙
只看楼主 加入收藏
zhao3575
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
结帖率:50%
收藏(1)
已结贴  问题点数:20 回复次数:14 
c语言编程出错,高手帮忙
求解三元一次方程组 a1x+b1y+c1z=d1
                   a2x+b2y+c2z=d2
                   a3x+b3y+c3z=d3
的解,用行列式原理,但运行结果出错,总是显示:
x=0.000000
y=0.000000
z=1.#QNAN0



#define E(a,b,c,d,e,f,g,h,i) a*e*i+b*f*g+d*h*c-c*e*g-b*d*i-a*f*h;
#include <stdio.h>
void main ()
{
    double a1,b1,c1,d1,
        a2,b2,c2,d2,
        a3,b3,c3,d3,
        D,D1,D2,D3,
        x,y,z;
    printf("请输入方程一的系数a1,b1,c1和方程值d1:");
    scanf("%lf%lf%lf%lf",&a1,&b1,&c1,&d1);
    printf("请输入方程二的系数a2,b2,c2和方程值d2:");
    scanf("%lf%lf%lf%lf",&a2,&b2,&c2,&d2);
    printf("请输入方程三的系数a3,b3,c3和方程值d3:");
    scanf("%lf%lf%lf%lf",&a3,&b3,&c3,&d3);
    D=E(a1,b1,c1,a2,b2,c2,a3,b3,c3);
    D1=(d1,b1,c1,d2,b2,c2,d3,b3,c3);
    D2=(a1,d1,c1,a2,d2,c2,a3,d3,c3);
    D3=(a1,b1,d1,a2,b2,d2,a3,b3,d3);;
    x=D1/D;
    y=D2/D;
    z=D3/D;
    printf("x=%f\ny=%f\nz=%f\n",&x,&y,&z);
}
搜索更多相关主题的帖子: c语言 
2010-04-06 19:56
sd791002
Rank: 2
等 级:论坛游民
帖 子:88
专家分:87
注 册:2010-4-3
收藏
得分:20 
初步判断是  #define  宏的用法出错
2010-04-06 20:17
sd791002
Rank: 2
等 级:论坛游民
帖 子:88
专家分:87
注 册:2010-4-3
收藏
得分:0 
程序里  你要出现  E(a,b,c,d,e,f,g,h,i)
才会给你转换成  a*e*i+b*f*g+d*h*c-c*e*g-b*d*i-a*f*h;
2010-04-06 20:19
sd791002
Rank: 2
等 级:论坛游民
帖 子:88
专家分:87
注 册:2010-4-3
收藏
得分:0 
而你的程序里  
D=E(a1,b1,c1,a2,b2,c2,a3,b3,c3);
    D1=(d1,b1,c1,d2,b2,c2,d3,b3,c3);
    D2=(a1,d1,c1,a2,d2,c2,a3,d3,c3);
    D3=(a1,b1,d1,a2,b2,d2,a3,b3,d3);;


编译器是不会做处理的
2010-04-06 20:21
zhao3575
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
收藏
得分:0 
不是define的问题,我的同学也这样用的,没问题的,一楼,二楼,三楼的说法不对啊
2010-04-06 20:24
sd791002
Rank: 2
等 级:论坛游民
帖 子:88
专家分:87
注 册:2010-4-3
收藏
得分:0 
这个。。。1 2 3楼全是 我  -、-

我再看看吧。
2010-04-06 20:27
sd791002
Rank: 2
等 级:论坛游民
帖 子:88
专家分:87
注 册:2010-4-3
收藏
得分:0 
#include <stdio.h>
float E(float a,float b,float c,float d,float e,float f,float g,float h,float i)
{
    float m=a*e*i+b*f*g+d*h*c-c*e*g-b*d*i-a*f*h;
    return m;
}
void main ()
{
    double a1,b1,c1,d1,
        a2,b2,c2,d2,
        a3,b3,c3,d3,
        D,D1,D2,D3,
        x,y,z;
    printf("请输入方程一的系数a1,b1,c1和方程值d1:");
    scanf("%lf%lf%lf%lf",&a1,&b1,&c1,&d1);
    printf("请输入方程二的系数a2,b2,c2和方程值d2:");
    scanf("%lf%lf%lf%lf",&a2,&b2,&c2,&d2);
    printf("请输入方程三的系数a3,b3,c3和方程值d3:");
    scanf("%lf%lf%lf%lf",&a3,&b3,&c3,&d3);
 D=E(a1,b1,c1,a2,b2,c2,a3,b3,c3);
    D1=E(d1,b1,c1,d2,b2,c2,d3,b3,c3);
    D2=E(a1,d1,c1,a2,d2,c2,a3,d3,c3);
    D3=E(a1,b1,d1,a2,b2,d2,a3,b3,d3);;

    x=D1/D;
    y=D2/D;
    z=D3/D;
    printf("x=%f\ny=%f\nz=%f\n",x,y,z);
}


事实证明  我的宏定义理解的还是蛮到位的
2010-04-06 20:40
sd791002
Rank: 2
等 级:论坛游民
帖 子:88
专家分:87
注 册:2010-4-3
收藏
得分:0 
好吧  继续调试  我看错了 - 。-
2010-04-06 20:45
sd791002
Rank: 2
等 级:论坛游民
帖 子:88
专家分:87
注 册:2010-4-3
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册


总之  别用宏了
2010-04-06 20:51
zhao3575
Rank: 1
等 级:新手上路
帖 子:9
专家分:0
注 册:2010-4-5
收藏
得分:0 
#include <stdio.h>
#define E(a,b,c,d,e,f,g,h,i) a*e*i+b*f*g+d*h*c-c*e*g-b*d*i-a*f*h;
float  a1,b1,c1,d1,
       a2,b2,c2,d2,
       a3,b3,c3,d3,
       D,D1,D2,D3,
       x,y,z;
void main()
{
    printf("请输入方程一的系数a1,b1,c1和方程值d1:");
    scanf("%f%f%f%f",&a1,&b1,&c1,&d1);
    printf("请输入方程二的系数a2,b2,c2和方程值d2:");
    scanf("%f%f%f%f",&a2,&b2,&c2,&d2);
    printf("请输入方程三的系数a3,b3,c3和方程值d3:");
    scanf("%f%f%f%f",&a3,&b3,&c3,&d3);
D=E(a1,b1,c1,a2,b2,c2,a3,b3,c3);
D1=E(d1,b1,c1,d2,b2,c2,d3,b3,c3);
D2=E(a1,d1,c1,a2,d2,c2,a3,d3,c3);
D3=E(a1,b1,d1,a2,b2,d2,a3,b3,d3);
x=D1/D;
y=D2/D;
z=D3/D;
printf("x=%f\ny=%f\nz=%f\n",x,y,z);
}

这样好像就对了
2010-04-06 20:57
快速回复:c语言编程出错,高手帮忙
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016971 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved