c++程序设计设s=1+1⼀2+1⼀3+....+1⼀n,求与八最接近的s的值与其对应的n值。最好用到do。。。while语

2025-04-07 18:54:05
推荐回答(2个)
回答1:

声明一个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;
}

运行结果如下:

回答2:

#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);

}