zoukankan      html  css  js  c++  java
  • 在控制用' * '台画一个圆形图案


    在控制台输出一个用 ' * ' 号打印出来的圆形


      通过API文档查询Math类的用法,打印出如下所示的近似圆.只要给定不同半径, 圆的大小也随之改变.

      题目来源:  《疯狂Java讲义(精粹)》李刚著 第二章练习题2(Page 61)

      Math类的常用方法:http://www.cnblogs.com/CocoonFan/archive/2013/01/16/2862133.html

    分析:

      如下图建立直角坐标系,则可以求出坐标(x,y)和(len,y)为放置 * 的地方.其余位置用空格填满.

    编写代码如下:

     1 import java.util.Scanner;
     2 
     3 public class 打印一个圆形 {
     4     public static void main(String[] args) {
     5         System.out.println("请输入圆的半径:");
     6         Scanner sc = new Scanner(System.in);
     7         int r = sc.nextInt();
     8         for (int y = 0; y <= 2 * r; y += 2) {//y的步长为2,改变y的步长可以将圆形变成椭圆
     9             int x = (int)Math.round(r - Math.sqrt(2 * r * y - y * y));
    10             int len = 2 * (r - x);
    11 
    12             for (int i = 0; i <= x; i++) {
    13                 System.out.print(' ');
    14             }   
    15             System.out.print('*');
    16 
    17             for (int j = 0; j <= len; j++) {
    18                 System.out.print(' ');
    19             }
    20 
    21             System.out.println('*');
    22 
    23         } 
    24     }
    25 }

    输出结果:

    1.半径为5:

      

    2.半径为20

      

    3.将步长改为1,半径为10.即将第8行改为:

    for (int y = 0; y <= 2 * r; y += 1) {

    4.步长改为3,半径输入为40:

  • 相关阅读:
    ZOJ-3230-Solving the Problems
    zoj-3410-Layton's Escape
    cin输入超过文本末尾
    sizeof('a')
    WPF TranslatePoint/TransformToVisual 总返回零
    Lock-free multi-threading
    c++0X 用字符串调用函数
    Vim 的c++语法补齐
    Reentrancy VS Thread safe
    内存屏障
  • 原文地址:https://www.cnblogs.com/CocoonFan/p/2870676.html
Copyright © 2011-2022 走看看