高手帮忙看一下我编的这个小程序错哪了??
程序为了达到这个目的:从键盘输入一个矩阵,运行程序,自动将矩阵转换为行阶梯型矩阵,然后将行阶梯型矩阵输出。
程序如下:
#include<stdio.h>
void transform (double a[][],int m,int n)
{
int i,j,k;
for(i=0;i<m;i++)
{ for(j=0;j<n;j++) a[i][j]/=a[i][i];//将每行的首项规范为1//
for(k=i+1;k<m;k++)
for(j=i;j<n;j++) a[k][j]-=a[i][j]*a[k][0];//让第i列除了第一行的元素,其他元素都为零//
}
}
void main()
{
int i,j,m,n;
printf("请输入矩阵的行数和列数");
scanf("%d%d",m,n);
double a[m][n];
for(i=0;i<m;i++)
{
printf("请输入第%d行的%d个数\n”,i+1,n);
for(j=0;j<n;j++) scanf("%lf",a[i][j]);//从键盘上输入一个矩阵,储存在二维数组中//
}
transform(a,m,n);
printf("转换之后的行阶梯型矩阵为:\n");
for(i=0;i<m;i++)
for(j=0;j<n;j++)
{
printf("%lf",a[m][n]);
if(j==n-1) printf("\n");
}
}
二维数组 矩阵转换
[解决办法]
代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试是程序员必须掌握的技能之一。