输出二维斜矩阵,高手请围观
输入n,输出n*n的二维斜矩阵。例如,输入5
输出:
1 2 4 7 11
3 5 8 12 16
6 9 13 17 20
10 14 18 21 23
15 19 22 24 25

程序代码:# include <stdio.h>
int main (void)
{
int n;
int i,j,k;
int m=0;
int x,y;
int a[100][100];
printf("输入斜矩阵的阶数 ");
scanf("%d",&n);
for (i=0; i<=2*(n-1); ++i)
{
if (i < n)
{
x = 0;
y = i;
}
else
{
x = i - (n-1);
y = n-1;
}
for (j=x; j<=y; ++j)
{
k = i-j;
m++;
a[j][k] = m;
}
}
for (j=0; j<n; ++j)
{
for (k=0; k<n; ++k)
printf("%-5d",a[j][k]);
printf("\n");
}
return 0;
}
/*在VC++6.0中的输出结果为:
————————————
输入斜矩阵的阶数 5
1 2 4 7 11
3 5 8 12 16
6 9 13 17 20
10 14 18 21 23
15 19 22 24 25
Press any key to continue
————————————
*/

程序代码:#include<stdio.h>
int array[1000][1000];
int main()
{
int n,i,j,x,y,rst;
scanf("%d",&n);
rst=i=j=0;
while(rst<n*n)
{
x=i;y=j;
while(x<n && y>=0)array[x++][y--]=++rst;
j+1<n ? j++ : i++;
}
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
printf(i==0?"%3d":" %3d",array[i][j]);
printf("\n");
}
return 0;
}

程序代码:#include<stdio.h>
main()
{int j,k,l,i,n,a[20][20];
printf("请输入n:");
scanf("%d",&n);
i=1;
for(j=0;j<n;j++)
for(k=j,l=0;k>=0&&l<n;k--,l++)
a[l][k]=i++;
for(j=1;j<n;j++)
for(k=j,l=n-1;k<n;k++,l--)
a[k][l]=i++;
putchar('\n');
for(j=0;j<n;j++)
{for(k=0;k<n;k++)
printf("%4d ",a[j][k]);
printf("\n");
}
}
程序代码:int a[100][100];
int n;
main(){
int l,i;
int o=1;
printf("N=");
scanf("%d",&n);
for(i=0;i<n*2-1;i++){
for(l=(i>=n)?(n<<1)-i-2:i;l>-1;l--){
a[i-l-((i>=n)?i-n+1:0)][l+((i>=n)?i-n+1:0)]=o;
o++;
}
}
for(l=0;l<n;l++){
for(i=0;i<n;i++){
printf("%5d",a[l][i]);
}
printf("\n");
}
getch();
}
