|
本帖最后由 zmrghy 于 2021-12-17 02:11 编辑
学习C语言心得分享 编程如同解题
看似,方法简单,思路明确。
不小心就会,掉进深坑。
简单的方法和明确思路,变成无比疑惑和懊恼。
回头看看,其实选择另外一条路,看似迷雾重重。
也许,坚持一下迷雾过后,就是阳光大道。。。。
和大家分享本人最近又掉进的一个深坑。。。
本人读初中时就曾掉进了此坑中。。。
这次懊恼了俩天,才想起了正确方法。。。。
- #include<stdio.h>
- #include<math.h>
- #define uint unsigned int
- bool poiInTheCir(uint o_x, uint o_y, uint o_r, uint p_x,uint p_y)
- {
- //点P在小正方形内部
- if(p_x>(o_x - o_r/sqrt(2.0)) && p_x<(o_x + o_r/sqrt(2.0)) && p_y>(o_y - o_r/sqrt(2.0)) && p_x<(o_y + o_y/sqrt(2.0)))
- return 1; //返回1, 点P在圆O内部
- //点P不在大正方形内部
- if(p_x<(o_x - o_r) || p_x>(o_x + o_r) || p_y<(o_y - o_r) || p_x>(o_y + o_y))
- return 0; //返回1, 点P在圆O内部
- //点P在阴影部分时,如何求解??????…………??????
- }
- void main()
- {
- uint o_x=5, o_y=6, o_r=4, p_x=0, p_y=0;
- for(p_x=0; p_x<12; p_x++)
- {
- for(p_y=0; p_y<12; p_y++)
- {
- if( poiInTheCir(o_x, o_y, o_r, p_x, p_y))
- printf("当点坐标(x=%4d ,y=%4d)时,点在圆内部\n", p_x, p_y);
- }
- }
- }
复制代码
阴影部分,无法计算。。。。。。
回头看看,其实选择另外一条路,看似迷雾重重。
也许,坚持一下迷雾过后,就是阳光大道。。。
- #include<stdio.h>
- #include<math.h>
- #define uint unsigned int
- bool poiInTheCir(uint o_x, uint o_y, uint o_r, uint p_x,uint p_y)
- {
- uint l_x=0, l_y=0;
- double c=0.0;
- l_x=(o_x > p_x)? o_x-p_x : p_x-o_x;
- l_y=(o_y > p_y)? o_y-p_y : p_y-o_y;
- c = sqrt((l_x*l_x+l_y*l_y)*1.0);
- if(o_r*1.0 > c)
- return 1; //返回1,表示点在圆内
- else
- return 0; //返回0,表示点在圆内
- }
- void main()
- {
- uint o_x=5, o_y=6, o_r=4, p_x=0, p_y=0;
- for(p_x=0; p_x<12; p_x++)
- {
- for(p_y=0; p_y<12; p_y++)
- {
- if( poiInTheCir(o_x, o_y, o_r, p_x, p_y))
- printf("当点坐标(x=%4d,y=%4d)时,点在圆内部\n", p_x, p_y);
- }
- }
- }
复制代码
其实,就这么简单
|
评分
-
查看全部评分
上一篇: 如何才能知道windos有哪些Api函数呢下一篇: 最近在研究网页获取,但是被密码加密难住了,请大神指教
|