永发信息网

为什么运行不了结果

答案:2  悬赏:30  手机版
解决时间 2021-04-16 15:22
  • 提问者网友:遁入空寂
  • 2021-04-15 14:52

为什么运行不了结果!!

#include<iostream.h>

#include<math.h>

int n=2,p=0;

float B[3][4]={12,-3,3,15,18,-3,1,15,-1,2,1,6};

float X[]={0,0,0};

void main ()

{

for(int k=0;k++;k<=n-1)

{

if(B[k][k]==0)

break;

for (int i=k+1;i++;i<=n)

{

float m;

m=B[i][k]/B[k][k];

for(int j=k+1;j++;j<=n+1)

{

B[i][j]=B[i][j]-m*B[k][j];

}

}

}

X[n]=B[n][n+1]/B[n][n];

for(int i=n-1;i--;i>=0)

{

float p=0;

for(int j=i+1;j++;j<=n)

{

p+=B[i][j]*X[j];

}

X[i]=(B[i][n+1]-p)/B[i][i];

}

for(int q=0;k++;k<=n)

{

cout<<X[q]<<'\t'<<endl;

}

}

最佳答案
  • 五星知识达人网友:独钓一江月
  • 2021-04-15 15:47
我对于楼上的回答持否定态度,就算是将if(j>=i)xx[n++]=i;修改成if(j>=i)xx[n]=i;n++; 程序的输出答案也是错误的(原因很简单的两个式子在此题中是等价的),假设输入的两个数为2和4,则程序的输出为-858993460-858993460-858993460-858993460。所以这种修改方法是错误的。
造成此题的原因的确是死循环的,原因和刚才哪位同仁的分析基本差不多,只需要把语句if(j>=i)xx[n++]=i;改成if(j<=i)xx[n++]=i;即可解决死循环的问题的。
由于之前不知道楼主需要实现什么目的的,就只是使其不再是死循环而已,现在按照楼主的意思,程序修改后为:
#include "stdio.h"
#include<conio.h>
#include<stdlib.h>
void fun(int m,int k,int xx[])
{
int i,j,n;
for(i=m+1,n=0;n<k;i++)
{
for(j=2;j<i;j++)
//{ //括号不正确,删除
if(i%j==0)break;
if(j>=i)xx[n++]=i;
//} //括号不正确,删除
}
}
void main()
{
int m,n,zz[1000];
printf("\nplease enter two nomber");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=0;m<n;m++)
printf("%d\t",zz[m]);
printf("\n");
}
主要是你的括号使用不正确的,删除后即可,同时在输出语句中加了一个格式控制符,不然输出结果均是挨着的,不好看的!
还需要说明一下的是你这个程序是计算素数的程序的啊,不是计算什么奇数的程序的吧?
程序已经给你修改正确了,你可以自己运行试一下的!
全部回答
  • 1楼网友:独钓一江月
  • 2021-04-15 16:39

for(int k=0;k++;k<=n-1)

{

if(B[k][k]==0)

break;

for (int i=k+1;i++;i<=n)

{

float m;

m=B[i][k]/B[k][k];

for(int j=k+1;j++;j<=n+1)

{

B[i][j]=B[i][j]-m*B[k][j];

}

}

}

这几个循环对下面基本没什么作用,可以直接定义变量k,使k==2

for(int j=i+1;j++;j<=n)

{

p+=B[i][j]*X[j];

}

X[i]=(B[i][n+1]-p)/B[i][i];

}

这个循环好像传值混乱,虽然当j==2时n也等于2

能不能使x[n]的值传给x[j]我不很清楚,程序中没有直接说明x[j]的值怎么来。觉的不恰当。

这是我的分析,希望对你有用。

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯