黑马程序员技术交流社区

标题: 关于计算圆的面积的问题 [打印本页]

作者: 1312878967    时间: 2015-8-8 17:58
标题: 关于计算圆的面积的问题
计算r=1到r=10时的圆面积,直到面积area大于100为止
for(int r=1;r<=10;r++){
                              for(float area = 0.0f;area<=100;area=3.14*r*r){
                              printf("半径=%d,面积=%f\n",r,area);
                               break;
                                }
                             }
不知道 这样写可不可以 求大神给看一下 指正一下哈 谢谢啦
作者: 第一梦    时间: 2015-8-9 21:21
你这样肯定是不行的啊,逻辑上就不对,用不到双层for循环的
你可以参考下面的代码,这样写面积不会大于100,如果你想输出大于100后的第一个,就把if语句放printf下边。祝好运!
  1. int r;
  2. for(r=1;r<=10;r++){
  3.     float area=r*r*3.14;
  4.     if(area>100)break;
  5.     printf("r=%d,area=%f\n",r,area);
  6. }
复制代码



作者: Maruka    时间: 2015-8-9 21:34
基础视频中有教程。仔细查看下
作者: 1312878967    时间: 2015-8-18 14:17
第一梦 发表于 2015-8-9 21:21
你这样肯定是不行的啊,逻辑上就不对,用不到双层for循环的
你可以参考下面的代码,这样写面积不会大于100 ...

我知道 你的这个意思 我就是想问问 我的这个为什么不可以啊 能详细说一下吗 谢谢啦
作者: flywithde    时间: 2015-8-18 15:42
内存for循环是一个死循环
作者: leqoqo    时间: 2015-8-18 16:05
你的第二层for循环,永远跑不完
r=1进入循环
第一次
  for(float area = 0.0f;area<=100;area=3.14*1*1)
area=3.14
继续循环  
for(float area = 0.0f;area<=100;area=3.14*1*1)
area=3.14
继续循环
  for(float area = 0.0f;area<=100;area=3.14*1*1)
area=3.14
.....

                          
作者: 庞佳星    时间: 2015-8-18 19:59
第二个循环你想表达什么意思?不懂啊, for(float area = 0.0f;area<=100;area=3.14*1*1)好好去看下for循环,具体的流程结构!!
作者: 第一梦    时间: 2015-8-18 21:55
问题就在第二层循环上,你的写法很特别,思路上不对,以后注意不能随意的改变for里边的东西,虽然说有时候很奇葩的写法也是对的,但是并不推崇这种写法。就是说,代码要"正统"一点。不然其他人看你代码就很难理解了。
作者: 小小羊    时间: 2015-8-18 23:14
break有何用?
作者: wanghui001001    时间: 2015-8-19 08:36
内层循环是一个死循环,外层r = 1时进入内层,r永远=1,而且面积area永远=3.14。
作者: tangbinbin    时间: 2015-8-19 10:11
你的第二层循环条件有问题,视频中有讲解的,
作者: 408205555    时间: 2015-8-19 15:04
楼主,你已经蒙了。for循环()里不可以是float类型的变量作为循环条件。而且你这个逻辑也混乱了。标准代码参照1楼吧
作者: 红双喜    时间: 2015-8-20 00:41
小小羊 发表于 2015-8-18 23:14
break有何用?

>100,跳出循环。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2