声明一个int型变量n作为分母兼作项数记数变量,声明一个double型变量s记录前n项之和;利用do~while语句,n从1开始到当前项的浮点和小于8时继续循环,否则退出。退出循环后,比较s-8和8-(s-1.0/n),取小者(相等时取前一项)的最后一项的n便是题解。代码如下:
#include "stdio.h"
int main(int argc,char *argv[]){
int n;
double s;
s=n=0;
do{
s+=1.0/++n;
}while(s<8);
if(s-8 > 8-s+1.0/n)
s-=1.0/n--;
printf("s = %f\tn = %d\n",s,n);
return 0;
}
运行结果如下:
#include "stdio.h"
void main()
{
double s=1.0;
int n=1;
do
{
++n;
s+=1.0/n;
}while(s<8);
if((8-s)>(s+1.0/(n+1)-8)
printf("n=%d,s=%lf",n+1,s+1.0/(n+1));
else
printf("n=%d,s=%lf",n,s);
}