以一個空心圓來舉例。
/* 判斷是是否在圓上 */
int isAtCircle(int x, int y, int r)
{
/* 將(x, y)轉換為相當圓心(r, r)的座標 */
int rx = x - r;
int ry = y - r;
double d = sqrt(rx*rx + ry*ry) - r; /*計算到圓心的距離*/
if(fabs(d) < 0.5) /*判斷到圓心的距離是否為r(允許0.5的誤差)*/
return 1;
else
return 0;
return (int)d;
}
void printCircle(int r)
int x, y;
for (y=0; y<2*(r+1); y++)
for (x=0; x<2*(r+1); x++)
if (isAtCircle(x, y, r)) /*如果這個點在圓上,列印"*",否則,列印" "*/
printf("* "); /*因為字元高比寬大,所以加一個空格調整外觀*/
printf(" ");
printf("\n");
int main() {
int r;
/* 輸入圓的半徑 */
printf("輸入圓半徑\nr = ");
scanf("%d", &r);
printCircle(r);
最後的結果是下面這樣的。
以一個空心圓來舉例。
/* 判斷是是否在圓上 */
int isAtCircle(int x, int y, int r)
{
/* 將(x, y)轉換為相當圓心(r, r)的座標 */
int rx = x - r;
int ry = y - r;
double d = sqrt(rx*rx + ry*ry) - r; /*計算到圓心的距離*/
if(fabs(d) < 0.5) /*判斷到圓心的距離是否為r(允許0.5的誤差)*/
return 1;
else
return 0;
return (int)d;
}
void printCircle(int r)
{
int x, y;
for (y=0; y<2*(r+1); y++)
{
for (x=0; x<2*(r+1); x++)
{
if (isAtCircle(x, y, r)) /*如果這個點在圓上,列印"*",否則,列印" "*/
printf("* "); /*因為字元高比寬大,所以加一個空格調整外觀*/
else
printf(" ");
}
printf("\n");
}
}
int main() {
int r;
/* 輸入圓的半徑 */
printf("輸入圓半徑\nr = ");
scanf("%d", &r);
printCircle(r);
return 0;
}
最後的結果是下面這樣的。