#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编辑过]
----------------解决方案--------------------------------------------------------
现在原帖的程序已经正确了,如果哪位高手知道之前为什会出现越界错误,请指教!!!
----------------解决方案--------------------------------------------------------