各位高手,看一下啦,哪里出错了????
输入一个矩阵(比如说4阶的),再从矩阵中选一个数(假如这个数是2行3列的),从原矩阵中取出一个新矩阵(比如说3行3列),把这个数当做新矩阵的第一个数;如果访问过界,则过界的数都为0。假如一个4阶矩阵:
2 6 3 8
1 5 6 4
2 3 8 7
1 3 2 6
选的是3行3列的8,要取出一个3行4列的矩阵,那么,结果应该是
8 7 0 0
2 6 0 0
0 0 0 0
可是,偶写的这个运行到一半就出问题呀……
#include<stdio.h>
int main()
{
int r,c,a,h,n;
int s[][],i,j;
int *b[4][4];
int *p;
printf("输入一个");
scanf("%d",&n);
printf("阶矩阵:\n");
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
scanf("%d",&s[i][j]);
printf("\n输入所选数字的行、列:");
scanf("%d %d",&r,&c);
printf("\n输入长、宽:");
scanf("%d %d",&a,&h);
printf("\n");
p=&s[r][c];
for(i=1;i<=h;i++)
{
for(j=1;j<=a;j++)
{
if(c+a>n+1)
if(c+j>n+1)
s[c+i][r+h-n-1]=0;
b[i][j]=&(*p);
printf("%d ",*b[i][j]);
p++;
}
printf("\n");
p=p+n-a;
}
return 0;
}