为啥进不了for循环,得到的结果总是0? 求大神指教啊!!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为啥进不了for循环,得到的结果总是0? 求大神指教啊!!相关的知识,希望对你有一定的参考价值。
#include<iostream>
#include<cmath>
using namespace std;
int main()
double a=0,pi=0,u=1.0;
int n=1,s=1;
cin>>a;
for(;fabs(u)<=a;)
pi=pi+s*u;
n=n+2;
s=-s;
u=1.0/n;
cout<<4*pi<<endl;
return 0;
u=1,那a一定要输入一个大于1的数,才能进入循环。
可是如果a大于1的话,循环体中的u是越来越小的,于是成了死循环,再也不能退出了。
建议把这个改成大于号,然后在输入a时候输入一个小于1的数,比如0.0000001,这样会循环一段时间以后u<a,完成计算。追问
可是我在fabs(u)<=a前后都有个分号,表明这是结束条件,eps是个很小的数,表示精度的
追答是啊,这个结束条件,一开始就满足了,所以就结束了,就不进去了。
追问我 的a是个很小的数,u开始是1,u不会比a小啊,u后来等于1/n,只有在n很大时才会比a小
追答结束条件的意思是,这个结果为真的时候进入循环。你正好搞反 了
比如for(i=0;i=10了,就结束循环了。
e0;
startloop:
if(!e1)goto exitfor//for安排的退出测试
…
if(…)goto exitfor;//自己安排的退出测试
…
if(…)goto startloop;//自王
…
e2;
exitfor:追问
我写的是结束条件,前面没有开始条件,这样可以吗?
追答c语言的循环都是当型循环,无一例外,只有条件符合,才执行相应的循环语句,条件不符退出。你写退出条件的话别用c,c x x!c,cxx只有当型循环,没有直到型循环,自己把条件取反不就行了!c语言已经流行这么多年了,都出好几个标准了,可是一直没有直到型循环,好象也没有几个程序员抱怨这一点!不习惯的话,将就用吧!cxx也是延用c的这一习惯,c井,java也一样吧!
求大神,c语言怎么用for循环语句输出1到100的所有质数,我这么做结果出来的是2到100的所有数
求大神,c语言怎么用for循环语句输出1到100的所有质数,我这么做结果出来的是2到100的所有数,哪里做错了吗
参考技术A for(a=2;a<=100;a++)for(i=2,t=0;i<a;i++)
if(a%i==0)
t=1;
break;
if(t==0)
cout<<a<<" ";
追问
那里不是t++吗
追答t++的意义何在,已经确认该数不是质数了,为什么还要循环
追问老师说那相当于一个计数器,之前也是这么算的
那我之前那个哪里错了吗心好累
追答我知道是计数,记录的是数a的除了1和a以外的因子,可是这个的意义何在?程序只要判断到存在非1和a的因子就可以确认数a不是质数,为什么还要继续运算,纯粹是在浪费资源
仔细看区别,if(t==0)后无分号,而且t也没有初始化
😭😭😭我听不懂……算了,我太笨了
本回答被提问者采纳 参考技术B 吧i的初始值改为1以上是关于为啥进不了for循环,得到的结果总是0? 求大神指教啊!!的主要内容,如果未能解决你的问题,请参考以下文章
ibatis中sqlmapExecutor.executeBatch()怎么返回成功的记录数为啥总是返回0 求大神
求大神,c语言怎么用for循环语句输出1到100的所有质数,我这么做结果出来的是2到100的所有数