当前位置: 代码迷 >> C语言 >> [原创一个简单的n阶单位矩阵的建立程序,之前运行有错,修改后运行正确!!
  详细解决方案

[原创一个简单的n阶单位矩阵的建立程序,之前运行有错,修改后运行正确!!

热度:234   发布时间:2005-07-08 18:59:00.0
[原创一个简单的n阶单位矩阵的建立程序,之前运行有错,修改后运行正确!!

#include <stdlib.h>

#define N 20 int e[N][N]; #include <iostream> using namespace std;

void BuildE(int n)

{int i,j;

for(i=0;i<n;i++) { for(j=0;j<n;j++) { e[i][j]=0; } } for(i=0;i<n;i++) /*建立一个n阶的单位矩阵e*/ { e[i][i]=1; }

printf("单位矩阵为:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d ",e[i][j]); /*输出单位矩阵*/ } printf("\n"); }

} void main() {int n;

printf("请输入阶数: \n"); scanf("%d",&n);

BuildE(n); }

[此贴子已经被作者于2005-7-9 10:46:30编辑过]

搜索更多相关的解决方案: 矩阵  单位  运行  

----------------解决方案--------------------------------------------------------

我是在visual c++上运行的,出现这样的错误提示: Compiling... builde.cpp D:\jessie\课程设计\builde1\builde.cpp(9) : warning C4518: 'float ' : storage-class or type specifier(s) unexpected here; ignored D:\jessie\课程设计\builde1\builde.cpp(9) : error C2146: syntax error : missing ';' before identifier 'BuildE' D:\jessie\课程设计\builde1\builde.cpp(9) : fatal error C1004: unexpected end of file found Error executing cl.exe.

builde.obj - 2 error(s), 1 warning(s)


----------------解决方案--------------------------------------------------------

我把程序做了点适当的修改,现在程序错误是没有了,也能运行,但结果却是错的.不知道为什么,也不知道要怎么改,请大家帮帮忙!!小妹急用啊!!! #include <stdlib.h> #define N 20 #include <iostream> using namespace std;

int BuildE(int n)

{int i,j; int e[N][N];

for(i=0;i<n;i++) /*建立一个n阶的单位矩阵e*/ { for(j=0;j<n;j++) { if(i=j) e[i][j]=1; else e[i][j]=0; } }

printf("单位矩阵为:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d ",e[i][j]); /*输出单位矩阵*/ } printf("\n"); } return e[n][n]; } void main() {int n;

printf("请输入阶数: \n"); scanf("%d",&n);

BuildE(n); } 输出结果: 请输入阶数: 2 单位矩阵为: 0 -858993460 -858993460 1


----------------解决方案--------------------------------------------------------
if(i==j)
----------------解决方案--------------------------------------------------------

这样没用的,不信你试试,我是改了好多遍了,用了很多方法,终于被我弄出来了。正确是正确了,但我却不知道到底是什么原因。我是先把矩阵e全部赋值为0,然后再把对角线上元素赋值为1。 #include <stdlib.h>

#define N 20 #include <iostream> using namespace std;

int BuildE(int n)

{int i,j; int e[N][N]; for(i=0;i<n;i++) { for(j=0;j<n;j++) { e[i][j]=0; } } for(i=0;i<n;i++) /*建立一个n阶的单位矩阵e*/ { e[i][i]=1; }

printf("单位矩阵为:\n"); for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d ",e[i][j]); /*输出单位矩阵*/ } printf("\n"); } return e[n][n]; } void main() {int n;

printf("请输入阶数: \n"); scanf("%d",&n);

BuildE(n); }


----------------解决方案--------------------------------------------------------
错了,把其中的return语句去掉就可以了,然后前面的函数类型改为void

[此贴子已经被作者于2005-7-9 10:38:01编辑过]



----------------解决方案--------------------------------------------------------
现在原帖的程序已经正确了,如果哪位高手知道之前为什会出现越界错误,请指教!!!
----------------解决方案--------------------------------------------------------
  相关解决方案