C语言利用循环求和为什么输出结果总是零

#include <stdio.h>#include <math.h>main(){ int i = 1; float sum = 0; while( 1.0/(float)(2*i - 1) < 1e-6 ) { sum = sum + pow(-1,i+1)/(float)(2*i - 1); i = i + 1; } printf("sum=%.3f\n",sum);}
题目:编程计算sum=1-1/3+1/5-1/7+…,
直到最后一项小于1e-6。
要求:
(1)sum定义为float类型。
(2)输入格式为:无输入提示信息和输;入数据输出格式为:"sum=%.3f\n"

第1个回答  2019-01-31
循环条件正好搞反掉了。不是<1e-6,而应该是>=1e-6
题目里"直到小于1e-6"的意思是只要>=1e-6就循环,<1e-6就退出循环,因此循环条件应该是>=1e-6
第2个回答  2018-04-14
循环条件正好搞反掉了。不是<1e-6,而应该是>=1e-6
题目里"直到小于1e-6"的意思是只要>=1e-6就循环,<1e-6就退出循环,因此循环条件应该是>=1e-6本回答被提问者采纳
第3个回答  2018-04-14
1e-6是10^(-6)<1.0/(float)(2*i-1),i = 1; 没进入循环
相似回答