1. 用公式1-1/2+1/4-1/7..... 求s的近似值,直到最后一项的绝对值小于10-4为止。用C语言怎么编程,求答案

如题所述

用一个for循环完成计算。由于分母的增量是首项为0,公差为1的等差数列,所以用一从1开始、增量为1的计数变量i兼作分母的增量;分母用一个从1开始、增量为i的变量n承载,另用一个浮点变量t动态记录每项的绝对值,当t>=题设要求1.0E-4时,将t加(i为奇数)或减(i为偶数)于浮点和变量s,直到t<1.0E-4时为止。代码如下:

#include "stdio.h"
int main(int argc,char *argv[]){
int i,n;
double t,s;
for(s=0.0,t=n=i=1;t>=1.0E-4;n+=i++)//n是分母,i为项序兼作n的增量(首项为0公差为1的等差数列)
s += i&1 ? t=1.0/n : -(t=1.0/n); //t是项绝对值,i从1开始,奇数项取正,偶数项取负将t累加至s
printf("The result is %g %d\n",s,i);//输出结果
return 0;
}

运行结果如下:

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-31
#define PRECISION 0.00001
void main(void){
float lastValue = 0.0f, totalValue=0.0f; //lastValue 最后一项的值,totalValue就是s
int symbol=1, i = 1,j = 1; //symbol用来表示正负号,i是分母,j是分母递增记录
do{
lastValue = ((float)symbol) / i; //必须先强转除号操作数中的一个,不然只会得到0
i+=j; //改变分母为下一次计算的分母
j++; //分母递增值增加
symbol *= -1; //改变符号
totalValue += lastValue;
}while(lastValue > PRECISION || -lastValue > PRECISION); //判断最后一项的绝对值
printf("s is: %f",totalValue );
getch();
}
相似回答