c++结果为什么输出一个很大的负数

c++高斯主元解方程,请帮忙看一下错哪了,结果是很大的负数。。下面是代码。。#include<math.h>#include<iostream.h>#include<st... c++高斯主元解方程,请帮忙看一下错哪了,结果是很大的负数。。
下面是代码。。
#include<math.h> #include<iostream.h> #include<stdio.h>void shuruxishu(double hanglieshi[200][200],int n) //输入系数,n是行数{ int i,j; for(i=0;i<n;i++) //输入行 { for(j=0;j<n+1;j++) { scanf("%f",&hanglieshi[i][j]); //输入列 } } return; } void xuanzezhuyuan(double hanglieshi[200][200],int n ) //选择列主元,n是行数,m是列数 { double max=0; int i; max=hanglieshi[0][0]; //max是第一列所有数里的最大数 for(i=1;i<n;i++) { if( fabs(hanglieshi[i][0]) > fabs(max) ) {max=hanglieshi[i][0]; } } } void xiaoyuan(double hanglieshi[200][200], int n) //每列消元,系数行列式化为1{ int j,i; for(j=1;j<n;j++) { for(i=1;i<n;i++) { for(i=0;i<n;i++) { for(j=0;j<n+1;j++) { hanglieshi[i+1][j]=hanglieshi[i+1][j]-hanglieshi[i+1][j]/hanglieshi[i][i]*hanglieshi[i][j]; } } } } for(i=0;i<n;i++) {for(j=0;j<n+1;j++) {hanglieshi[i][j]=hanglieshi[i][j]/hanglieshi[i][i]; }}} void result(double hanglieshi[200][200], int n) {double a[200]; int i,j,e; a[n]=hanglieshi[n][n+1]; for(i=n;i>=0;i--){for(j=n;j>=0;j--) {a[i-1]=hanglieshi[i][n+1]-hanglieshi[i][j]*a[i]; } } for(e=0; e<n; e++) { cout<< "x"<< e+1 << "=" << a[e] << endl; } } void main() { double hanglieshi[200][200]; int n ; cin>>n; shuruxishu(hanglieshi,n); //输入系数 xuanzezhuyuan(hanglieshi,n ); //选择主元 xiaoyuan(hanglieshi, n ); result(hanglieshi,n ); //求解}
展开
 我来答
White_MouseYBZ
2014-10-26 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:7168万
展开全部
形参是double型,而输入scanf("%f",&hanglieshi[i][j]);中用的却是"%f",即float型,类型不配哟!类似的都改成scanf("%lf",&hanglieshi[i][j]);吧……
追问

还有哪里需要输入啊,如果我要是把 f 改成 d可以么,可是改成d之后还是不对啊。。

追答
改成d的理由是啥?%d是输入整数,根本与double匹配不了!变量是double型,控制符就一定是%lf,否则就要出错。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式