为啥进不了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;

你这个程序有问题,循环条件fabs(u)<=a,就是说只有这个条件成立,才能进入循环。
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了,就结束循环了。

参考技术A 输入的a小于1吧!条件写反了吧教改成fabs(u)>a吧!否则第一次就不满足条件直接退出循环了!for(e0;e1;e2)…if(…)break;if(…)continue;的执行逻辑如下
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的所有数

PHP JSON循环输出数组某个值,求大神解答

python请问for循环嵌套执行顺序是怎样的?求大神指点!

java循环越跑越慢为啥?高手进

mac上运行eclipse怎么也解析不了json,郁闷,总是提示缺少jar包,但下了一万个还是不行,求大神指点!