Re: [問題] "*"畫成圓(c語言)

看板C_and_CPP作者 (誠實豆沙包)時間15年前 (2009/08/07 16:45), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/3 (看更多)
迴圈只需要2*r的長度 而圓心在(r,r) 迴圈中在一個判斷式if(sqrt((i-r)*(i-r)+(j-r)*(j-r)) == r) 若為true則printf("%c",c) 這樣應該可以滿足你要的要求了.... for(i=0;i<2*r;i++) { for(j=0;j<2*r;j++) { if((int)sqrt((i-r)*(i-r)+(j-r)*(j-r)) == r) { printf("%c",c); } else { printf(" ") } } } 若圓的解析度要高一點... 那i,j就用float去計算囉... ※ 引述《milkya (拜託我想要變瘦)》之銘言: : 這是一個以星號畫出斜線的範例 : 在DEV-C裡面需要先引入參數半徑R跟字元 : 我的問題是如何將for迴圈的內容 : 改成可以畫出一個半徑為R圓以字元*排列 : #include <stdio.h> : #include <math.h> : int main(int argc, char *argv[]) : { : int r, x, y; : char c; : sscanf(argv[1],"%d",&r); : sscanf(argv[2],"%c",&c); : for (y=0;y<=r;y++) : { : for (x=1;x<3*y;x++) : printf(" "); : printf("%c\n",c); : } : getchar(); : return 0; : } : 我大概猜第一個for應該改成 (y=0;y<=2*r;y++) : 但是下一層我沒有頭緒希望大家幫幫我 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.124.205.246

08/07 17:55, , 1F
何必sqrt(),全部都可以用整數計算做完
08/07 17:55, 1F

08/09 22:41, , 2F
混了三天偷偷回, 就是右邊用r*r的意思XD
08/09 22:41, 2F

08/09 22:42, , 3F
話說回來~~用 == 好像畫得出來的不多吧??
08/09 22:42, 3F
文章代碼(AID): #1AU-d6gj (C_and_CPP)
文章代碼(AID): #1AU-d6gj (C_and_CPP)