注册 登录
编程论坛 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
暴君Dentiny2019-11-17 09:26
回复 6楼 纯蓝之刃
帮我看下我的帖子,刚发的那个
1