#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
int main()
{
int array[5][6];
srand(time(NULL));
for(int n=0;n<=4;n++)
{
for(int m=0;m<=5;m++)
{
array[n][m]=rand()%100;
}
}
printf("改变前的矩阵:");
for(int m=0;m<=4;m++)
{
printf("\n");
for(int n=0;n<=5;n++)
{
printf("%d\t",array[m][n]);
}
}
for(int m=0;m<=4;m++) /*行排序*/
{
for(int n=0;n<=5;n++)
{
int temp1=array[m][n];
int temp2=array[m][n];
int p,q;
for(int i=n;i<=5;i++)
{
if(temp1>array[m][i])
{
temp1=array[m][i];
p=i;
}
}
array[m][n]=temp1;
array[m][p]=temp2;
}
}
for(int m=0;m<=5;m++) /*列排序*/
{
for(int n=0;n<=4;n++)
{
int temp1=array[n][m];
int temp2=array[n][m];
int p,q;
for(int i=n;i<=4;i++)
{
if(temp1>array[i][m])
{
temp1=array[i][m];
p=i;
}
}
array[n][m]=temp1;
array[p][m]=temp2;
}
}
for(int m=0;m<=4;m++) /*行排序*/
{
for(int n=0;n<=5;n++)
{
int temp1=array[m][n];
int temp2=array[m][n];
int p,q;
for(int i=n;i<=5;i++)
{
if(temp1>array[m][i])
{
temp1=array[m][i];
p=i;
}
}
array[m][n]=temp1;
array[m][p]=temp2;
}
}
printf("\n改变后的矩阵:");
for(int m=0;m<=4;m++)
{
printf("\n");
for(int n=0;n<=5;n++)
{
printf("%d\t",array[m][n]);
}
}
}
没啥问题啊
程序收到SIGSEGV提前终止了.p没有初始化,在某些情况下可能没有赋值就被用到了,而这个用到的时候是随机值,在某些时候可能不会溢出,有些时候就超出指针范围了。所以有时候正常,有时候异常。
q好像没用吧,p没有初始化
int p,q;改为int p = n;