이 프로그램은 모든 크기의 행렬을 나선형 순서로 인쇄하지만 문제는 출력 끝에 여분의 공간을 넣음으로써 처음에는 여분의 공간을 원하지 않는다는 것입니다. 각 코드 안에 플래그가 삽입되어 처음 실행되는지 여부를 확인한 다음 적절하게 "% 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;
}
로 대체
printf("%d ",A[i][R]);
당신은 당신의 코드를 들여 쓰기를해야한다. 그것은 완전히 읽을 수 없습니다. –메모리에 문자열을 만든 다음 불필요한 공백을 제거하고 "즉시"인쇄하는 대신 불필요한 공백을 제거한 다음 인쇄하십시오. – Ryzhehvost