該程序將任意大小的矩陣打印成螺旋形順序,但問題在於它在輸出結尾還會留出額外的空間,我不想在開始時留出額外空間。 我可以在每個代碼中插入一個標誌來檢查它們是否正在執行第一次,然後相應地使用「%d」或「%d」,但對於大矩陣,所有if塊將執行多次並且回答將是在第一次執行中正確間隔,然後全部沒有空間。在最後或開始處刪除額外的空間
#include<stdio.h>
int main()
{
int m,n;
int A[20][20],T,B,L,R,j,i,dir=0;
scanf("%d%d",&m,&n);
T=0;B=m-1;L=0;R=n-1;
//inpu array
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
{
scanf("%d",&A[i][j]);
}
}
while(T<=B && L<=R)
{
//right move
if(dir==0)
{
for(i=L;i<=R;i++)
{
printf("%d ",A[T][i]);
}
T++;
dir=1;
}
//down move
if(dir==1)
{
for(i=T;i<=B;i++)
{
printf("%d ",A[i][R]);
}
R--;
dir=2;
}
//left move
if(dir==2)
{
for(i=R;i>=L;i--)
{
printf("%d ",A[B][i]);
}
B--;
dir=3;
}
//top move
if(dir==3)
{
for(i=B;i>=T;i--)
{
printf("%d ",A[i][L]);
}
L++;
dir=0;
}
}
return 0;
}
您應該縮進您的代碼。這是完全不可讀的。 –
在內存中創建一個字符串,然後刪除不必要的空白,然後將其打印出來,而不是打印「即時」 – Ryzhehvost