您的位置:首页 > 其它

c程序基本算法百例之三—绘制圆

2011-05-09 18:58 330 查看
#include<stdio.h>
#include<math.h>
main( )
{
double y;
int x,m;
for(y=10;y>=-10;y--)                    //圆的半径为10
{
m=2.5*sqrt(100-y*y);//计算y对应的列坐标m,2.5是屏幕纵横比调节系数,因为屏幕的行距大于列距,不进行调节显示出来的是椭圆
for(x=1;x<30-m;x++)printf(" ");//图形左侧空白控制
printf("*");                        //圆的左侧
for(;x<30+m;x++)printf(" ");        //圆的空心部分控制
printf("*/n");                      //圆的右侧
}
}
/*
--------------------------------------------------------------------------------------------
**
*                    *
*                              *
*                                  *
*                                        *
*                                          *
*                                            *
*                                              *
*                                                *
*                                                *
*                                                  *
*                                                *
*                                                *
*                                              *
*                                            *
*                                          *
*                                        *
*                                  *
*                              *
*                    *
**
Process returned 256 (0x100)   execution time : 0.688 s
Press any key to continue.
--------------------------------------------------------------------------------------------
*/


思考题:实现函数y=x²的图形与圆的图形叠加显示。

解答:
#include <stdio.h>
#include <math.h>
#define R       10
#define LINE    62
#define HIGHT   20

int
main()
{
double y;
int layer,x,m,n;
for( layer=HIGHT; layer>=-R; --layer)
{
y=layer;
m=(int)(2.5*sqrt(R*R-y*y));
n=(int)(  5*sqrt(y));
for(x=0; x<LINE; ++x)
{
if(y>=0)
{
if(y>R)
{
if (x==31+n  ||  x==31-n)   printf("$");
else                          printf(" ");
}
else
{
if ((x==31+m && x==31+n)||
(x==31-m && x==31-n))   printf("+");
else if  (x==31+m || x==31-m)    printf("*");
else if  (x==31+n || x==31-n)    printf("$");
else                          printf(" ");
}
}
else
{
if  (x==31+m || x==31-m)    printf("*");
else                          printf(" ");
}
}
printf("/n");
}
return 0;
}
/*
output:
---------------------------------------------------------------------------
$                                           $
$                                         $
$                                         $
$                                       $
$                                       $
$                                     $
$                                   $
$                                   $
$                                 $
$                               $
$              *              $
$        *           *        $
$    *                 *    $
$  *                   *  $
+                       +
*$                     $*
*  $                   $  *
*     $               $     *
*      $             $      *
*        $         $        *
*              $              *
*                           *
*                           *
*                           *
*                         *
*                       *
*                       *
*                   *
*                 *
*           *
*
Process returned 0 (0x0)   execution time : 0.141 s
Press any key to continue.
-----------------------------------------------------------------------------
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: