这道题很坑
当时被支配了很久...
一开始我是这样解的:
#include<stdio.h>
int main()
{
int k = 0;
while (scanf("%d", &k) != EOF)
{
//上方
int i = 0;
for (i = 0; i < k + 1; i++)
{
int j = 0;
for (j = k + 1 - i; j > 0; j--)
{
printf("* ");
}
printf("\n");
}
//下方
for (i = 1; i < k + 1; i++)
{
int j = 0;
for (j = k - i; j < k + 1; j++)
{
printf("* ");
}
printf("\n");
}
}
return 0;
}
然后牛客网上编译失败...
转到VS2022尝试了以下,自己感觉没毛病啊~
但当我将
这个输出复制出来时...才发现,图形的这些位置还要打印空格...
上代码!
#include <stdio.h>
int main()
{
int n = 0;
//如果输入的是n,其实每行打印n+1组字符(*和空格)
while(scanf("%d", &n) != EOF)
{
int i = 0;
for(i=n; i>=0;i--)
{
int j = 0;
for(j=0; j<=i; j++)
{
printf("* ");
}
//*的后面还有空格
for(j=i; j<n; j++)
{
printf(" ");
}
printf("\n");
}
for(i=1; i<=n; i++)
{
int j = 0;
for(j=0; j<=i; j++)
{
printf("* ");
}
//*的后边还有空格
for(j=i; j<n; j++)
{
printf(" ");
}
printf("\n");
}
}
return 0;
}