这个程序将任意大小的矩阵打印成螺旋顺序,但问题是它在输出的末尾也增加了一个空间,我不想在开始时有额外的空间。 我可以在每个代码中插入一个标志来检查它们是否是第一次执行,然后使用"%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;
}
答案 0 :(得分:1)
printf("%d", data[0]);
for (int i=1; i < count; i++) {
printf(" %d", data[i]);
}
答案 1 :(得分:0)
您可以执行相反的操作,而不是在打印每个元素后添加空格,在每个元素之前添加空格,第一个元素除外。像这样:
for (int i = 0; i < count; ++i) {
if (i > 0) printf(" ");
printf("%d", data[i]);
}
答案 2 :(得分:-1)
int print_status = 0;
void print(int v){
if(print_status)
printf(" %d", v);
else
print_status = printf("%d", v);
}
e.g。 printf("%d ",A[i][R]);
替换为print(A[i][R]);