注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

HongMain 的博客

关注编程技术: Linux, Windows, C/C++

 
 
 

日志

 
 
 
 

网上看到的一个面试题:利用星号输出画一个任意大小的圆  

2011-08-06 11:33:28|  分类: 编程语言(主要是 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1 /*利用星号输出画一个任意大小的圆*/
 2 #include <math.h>
 3 #include <stdio.h>
 4 
 5 int max(int a, int b)
 6 {
 7     return a > b ? a : b;
 8 }
 9 
10 void print_char(int x1, int x2)
11 {
12     int i;
13     // 计算这一行的宽度,终端最多显示80列
14     int n = max(x1, x2) + 1;
15     n = n > 80 ? 80 : n;
16     for (i = 0; i < n; i++)
17     {        
18         if (i == x1 || i == x2)
19             printf("*");
20         else
21             printf(" ");
22     }
23     printf("\n");
24 }
25 
26 void print_circle(int r)
27 {
28     int x1, x2, y;
29     int d = 2 * r;
30     int offset;
31     for(y = 0; y <= d; y++)
32     {
33         /*终端字符宽高比为2:1*/
34         offset = (int)(0.5 + sqrt((double)(r*- (y-r)*(y-r)))*2.0);
35         x1 = d - offset;
36         x2 = d + offset;
37         print_char(x1, x2);
38     }
39 }
40 
41 int main(int argn, char *argv[])
42 {
43     int r = 5;
44     if (argn > 1)
45         r = atoi(argv[1]);
46     
47     print_circle(r);
48     return 0;
49 }
50 

  评论这张
 
阅读(30)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017