VC驿站

 找回密码
 加入驿站

QQ登录

只需一步,快速开始

搜索
查看: 546|回复: 8

[交流] 学习C语言心得分享 编程如同解题

[复制链接]
38_avatar_middle
最佳答案
0 
在线会员 发表于 2021-12-17 02:07:08 | 显示全部楼层 |阅读模式
本帖最后由 zmrghy 于 2021-12-17 02:11 编辑

学习C语言心得分享  编程如同解题

看似,方法简单,思路明确。
不小心就会,掉进深坑。
简单的方法和明确思路,变成无比疑惑和懊恼。
回头看看,其实选择另外一条路,看似迷雾重重。
也许,坚持一下迷雾过后,就是阳光大道。。。。

和大家分享本人最近又掉进的一个深坑。。。
本人读初中时就曾掉进了此坑中。。。
这次懊恼了俩天,才想起了正确方法。。。。
学习C语言心得分享  编程如同解题
学习C语言心得分享  编程如同解题


  1. #include<stdio.h>
  2. #include<math.h>

  3. #define uint unsigned int

  4. bool poiInTheCir(uint o_x, uint o_y, uint o_r, uint p_x,uint p_y)
  5. {
  6.         //点P在小正方形内部
  7.         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)))
  8.                 return 1;                //返回1, 点P在圆O内部
  9.         //点P不在大正方形内部
  10.         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))
  11.                 return 0;                //返回1, 点P在圆O内部

  12.         //点P在阴影部分时,如何求解??????…………??????

  13. }


  14. void main()
  15. {
  16.         uint o_x=5, o_y=6, o_r=4, p_x=0, p_y=0;
  17.         for(p_x=0; p_x<12; p_x++)
  18.         {
  19.                 for(p_y=0; p_y<12; p_y++)
  20.                 {
  21.                         if( poiInTheCir(o_x, o_y, o_r, p_x, p_y))
  22.                         printf("当点坐标(x=%4d ,y=%4d)时,点在圆内部\n", p_x, p_y);
  23.                 }
  24.         }
  25. }
复制代码


阴影部分,无法计算。。。。。。
回头看看,其实选择另外一条路,看似迷雾重重。
也许,坚持一下迷雾过后,就是阳光大道。。。
学习C语言心得分享  编程如同解题


  1. #include<stdio.h>
  2. #include<math.h>

  3. #define uint unsigned int

  4. bool poiInTheCir(uint o_x, uint o_y, uint o_r, uint p_x,uint p_y)
  5. {
  6.         uint l_x=0, l_y=0;
  7.         double c=0.0;
  8.         l_x=(o_x > p_x)?  o_x-p_x : p_x-o_x;
  9.         l_y=(o_y > p_y)?  o_y-p_y : p_y-o_y;
  10.         c = sqrt((l_x*l_x+l_y*l_y)*1.0);
  11.         if(o_r*1.0 > c)
  12.                 return 1; //返回1,表示点在圆内
  13.         else
  14.                 return 0; //返回0,表示点在圆内
  15. }

  16. void main()
  17. {
  18.         uint o_x=5, o_y=6, o_r=4, p_x=0, p_y=0;
  19.         for(p_x=0; p_x<12; p_x++)
  20.         {
  21.                 for(p_y=0; p_y<12; p_y++)
  22.                 {
  23.                         if( poiInTheCir(o_x, o_y, o_r, p_x, p_y))
  24.                         printf("当点坐标(x=%4d,y=%4d)时,点在圆内部\n", p_x, p_y);
  25.                 }
  26.         }
  27. }
复制代码


其实,就这么简单

评分

参与人数 1驿站币 +2 热心值 +2 收起 理由
58_avatar_small thzzl + 2 + 2 先评后看,我之习惯。

查看全部评分





上一篇:如何才能知道windos有哪些Api函数呢
下一篇:最近在研究网页获取,但是被密码加密难住了,请大神指教
00_avatar_middle
最佳答案
12 
在线会员 发表于 2021-12-17 09:08:59 | 显示全部楼层
本帖最后由 oyxbl 于 2021-12-17 09:29 编辑

if(abs(px-ox)<r && abs(py-ox)<r)printf("当点坐标(x=%4d,y=%4d)时,点在圆内部\n", px, py);
学习C语言心得分享  编程如同解题

点评

不必退了,你不在坑中,你是掉井里了。。。没人捞你了。。。。  发表于 2021-12-18 01:57
惭愧惭愧,,十多年过去了,,增长的只有年龄,,是时候退坑了  发表于 2021-12-17 13:24
头像,辣么像你呀!!!是你孪生兄弟吧!!!  发表于 2021-12-17 11:27
38_avatar_middle
最佳答案
0 
ico_lz  楼主| 发表于 2021-12-17 11:16:43 | 显示全部楼层


  1. void main()
  2. {
  3.         int ox=5, oy=6, or=4, px=0, py=0;
  4.         for(px=0; px<12; px++)
  5.         {
  6.                 for(py=0; py<12; py++)
  7.                 {
  8.                         if(!(poiInTheCir(ox, oy, or, px, py)))
  9.                         {
  10.                                 if(abs(px-ox)<or && abs(py-oy)<or)
  11.                                         printf("x=%3d ,y=%3d 时,点计算错误\n", px, py);
  12.                         }
  13.                         //printf("当点坐标(x=%4d ,y=%4d)时,点在圆内部\n", px, py);
  14.                 }
  15.         }
  16. }
复制代码



x=  2 ,y=  3 时,点计算错误
x=  2 ,y=  9 时,点计算错误
x=  8 ,y=  3 时,点计算错误
x=  8 ,y=  9 时,点计算错误
请按任意键继续. . .


完美主义者(强迫症)就要精确。。。
你的计算是在大正方形中,4个角会出错。。。。
99_avatar_middle
最佳答案
0 
在线会员 发表于 2021-12-23 13:08:29 | 显示全部楼层
rintf("当点坐标(x=%4d,y=%4d)时,点在圆内部\n", p_x, p_y);                 }
98_avatar_middle
最佳答案
0 
在线会员 发表于 2021-12-24 08:56:08 | 显示全部楼层
挺好的代码,收藏
46_avatar_middle
最佳答案
0 
在线会员 发表于 2022-1-1 00:08:12 | 显示全部楼层
有意思,matlab
您需要登录后才可以回帖 登录 | 加入驿站 qq_login

本版积分规则

×【发帖 友情提示】
1、请回复有意义的内容,请勿恶意灌水;
2、纯数字、字母、表情等无意义的内容系统将自动删除;
3、若正常回复后帖子被自动删除,为系统误删的情况,请重新回复其他正常内容或等待管理员审核通过后会自动发布;
4、感谢您对VC驿站一如既往的支持,谢谢合作!

关闭

站长提醒上一条 /2 下一条

QQ|小黑屋|手机版|VC驿站 ( 辽ICP备09019393号-4 )|网站地图wx_jqr

GMT+8, 2022-1-21 10:07

Powered by CcTry.CoM

© 2009-2021 cctry.com

快速回复 返回顶部 返回列表