回覆列表
  • 1 # 重蔚自留地

    以一個空心圓來舉例。

    /* 判斷是是否在圓上 */

    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;

    }

    最後的結果是下面這樣的。

  • 中秋節和大豐收的關聯?
  • 誰知道《回家的慾望》主題曲中文歌詞?