作者aht (誠實豆沙包)
看板C_and_CPP
標題Re: [問題] "*"畫成圓(c語言)
時間Fri Aug 7 16:45:57 2009
迴圈只需要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
→ MOONRAKER:何必sqrt(),全部都可以用整數計算做完 08/07 17:55
推 VictorTom:混了三天偷偷回, 就是右邊用r*r的意思XD 08/09 22:41
→ VictorTom:話說回來~~用 == 好像畫得出來的不多吧?? 08/09 22:42