㈠ 圓的代碼用c語言編的(不是VC++或C++編的)
/*調試環境:tc2.0*/
#include <graphics.h>
#include <stdio.h>
#include <math.h>
#include <dos.h>
void move_circle(int x,int y,int r)
{int i,j;
for (i=-r;i<=r;i++)
{j=(int)sqrt(r*r-i*i);
putpixel(x+i,y-j,15);
delay(10000);
putpixel(x+i,y-j,1);}
for (i=r;i>=-r;i--)
{j=(int)sqrt(r*r-i*i);
putpixel(x+i,y+j,15);
delay(10000);
putpixel(x+i,y+j,1);
}
}
main()
{int gdriver=DETECT,gmode;
initgraph(&gdriver,&gmode,"");/*填入TC2.0的所在目錄(在""內),如:"c:\\turboc2"*/
setcolor(1);
circle(300,200,100);
move_circle(300,200,100);
getch();
closegraph();
}
㈡ C語言求圓的各項~
你的程序就是輸入","隔開呀,因為你的兩個%f之間加了「,」,所以你在輸入時應該輸入
1.5,3
我用你的程序已經編譯通過 了
㈢ 怎樣用C語言畫個圓
如果用tc,有自己的繪圖函數
用vc也有自己的畫圖方式
㈣ c語言的畫圓代碼
假設圓心點是(x0,y0),半徑是r
for(x=x0-r;x<=x0+r;x+=o.1)
for(y=y0-r;x<=y0+r;y+=o.1)
line(x,y,x0,y0);
㈤ 用C語言寫出畫一個圓形的代碼
可以參考下面的代碼:
#include<math.h>
main()
{
double y;
int x,m;
for(y=10;y>=-10;y--)
{
m=2.5*sqrt(100-y*y);
for(x=1;x<50-m;x++)
printf(" ");
printf("*");
for(;x<50+m;x++)
printf(" ");
printf("* ");
}
}
(5)圓的c語言擴展閱讀:
for循表達式為:for(單次表達式;條件表達式;末尾循環體){中間循環體;}。
其中,表示式皆可以省略,但分號不可省略,因為「;」可以代表一個空語句,省略了之後語句減少,即為語句格式發生變化,則編譯器不能識別而無法進行編譯。for循環小括弧里第一個「;」號前為一個為不參與循環的單次表達式。
㈥ C語言中關於畫圓程序
#include<stdio.h>
#include<math.h>
main()
{
double y;
int x,m;
for(y=10;y>=-10;y--) //表示圖形的第y行,通過for循環列印所有行
{
m=2.5*sqrt(100-y*y); //用y作為自變數,根據弦長與縱坐標y的函數關系計算出此行上的弦 長的一半也就是兩個星形符號之間的距離的一半,並用m表示。
for(x=1;x<50-m;x++) //以50個字元長度為基準根據弦長來確定每行左數第一個星形的位 置,此位置前全印空格
printf(" ");
printf("*");
for(;x<50+m;x++) //以50個字元寬度為基準來確定每行第二個星形的位置
printf(" ");
printf("*\n");
}
}
//此程序列印的只是個大概的圓形,因為運行輸出窗口裡,相鄰的行距和鄰字元的列距是不相等的,所以語句 m=2.5*sqrt(100-y*y);中的2.5是用來修正此誤差的。可根據具體運行平台適當修改。 如果還看不懂,再問
㈦ 求:C語言,圓的畫法!
圓弧的掃描轉換演算法
(1)圓的特徵
圓被定義為到給定中心位置(xc,yc)距離為r的點集。圓心位於原點的圓有四條對稱軸x=0,y=0,x=y和x=-y。若已知圓弧上一點(x,y),可以得到其關於四條對稱軸的其它7個點,這種性質稱為圓的八對稱性。因此,只要掃描轉換八分之一圓弧,就可以求出整個圓弧的象素集。
圓心在0,0點圓周生成時的對稱變換(參見:P.26圖3-4)
顯示圓弧上的八個對稱點的演算法:
void CirclePoints(int x,int y,int color)
{
drawpixel(x,y,color); drawpixel(y,x,color);
drawpixel(-x,y,color); drawpixel(y,-x,color);
drawpixel(x,-y,color); drawpixel(-y,x,color);
drawpixel(-x,-y,color); drawpixel(-y,-x,color);
}
(2)中點畫圓法(參見:P.29—P.30)
如果我們構造函數 F(x,y)=x2+y2-R2,則對於圓上的點有F(x,y)=0,對於圓外的點有F(x,y)>0,對於圓內的點F(x,y)<0 。與中點畫線法一樣,構造判別式:
d=F(M)=F(xp+1,yp-0.5)=(xp+1)2+(yp-0.5)2-R2
若 d<0,則應取P1為下一象素,而且再下一象素的判別式為:
d=F(xp+2,yp-0.5)=(xp+2)2+(yp-0.5)2-R2=d+2xp+3
若d≥0,則應取P2為下一象素,而且下一象素的判別式為
d=F(xp+2,yp-1.5)=(xp+2)2+(yp-1.5)2-R2=d+2(xp-yp)+5
我們這里討論的第一個象素是(0,R),判別式d的初始值為:
d0=F(1,R-0.5)=1.25-R
圖2.2.1 當前象素與下一象素的候選者
中點畫圓演算法:
MidPointCircle(int r int color)
{
int x,y;
float d;
x=0; y=r; d=1.25-r;
circlepoints (x,y,color);
while(x<=y)
{
if(d<0) d+=2*x+3;
else { d+=2*(x-y)+5; y--;}
x++;
circlepoints (x,y,color);
}
}
為了進一步提高演算法的效率,可以將上面的演算法中的浮點數改寫成整數,將乘法運算改成加法運算,即僅用整數實現中點畫圓法。
(3)例:半徑為6,利用中點畫圓法演算法所畫的點
(4)中點畫圓法圖示
㈧ 怎樣用C語言畫圓
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
char arg[50]={0};
arg[0]= '\ " ';
strcpy(arg+1,argv[0]);
int len=int(strlen(arg));
arg[len]= '\ " ';
HWND hWnd=FindWindow(NULL,arg); //找到程序運行窗口的句柄
HDC hDC=GetDC(hWnd);//通過窗口句柄得到該窗口的設備場境句柄
HPEN hPen,hOldPen; //畫筆
int i=0;
for(;i <500;++i)
SetPixel(hDC,10+i,10+i,0x0000ff);//用畫點的辦法畫一根線,最後一個參數是顏色(32位)
hPen=CreatePen(PS_SOLID,2,0x00ff00);//生成綠色畫筆
hOldPen=(HPEN)SelectObject(hDC,hPen);//把畫筆引入設備場境
MoveToEx(hDC,20,50,NULL); //設置畫線起點
LineTo(hDC,520,550); //畫到終點
Arc(hDC,100,100,300,300,350,500,350,500);//畫圓
SelectObject(hDC,hOldPen);
ReleaseDC(hWnd,hDC);
//下面是對比,表明它確實是控制台程序
printf( "hello console ");
system( "pause ");
return 0;
}
㈨ C語言怎麼畫圓
#include <math.h>#include <stdio.h>#define R 10 //半徑 #define X 10 //圓心x坐標 #define Y 10 //圓心Y坐標 int main(void)
{ int x,y; int m; int i; for(i=Y-R;i>=1;i--)
{ printf("
");
}
for(y=R;y>=-R;y--)
{
m=2*sqrt(R*R - y*y); //橫坐標的偏移量,因為字體長寬比例為2,所以要乘2
for(x=1;x<X+R-m;x++) //列印左半圓
{ printf(" ");
} printf("*"); for(;x<X+R+m;x++) //列印右半圓
{ printf(" ");
} printf("*
");
}
}
㈩ 用C語言輸出一個圓的程序怎麼寫
/*先寫第一個吧,對於C圖形庫了解不多,我想你應該是少包含了哪個
頭文件,或是沒有設置編譯器的圖形庫吧*/
/*在鍵盤上輸入一個數 輸出這個數與10的和,這個程序該怎麼寫*/
#include <stdio.h>
int main(int argc, char *argv[])
{
int n;
printf("enter a integer:");
scanf("%d", &n);
printf("%d + 10 = %d\n", n, n+10);
return 0;
}