函数名: circle 功 能: 在给定半径以(x, y)为圆心画圆 用 法: void far circle(int x, int y, int radius); 程序例: #include graphics.h #include stdlib.h #include stdio.h #include conio.h int main(void) { /* request auto detection */ int gdriver = DETECT, gmode, errorcode; int midx, midy; int radius = 100; /* initialize graphics and local variables */ initgraph(gdriver, gmode, ""); /* read result of initialization */ errorcode = graphresult(); if (errorcode != grOk) /* an error occurred */ { printf("Graphics error: %s\n", grapherrormsg(errorcode)); printf("Press any key to halt:"); getch(); exit(1); /* terminate with an error code */ } midx = getmaxx() / 2; midy = getmaxy() / 2; setcolor(getmaxcolor()); /* draw the circle */ circle(midx, midy, radius); /* clean up */ getch(); closegraph(); return 0; }
太谷ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为成都创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!
如果你用 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;k50;++k)
{
rr=rand()%150+50;
x=(rand()%2)*2-1;
y=(rand()%2)*2-1;
for(i=1;i600;++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);
}
}
这个啊。看你这样的星号没有什么规律,很难用调用循环的思路来实现。建议直接用“printf”输出函数实现星号的输出。你懂我的意思吧?
这个函数在前面加了个*号,代表返回值是指针类型,参数是字符串,返回值是字符的函数指针。调用它的时候就可以用他的指针来调用。在main函数中可以这样做:
char (*pt)(char*);
char a[] ="ashjkl";
pt = strlwr;
var = (*pt)(a);
C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
C语言输出如题所示图案的代码如下:
#includestdio.h
int main( )
{
int x;
int i,j,k;
printf("请输入,需要生成图案的行数(单数):");
scanf("%d",x);
k=x/2+1;
for(i=1;i=k;i++)
{
for(j=0;j2*i-1;j++)
printf("*");
printf("\n");
}
for(i=k-1;i=1;i--)
{
for(j=0;j2*i-1;j++)
printf("*");
printf("\n");
}
}
扩展资料:
由题,需要输出这样一个图像,可将其看为一个正三角形与倒三角形的组合。
且对于下图:
*
***
*****
*******
*****
***
*
由行数与*号的关系可得,在对于总行数/2+1的部分,行数*2+1,即为*号的数目,因而得到了前半段图形的代码。
而对于后半部分的倒三角形,其行数可记为,倒数总行数/2...3、2、1行,则可利用循环以及2*行数-1,得到下半部分的图像。
#include math.h
#include graphics.h /*预定义库函数*/
void circlePoint(int x,int y) /*八分法画圆程序*/
{
circle(320+x*20,240+y*20,3);
circle(320+y*20,240+x*20,3);
circle(320-y*20,240+x*20,3);
circle(320-x*20,240+y*20,3);
circle(320-x*20,240+y*20,3);
circle(320-x*20,240-y*20,3);
circle(320-y*20,240-x*20,3);
circle(320+y*20,240-x*20,3);
circle(320+x*20,240-y*20,3);
}
void MidBresenhamcircle(int r) /* 中点Bresenham算法画圆的程序 */
{
int x,y,d;
x=0;y=r;d=1-r; /* 计算初始值 */
while(xy)
{ circlePoint(x,y); /* 绘制点(x,y)及其在八分圆中的另外7个对称点 */
if(d0) d+=2*x+3; /* 根据误差项d的判断,决定非最大位移方向上是走还是不走 */
else
{ d+=2*(x-y)+5;
y--;
}
x++;
delay(900000);
} /* while */
}
main()
{
int i,j,r,graphmode,graphdriver;
detectgraph(graphdriver,graphmode);
initgraph(graphdriver,graphmode," ");
printf("中点Bresenhamcircle算法画圆的程序\n"); /*提示信息*/
printf("注意 |r|=11");
printf("\n输入半径值 r:");
scanf("%d",r);
printf("按任意键显示图形...");
getch();
cleardevice();
setbkcolor(BLACK);
for(i=20;i=620;i+=20) /*使用双循环画点函数画出表格中的纵坐标*/
for(j=20;j=460;j++)
putpixel(i,j,2);
for(j=20;j=460;j+=20) n欢迎光临学网,收藏本篇文章 [1] [2]
$False$
bsp; /*使用双循环画点函数画出表格中的横坐标*/
for(i=20;i=620;i++)
putpixel(i,j,2);
outtextxy(320,245,"0"); /*原点坐标*/
outtextxy(320-5*20,245,"-5");circle(320-5*20,240,2); /*横坐标值*/
outtextxy(320+5*20,245,"5");circle(320+5*20,240,2);
outtextxy(320-10*20,245,"-10");circle(320-10*20,240,2);
outtextxy(320+10*20,245,"10");circle(320+10*20,240,2);
outtextxy(320-15*20,245,"-15");circle(320-15*20,240,2);
outtextxy(320+15*20,245,"15");circle(320+15*20,240,2);
outtextxy(320,240-5*20,"-5");circle(320,240-5*20,2); /*纵坐标值*/
outtextxy(320,240+5*20,"5");circle(320,240+5*20,2);
outtextxy(320,240-10*20,"-10");circle(320,240-10*20,2);
outtextxy(320,240+10*20,"10");circle(320,240+10*20,2);
outtextxy(20,10,"The center of the circle is (0,0) "); /*坐标轴左上角显示提示信息*/
setcolor(RED); /*标记坐标轴*/
line(20,240,620,240); outtextxy(320+15*20,230,"X");
line(320,20,320,460); outtextxy(330,20,"Y");
setcolor(YELLOW);
MidBresenhamcircle(r);
setcolor(BLUE); /*绘制圆*/
circle(320,240,r*20);
setcolor(2);
getch();
closegraph();
}