c++ 的一个问题 高手帮帮忙

程序代码如下

#include <iostream>
using namespace std;
int main()
{
int arr0[3][4];
float arr1[3];
int i,j,k,L;
for(i=0;i<=2;i++)
{
for(j=0;j<=3;j++)
{cin>>arr0[i][j];
}
}

int DD(int arr2[3][4]);

int Di(int arr3[3][4],int iNo);
L=DD(arr0);

cout<<L<<endl;
for (k=0;k<=2;k++)
{
arr1[k]=Di(arr0,k);
cout <<arr1[k]<<endl;
}
return 0;
}
int DD(int arr2[3][4])
{
int arr4[3]={1,1,1},arr5[3]={1,1,1};
int i,j,k,m=0,n=0,a,b,l,h;

for (j=0;j<=2;j++)
{
for (i=0;i<=2;i++)
{ k=i+j;
if(i+j>2)
k=i+j-3;
arr4[j]=arr2[i][k]*arr4[j];
}
m=arr4[j]+m;
}
for (b=2;b>=0;b--)
{
for(a=0;a<=2;a++)
{l=b-a;
if(b-a<0)
l=b-a+3;
arr5[b]=arr2[a][l]*arr5[b];
}
n=arr5[b]+n;
}
h=m-n;
return (h);
}

int Di(int arr3[3][4],int iNo)
{
int i,j,k,iDi;
int arr6[3];
for (i=0;i<=2;i++)
{ arr6[i]=arr3[i][iNo];
arr3[i][iNo]=arr3[i][3];
arr3[i][3]=arr6[i];

}

for (j=0;j<=2;j++)
{
for (k=0;k<=2;k++)
{
cout<<arr3[j][k]<<" ";
}
cout<<endl;
}

int DD(int arr2[3][4]);
iDi=DD(arr3);

return (iDi);
}

我输入进行测试的数组是
2 -1 1 0
3 2 -5 1
1 3 -2 4

本意是想用
for (k=0;k<=2;k++)
{
arr1[k]=Di(arr0,k);
cout <<arr1[k]<<endl;
}
这段代码和
for (i=0;i<=2;i++)
{ arr6[i]=arr3[i][iNo];
arr3[i][iNo]=arr3[i][3];
arr3[i][3]=arr6[i];

}
这段代码一起实现 数组列的对换,也就是
k=0 时 数组为
0 -1 1 2
1 2 -5 3
4 3 -2 1
k=1时 数组为
2 0 1 -1
3 1 -5 2
1 4 -2 3
k=2 时 数组为
2 -1 0 1
3 2 1 -5
1 3 4 -2
但实际结果却是
k=0 时 数组为
0 -1 1 2
1 2 -5 3
4 3 -2 1
k=1 时数组为
0 2 1 -1
1 3 -5 3
4 1 -2 3
k=2时数组为
0 2 -1 1
1 3 2 -5
4 1 3 -2
也就是说 执行这段
for (k=0;k<=2;k++)
{
arr1[k]=Di(arr0,k);
cout <<arr1[k]<<endl;
}
代码时 ,每次循环时arr0 的值不是重新付值的 而是由arr3 决定的
为什么会这样? 有什么改进方法吗?
谢谢
程序能运行 只是有点小错误
希望大家能指点下

第1个回答  2007-03-29
谁瞎写的
相似回答
大家正在搜