编程论坛
注册
登录
编程论坛
→
C语言论坛
求编写一个程序,在屏幕上输出一个由*组成的空心圆
肖未名
发布于 2019-11-16 15:23, 3033 次点击
求编写一个程序,在屏幕上输出一个由*组成的空心圆
8 回复
#2
自学的数学
2019-11-16 16:50
程序代码:
#include
"
stdio.h
"
#include
"
math.h
"
main()
{
int
R=
10
;
int
i,j;
for
(i=
0
;i<=
2
*R;i++)
{
for
(j=
0
;j<=
2
*R;j++)
{
if
(j==ceil(R-sqrt(R*R-(i-R)*(i-R)))||j==ceil(R+sqrt(R*R-(i-R)*(i-R))))
{
printf(
"
%2s
"
,
"
*
"
);
}
else
{
printf(
"
%2s
"
,
"
"
);
}
}
printf(
"
\n
"
);
}
}
#3
纯蓝之刃
2019-11-16 21:22
程序代码:
#include
<stdio.h>
int
main()
{
int
r=
10
;
int
i,j;
for
(i=
0
;i<=
2
*
2
*r;i+=
2
)
{
for
(j=
0
;j<=
2
*
2
*r;j++)
{
if
(j==(
int
)(
2
*r-sqrt((
2
*r)*(
2
*r)-(i-
2
*r)*(i-
2
*r))-
0.5
)||j==(
int
)(
2
*r+sqrt((
2
*r)*(
2
*r)-(i-
2
*r)*(i-
2
*r))-
0.5
))
{
printf(
"
*
"
);
}
else
{
printf(
"
"
);
}
}
printf(
"
\n
"
);
}
return
0
;
}
#4
肖未名
2019-11-16 21:32
回复 3楼 纯蓝之刃
谢谢
#5
肖未名
2019-11-16 23:24
回复 2楼 自学的数学
请问if(j==(int)(2*r-sqrt((2*r)*(2*r)-(i-2*r)*(i-2*r))-0.5)||j==(int)(2*r+sqrt((2*r)*(2*r)-(i-2*r)*(i-2*r))-0.5))为什么要减0.5呀?
#6
纯蓝之刃
2019-11-16 23:40
回复 5楼 肖未名
相当于四舍五入,强制int类型会将小数舍去比如(int)3.3,得到的值为3,(int)(3.3+0.5)得到的还是3,这就是四舍。
比如(int)3.7,得到的值为3,(int)(3.7+0.5)得到的还是4,这就是五入。
#7
肖未名
2019-11-17 08:43
回复 6楼 纯蓝之刃
谢谢!
#8
肖未名
2019-11-17 09:10
回复 3楼 纯蓝之刃
为什么i+=2很圆,换成i+=1,或i+=3就会不圆了呀?
#9
暴君Dentiny
2019-11-17 09:26
回复 6楼 纯蓝之刃
帮我看下我的帖子,刚发的那个
1