编程论坛
注册
登录
编程论坛
→
C语言论坛
【求助】用“*”打印出一个风车图案
Sky_
发布于 2019-12-21 18:34, 2731 次点击
只有本站会员才能查看附件,请
登录
怎么打印出这样的图案
我的思路是先打印出上半部分,下半部分就好整了
但上半部分我没整出来,我可以分别打出左边和右边但没合在一起
只有本站会员才能查看附件,请
登录
长成这样了
6 回复
#2
Sky_
2019-12-21 18:34
#include<stdio.h>
int main ()
{
int i,j,n,t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
int k;
k=2*n+1;
for(i=0; i<=k; i++)
{
if(i>=n+1)
{
for(int q=1; q<=(n-(i-n))*2+1; q++)
{
printf(" ");
}
for(int m=1; m<=2*(i-n)-1; m++)
{
printf("* ");
}
for(int q=1; q<(n-(i-n))*2+1; q++)
{
printf(" ");
}
}
for(j=0; j<=2*(2*n+1)+1; j++)
{
if(i<=(-j+13)&&i>=(j-7)&&j>=7)
{
printf("* ");
}
else printf(" ");
}
printf("\n");
}
}
return 0;
}
这是我的代码 嗯。。。。是错的
#3
纯蓝之刃
2019-12-21 20:21
加一句就好了,别忘了结贴
程序代码:
#include
<stdio.h>
#include
<stdlib.h>
int
main ()
{
int
i,j,k,n;
char
**a;
while
(
1
)
{
scanf(
"
%d
"
,&n);
n=n*
2
+
1
;
//
加一句就好了
a=(
char
**)calloc(n*
2
+
1
,
sizeof
(
char
*));
for
(i=
0
;i<n*
2
+
1
;i++)a[i]=(
char
*)calloc(n*
2
+
1
,
sizeof
(
char
));
for
(i=
0
;i<n;i++)
{
if
(i<=n/
2
)
k=i;
else
k=n-i-
1
;
for
(j=
0
;j<=k;j++)
a[i][n+j]=a[i+n+
1
][n-j]=a[n-j][i]=a[n+j][i+n+
1
]=
'
*
'
;
}
for
(i=
0
;i<n*
2
+
1
;i++)
{
for
(j=
0
;j<n*
2
+
1
;j++)
printf(
"
%c
"
,a[i][j]);
printf(
"
\n
"
);
}
free(a);
//
释放动态内存
for
(i=
0
;i<n*
2
+
1
;i++)
free(a[i]);
}
system(
"
pause
"
);
return
0
;
}
[此贴子已经被作者于2019-12-21 21:37编辑过]
#4
Sky_
2019-12-21 21:18
回复 3楼 纯蓝之刃
谢谢大佬解答
不过运行出来和案例有些不太一样
而且 在不考虑边长的情况下(样例边长为2n-1) 只有n为奇数的时候风车样子才比较正常 偶数时有一点点畸形,特别是n=1,n=2的时候
#5
forever74
2019-12-21 21:58
试试这个,不太严谨。
#include <stdio.h>
#include <math.h>
int main()
{
int n, x, y;
scanf("%d", &n);
while (n)
{
for (y = 2 * n + 1; y >= -2 * n - 1; y--)
{
for (x = -2 * n - 1; x <= 2 * n + 1; x++)
{
if (x == 0 && y == 0)putchar(' ');
else if (abs(x) + abs(y) <= 2 * n + 1 && (x==0||y==0||(double)y/x>fabs((double)y/x)/((double)y/x)))putchar('*');
else putchar(' ');
}
putchar('\n');
}
scanf("%d", &n);
}
}
[此贴子已经被作者于2019-12-21 22:03编辑过]
#6
Sky_
2019-12-23 13:08
回复 5楼 forever74
谢谢大佬解答
不过*之间是要有空格的
所以还是不太对
#7
Sky_
2019-12-23 18:12
回复 3楼 纯蓝之刃
谢谢谢谢
完全对了
不过我还没有完全看懂代码 我再学习学习
1