问道C语言,请指出错误

来源:百度知道 编辑:UC知道 时间:2024/05/29 03:38:42
输入一个正整数repeat (0<repeat<10),做repeat次下列运算:
读入1个正实数 eps,计算并输出下式的值,精确到最后一项的绝对值小于 eps(保留6位小数)。请使用 while 语句实现循环。
计算:1-1/4+1/7-1/10+1/13-1/16+……

我的程序:
#include <stdio.h>
#include <math.h>
int main(void)
{
int denominator;
int repeat, ri;
double eps, item, sum,flag;

scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%le", &eps);
item=1;
sum=0;
flag=1;
do(
flag=flag+1;
sum=sum+pow(-1,flag)*1/(item) ;

denominator=1/item;
item=item+3 ;

}while(denominator<eps);

printf("sum = %.6f\n", sum);
}
}

好像老是觉得我思路没为问题。。。难道又语法错了
高手帮下
可是问题好像还是不能算正确答案
SUM=1.00000 都是这样
但需要做到输入
1 (repeat=1)
1E-4 (eps=1E-4)
输出
sum = 0.835699

#include <stdio.h>
#include <math.h>
int main(void)
{
int repeat, ri;
double eps, item, sum, flag, denominator;///用double类型
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++)
{
scanf("%le", &eps);
item = 1;
sum = 0;
flag = 1;
do
{
flag = flag + 1;
sum = sum + pow(-1,flag) * 1 / (item) ;
denominator = 1 / item;
item = item + 3;
}
while(fabs(denominator) >= eps); ////执行条件是denominator的绝对值大于等于 eps
printf("sum = %.6f\n", sum);
}
return 0;
}

do 后面的小括号换大括号

do后面应该是大括号。