以下代码用于按螺旋顺序打印矩阵的元素。该程序运行良好。然而,问题是我用来检查程序的在线编译器不接受输出末尾的尾随空格。谁能给我一些关于如何绕过在输出中添加的最后一个空白的想法?
作为引用,我的代码如下(是的,变量名很糟糕。我正在努力改变我使用随机变量名的习惯!!)
#include <stdio.h>
int main()
{
int a[6][6];
int i, k = 0, l = 0, m=3, n=3, j;
scanf("%d %d",&m, &n);
for(i=0;i<m;i++)
{
for(j=0;j<n;j++)
scanf("%d",&a[i][j]);
}
while (k < m && l < n)
{
for (i = l; i < n; ++i)
printf("%d ", a[k][i]);
k++;
for (i = k; i < m; ++i)
printf("%d ", a[i][n-1]);
n--;
if ( k < m)
{
for (i = n-1; i >= l; --i)
printf("%d ", a[m-1][i]);
m--;
}
if (l < n)
{
for (i = m-1; i >= k; --i)
printf("%d ", a[i][l]);
l++;
}
}
return 0;
}
输入:
1 2 3
4 5 6
7 8 9
输出:
1 2 3 6 9 8 7 4 5{one extra space}
有什么办法可以解决这个问题? (对于糟糕的格式也很抱歉。关于 StackOverflow 的第一个问题!)
最佳答案
你可以在你的for
循环中加入一个if
条件
for (i = l; i < n; ++i)
{
printf("%d", a[k][i]);
if(i < n-1)
printf(" ");
}
关于c - 删除 C 中输出末尾的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22612412/