我是分为两部分弄的,先弄上半部分菱形,再弄下半部分。上半部分运行成功了,但貌似成了死循环,一直不停,下半部分就没运行。不知道哪里出错了。请帮忙看一下,谢谢啦!
int main()
{
int n = 5, i, k, j;
// scanf("%d", &n);
for (i = 1; i <= n; i++)
{
for (k = 1; k <= n - i; k++)
printf(" ");
printf("*");
if (i > 1)
{
for (j = 1; j <= 2 * i - 3; j++)
printf(" ");
printf("*");
}
printf("\n");
}
for (i = n - 1; i > 0; i--)
{
for (k = 1; k <= n - i; k++)
printf(" ");
printf("*");
if (i > 1)
{
for (j = 1; j <= 2 * i - 3; j++)
printf(" ");
printf("*");
}
printf("\n");
}
return 0;
}
可参考:https://blog.csdn.net/qq_39345244/article/details/104468086
#include <stdio.h>
#include <stdlib.h>
int hanshu(int x, int y, int n)
{
if(abs(x)+abs(y)==n-1)
return 1;
else
return 0;
}
int main()
{
int n;
scanf("%d",&n);
int x,y;
for (x=n-1; x>=-n+1; x--)
{
for (y = -n+1; y<=n-1; y++)
{
if(y>=0&&hanshu(x,y,n)==1)
{
printf("*\n");
break;
}
else if(hanshu(x,y,n)==1)
printf("*");
else
printf(" ");
}
}
return 0;
}
供参考:
#include<stdio.h>
int main()
{
int i, j, n;
scanf("%d", &n);
for (i = 0; i < n; i++)
{
for (j = i; j < n; j++)
printf(" ");
for (j = 0; j <= 2 * i + 1; j++)
printf("%c", (j == 0 || j == 2 * i) ? '*' : ' ');
printf("\n");
}
for (i = n - 2; i >= 0; i--)
{
for (j = i; j < n; j++)
printf(" ");
for (j = 0; j <= 2 * i + 1; j++)
printf("%c", (j == 0 || j == 2 * i) ? '*' : ' ');
printf("\n");
}
return 0;
}
稍微改了一点点:
#include<stdio.h>
int main()
{
int n,i,k,j;
scanf( "%d",&n);
for(i=1;i<=n;++i)
{
for(k=1;k<=n-i;++k)
printf(" ");
if(i==1)
printf("*\n");
else
{
printf("*");
for(j=1;j<=2*i-3;++j)
printf(" ");
printf("*\n");
}
}
for(i=1;i<=n-1;++i)
{
for(k=1;k<=i;++k) //这里应该是++k
printf(" ");
if(i==n-1)
printf("*\n");
else
{
printf("*");
for(j=1;j<=2*(n-1)-(1+2*i);++j) //这个地方j<7-2*n是不对的,要这样改才符合规律
printf(" ");
printf("*\n");
}
}
return 0;
}
结果: