中间一个函数执行完就停止了,求大神路过!!
题目是输入一个矩阵,并转置。。
#include
#include
#define M 1
#define N 2
struct three
{
int r; //行
int c; //列
int d; //元素值
};
struct trix
{
int row;
int col;
int num;
struct three data[M*N] ;
};
struct zhu
{
int p;
int q;
}l[N];
struct trix t;
void create(); //创一个矩阵
void pri(); //输出矩阵
void zhuan(); //矩阵转置
void main()
{
system("cls");system("color 02");
create(); //创一个矩阵
pri(); //输出矩阵
zhuan(); //矩阵转置
printf("请按任意键继续");
system("pause");
pri(); //输出矩阵
}
void zhuan()
{
struct trix th;int i,j,k;
th.col=M;th.row=N;
for(k=0;k
{
if(t.data[k].d==0) break;
i=t.data[k].c;
l[i].p++;
}
l[0].q=1;
for(j=1;j
l[j].q=l[j-1].q+l[j-1].p;
for(k=0;k
{
if(t.data[k].d==0) break;
i=t.data[k].c;
j=l[i].q;
th.data[j].c=t.data[k].r;
th.data[j].r=t.data[k].c;
th.data[j].d=t.data[k].d;
l[i].q++;
}
t=th;
}
void pri()
{
int i,j,k=0;
printf("\n\n\n");
if(t.num<=0) return;
printf("矩阵为%d行、%d列,有%d个非0元素\n",t.row,t.col,t.num);
printf("---------------------------------\n");
for(i=0;i
{
for(j=0;j
{
if((t.data[k].r==i)&&(t.data[k].c==j))
{ printf("%d ",t.data[k].d);k++;}
else
{ printf("0 ");}
}
printf("\n");
}
}
void create()
{
int i,j;int one[M][N];
t.row=M;t.col=N;t.num=0;
printf("请输入%d行、%d列的矩阵元素:\n",M,N);
for(i=0;i
{
for(j=0;j
scanf("%d",&one[i][j]);
}
for(i=0;i
for(j=0;j
if(one[i][j]!=0)
{
t.data[t.num].r=i;t.data[t.num].c=j;
t.data[t.num].d=one[i][j];t.num++;
}
}
------解决方案--------------------
我測試過沒有問題
t.data.r t.data.c t.data.d初始化都是0
------解决方案--------------------
void zhuan()
{
struct trix th;int i,j,k;
th.col=M;th.row=N;
th.num=t.num;//非0个数
for(k=0;k
{
if(t.data[k].d==0) break;
i=t.data[k].c;
l[i].p++;
}
l[0].q=0;//开始地址0
for(j=1;j
l[j].q=l[j-1].q+l[j-1].p;
for(k=0;k
{