为什么运行不了结果
答案: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]的值怎么来。觉的不恰当。
这是我的分析,希望对你有用。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯