#include <stdio.h>
void main() {
int i, j, t;
double s=0, delta, epsilon;
scanf("%lf", &epsilon);
for (i=1;;i++) {
t = 0;
for (j=1; j<=i; j++) t += j;
delta = 1.0 / t;
if (delta < epsilon) break;
s += delta; }
printf("误差小于%.2e的数列和: %8.6f\n", epsilon, s);
}
j<=i是为什么 整个循环要怎么看
首先是没有判断条件的for(i;;i++);如果不进行break,就一直执行(死循环);
之后是第二个for(j=1;j<=i;j++) t+=j;求小于i的数 ,即j的每一项和加到t中,由于每次t=0,即第一次t=1,第二次t=1+2,第三次t=1+2+3 ...........;
delta求误差;进行误差判断,符合条件就退出第一个for循环(死循环),否则对误差数列,即delta每一项求和;