2个回答
展开全部
如果你用 wintc 或者可以用 graphic.h编程的话
void circ(int x,int y,int r,int c)
{
int i,ty,tx;
for(i=x;i<=x+r;++i)
{
ty=sqrt(pow(r,2)-pow((i-x),2))+y;
putpixel(i,ty,(i+ty)%c);
putpixel(i,2*y-ty,(i+ty)%c);
putpixel(2*x-i,ty,(i+ty)%c);
putpixel(2*x-i,2*y-ty,(i+ty)%c);
}
for(i=y;i<=y+r;++i)
{
tx=sqrt(pow(r,2)-pow((i-y),2))+x;
putpixel(tx,i,(tx+i)%c);
putpixel(tx,2*y-i,(tx+i)%c);
putpixel(2*x-tx,i,(tx+i)%c);
putpixel(2*x-tx,2*y-i,(tx+i)%c);
}
}
四个变量分别是圆心坐标 xy,半径,颜色
原理是先画四分之一个圆,然后用左右上下对称画全
tx=sqrt(pow(r,2)-pow((i-y),2))+x; 也就是圆标准方程的变形
附上一个画圆的程序 wintc1.91图形模板编写的
/* WIN-TC BGI 图形编程模板 */
#include "Conio.h"
#include "graphics.h"
#include"stdlib.h"
#include"time.h"
#include"math.h"
#define closegr closegraph
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}
int main(void)
{
int i,k,x,y,rr;
void circ(int,int,int,int) ;
int pr();
initgr(); /* BGI初始化 */
srand(time(NULL));
for(k=0;k<50;++k)
{
rr=rand()%150+50;
x=(rand()%2)*2-1;
y=(rand()%2)*2-1;
for(i=1;i<600;++i)
circ(320+rr*x,240+rr*y,i,k+2);
}
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}
int pr()
{
static int m=2;
if(m>=9) m=2;
return m++;
}
void circ(int x,int y,int r,int c)
{
int i,ty,tx;
for(i=x;i<=x+r;++i)
{
ty=sqrt(pow(r,2)-pow((i-x),2))+y;
putpixel(i,ty,(i+ty)%c);
putpixel(i,2*y-ty,(i+ty)%c);
putpixel(2*x-i,ty,(i+ty)%c);
putpixel(2*x-i,2*y-ty,(i+ty)%c);
}
for(i=y;i<=y+r;++i)
{
tx=sqrt(pow(r,2)-pow((i-y),2))+x;
putpixel(tx,i,(tx+i)%c);
putpixel(tx,2*y-i,(tx+i)%c);
putpixel(2*x-tx,i,(tx+i)%c);
putpixel(2*x-tx,2*y-i,(tx+i)%c);
}
}
void circ(int x,int y,int r,int c)
{
int i,ty,tx;
for(i=x;i<=x+r;++i)
{
ty=sqrt(pow(r,2)-pow((i-x),2))+y;
putpixel(i,ty,(i+ty)%c);
putpixel(i,2*y-ty,(i+ty)%c);
putpixel(2*x-i,ty,(i+ty)%c);
putpixel(2*x-i,2*y-ty,(i+ty)%c);
}
for(i=y;i<=y+r;++i)
{
tx=sqrt(pow(r,2)-pow((i-y),2))+x;
putpixel(tx,i,(tx+i)%c);
putpixel(tx,2*y-i,(tx+i)%c);
putpixel(2*x-tx,i,(tx+i)%c);
putpixel(2*x-tx,2*y-i,(tx+i)%c);
}
}
四个变量分别是圆心坐标 xy,半径,颜色
原理是先画四分之一个圆,然后用左右上下对称画全
tx=sqrt(pow(r,2)-pow((i-y),2))+x; 也就是圆标准方程的变形
附上一个画圆的程序 wintc1.91图形模板编写的
/* WIN-TC BGI 图形编程模板 */
#include "Conio.h"
#include "graphics.h"
#include"stdlib.h"
#include"time.h"
#include"math.h"
#define closegr closegraph
void initgr(void) /* BGI初始化 */
{
int gd = DETECT, gm = 0; /* 和gd = VGA,gm = VGAHI是同样效果 */
registerbgidriver(EGAVGA_driver);/* 注册BGI驱动后可以不需要.BGI文件的支持运行 */
initgraph(&gd, &gm, "");
}
int main(void)
{
int i,k,x,y,rr;
void circ(int,int,int,int) ;
int pr();
initgr(); /* BGI初始化 */
srand(time(NULL));
for(k=0;k<50;++k)
{
rr=rand()%150+50;
x=(rand()%2)*2-1;
y=(rand()%2)*2-1;
for(i=1;i<600;++i)
circ(320+rr*x,240+rr*y,i,k+2);
}
getch(); /* 暂停一下,看看前面绘图代码的运行结果 */
closegr(); /* 恢复TEXT屏幕模式 */
return 0;
}
int pr()
{
static int m=2;
if(m>=9) m=2;
return m++;
}
void circ(int x,int y,int r,int c)
{
int i,ty,tx;
for(i=x;i<=x+r;++i)
{
ty=sqrt(pow(r,2)-pow((i-x),2))+y;
putpixel(i,ty,(i+ty)%c);
putpixel(i,2*y-ty,(i+ty)%c);
putpixel(2*x-i,ty,(i+ty)%c);
putpixel(2*x-i,2*y-ty,(i+ty)%c);
}
for(i=y;i<=y+r;++i)
{
tx=sqrt(pow(r,2)-pow((i-y),2))+x;
putpixel(tx,i,(tx+i)%c);
putpixel(tx,2*y-i,(tx+i)%c);
putpixel(2*x-tx,i,(tx+i)%c);
putpixel(2*x-tx,2*y-i,(tx+i)%c);
}
}
展开全部
//纯用*符号输出园,园边会不整齐,园半径越大越园
#include<stdio.h>
#include<math.h>
#define rad 19 //超过19只看到部分园,不过园边整齐些
void main()
{
int i,j;
double tmp;
double knum,xnum; //计算空格数和星号数
//输出上半圆
for ( i=0; i<rad; i++)
{
tmp=rad*rad-(rad-i)*(rad-i);
knum=sqrt(tmp)+0.4;
xnum=knum+knum;//得到星号数
knum=rad-knum; //得到空格数
tmp=0;
for ( j=knum; j>0; j--)
{
if (tmp<38.0) //超过80个字符就不要输出了
{
printf(" ");//换成一个空格,出来是椭圆
}
tmp++;
}
for ( j=xnum; j>0; j--)
{
if (tmp<38.0)
{
printf("**");//换成一个*,出来是椭圆
}
tmp++;
}
printf("\n");
}
//输出下半圆
for ( i=rad; i>0; i-- )
{
tmp=rad*rad-(rad-i)*(rad-i);
knum=sqrt(tmp)+0.4;
xnum=knum+knum;
knum=rad-knum;
tmp=0;
tmp=0;
for ( j=knum; j>0; j--)
{
if (tmp<38.0)
{
printf(" ");
}
tmp++;
}
for ( j=xnum; j>0; j--)
{
if (tmp<38.0)
{
printf("**");
}
tmp++;
}
printf("\n");
}
printf("\n");
}
#include<stdio.h>
#include<math.h>
#define rad 19 //超过19只看到部分园,不过园边整齐些
void main()
{
int i,j;
double tmp;
double knum,xnum; //计算空格数和星号数
//输出上半圆
for ( i=0; i<rad; i++)
{
tmp=rad*rad-(rad-i)*(rad-i);
knum=sqrt(tmp)+0.4;
xnum=knum+knum;//得到星号数
knum=rad-knum; //得到空格数
tmp=0;
for ( j=knum; j>0; j--)
{
if (tmp<38.0) //超过80个字符就不要输出了
{
printf(" ");//换成一个空格,出来是椭圆
}
tmp++;
}
for ( j=xnum; j>0; j--)
{
if (tmp<38.0)
{
printf("**");//换成一个*,出来是椭圆
}
tmp++;
}
printf("\n");
}
//输出下半圆
for ( i=rad; i>0; i-- )
{
tmp=rad*rad-(rad-i)*(rad-i);
knum=sqrt(tmp)+0.4;
xnum=knum+knum;
knum=rad-knum;
tmp=0;
tmp=0;
for ( j=knum; j>0; j--)
{
if (tmp<38.0)
{
printf(" ");
}
tmp++;
}
for ( j=xnum; j>0; j--)
{
if (tmp<38.0)
{
printf("**");
}
tmp++;
}
printf("\n");
}
printf("\n");
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询