额 马上开学了 看到这么一个题 画圈圈啊

 

好吧 闲的没事儿 解解

还解了一下方程

java般

 1 /*=============================================================================
2 # FileName: drawCircle.java
3 # Desc:
4 # Author: yangyang
5 # Email: duoduo3_69@163.com
6 # HomePage:
7 # Version: 0.0.1
8 # LastChange: 2012-02-17 16:23:32
9 # History:
10 =============================================================================*/
11 import java.lang.Math;
12 public class drawCircle
13 {
14 public static void main(String[] arg)
15 {
16 draw(20);
17 }
18 static void draw(double r)
19 {
20 //圆用星星来画
21 //横坐标x,纵坐标y
22 //由圆的方程(x-r)^2+(y-r)^2 = r ^ 2 解出
23 //x = r - sqrt(2ry - y^2)
24 //local = x,即星星的横坐标
25 double local = 0;
26 //方程里面开方的部分
27 double sqnumber = 0;
28 //用2 * row行来画这个圆
29 int row = 10;
30 //y = r/row * i;
31 double y = r / row;
32 //需要输出空格的个数
33 long many = 0;
34 for( int i = 0; i < row ; i++ )
35 {
36 sqnumber = y * i * ( 2 * r - y * i);
37 local = r - Math.sqrt(sqnumber); // local = r(1-sqrt(i/5(2 - i/5)))
38 //空格数为整数,用round转换一下
39 many = Math.round(local);
40 printBlank(many);
41 System.out.print("*");
42 printBlank( Math.round(2 * (r - many)));
43 System.out.print("*\n");
44 }
45
46 for( int i = row - 1; i >= 0 ; i-- )
47 {
48 sqnumber = y * i * ( 2 * r - y * i);
49 local = r - Math.sqrt(sqnumber); // local = r(1-sqrt(i/5(2 - i/5)))
50 many = Math.round(local);
51 printBlank(many);
52 System.out.print("*");
53 printBlank( Math.round(2 * (r - many)));
54 System.out.print("*\n");
55 }
56 }
57 static void printBlank(long many)
58 {
59 for(int i = 0; i < many; i++)
60 {
61 System.out.print(" ");
62 }
63 }
64 }

 

c++

 1 /*=============================================================================
2 # FileName: drawCircle.cpp
3 # Desc:
4 # Author: yangyang
5 # Email: duoduo3_69@163.com
6 # HomePage:
7 # Version: 0.0.1
8 # LastChange: 2012-02-17 18:13:37
9 # History:
10 =============================================================================*/
11 #include<iostream>
12 #include<cmath>
13 using namespace std;
14 class Circle
15 {
16 public:
17 Circle();
18 Circle(double radius);
19 void draw();
20 protected:
21 //输出空格
22 void printBlank(int many);
23 private:
24 // 半径
25 double r;
26 };
27
28 Circle::Circle()
29 {
30 }
31 Circle::Circle(double radius):r(radius)
32 {
33 }
34 void Circle::draw()
35 {
36 double local = 0;
37 double sqnumber = 0;
38 int row = 10;
39 double y = r / row;
40 int many = 0;
41 for( int i = 0; i < row ; i++ )
42 {
43 sqnumber = y * i * (2 * r - y * i);
44 local = r - sqrt(sqnumber);
45 many = floor(local);
46 printBlank(many);
47 cout << "*";
48 printBlank(floor( 2 * ( r - many)));
49 cout << "*" << endl;
50 }
51 for( int i = row -1; i >= 0 ; i-- )
52 {
53 sqnumber = y * i * (2 * r - y * i);
54 local = r - sqrt(sqnumber);
55 many = floor(local);
56 printBlank(many);
57 cout << "*";
58 printBlank(floor( 2 * ( r - many)));
59 cout << "*" << endl;
60 }
61 }
62
63 void Circle::printBlank(int many)
64 {
65 for( int i = 0; i < many ; i++ )
66 {
67 cout << " ";
68 }
69 }
70
71 int main()
72 {
73 Circle a(20);
74 a.draw();
75 return 0;
76 }

python

 1 '''
2 #=============================================================================
3 # FileName: drawCircle.py
4 # Desc:
5 # Author: yangyang
6 # Email: duoduo3_69@163.com
7 # HomePage:
8 # Version: 0.0.1
9 # LastChange: 2012-02-17 18:13:55
10 # History:
11 #=============================================================================
12 '''
13 import math
14 class Circle:
15 def __init__(self,radius = 0):
16 self.__r = radius
17 def printBlank(self,many):
18 for i in range(many):
19 print " ",
20 def draw(self):
21 row = 10
22 y = self.__r /row
23 array_i = range(row)
24 for i in array_i:
25 sqnumber = y * i * ( 2 * self.__r - y * i)
26 local = self.__r - math.sqrt(sqnumber)
27 many = int(math.floor(local))
28 self.printBlank(many)
29 print "*",
30 self.printBlank(int(math.floor( 2 * (self.__r - many))))
31 print "*"
32 for i in array_i[::-1]:
33 sqnumber = y * i * ( 2 * self.__r - y * i)
34 local = self.__r - math.sqrt(sqnumber)
35 many = int(math.floor(local))
36 self.printBlank(many)
37 print "*",
38 self.printBlank(int(math.floor( 2 * (self.__r - many))))
39 print "*"
40
41 if __name__ == "__main__":
42 a = Circle(15)
43 a.draw()




爱的

posted on 2012-02-17 18:24  duoduo3_69  阅读(351)  评论(0编辑  收藏  举报