C++源程序:输入一个正整数n ,输出2/1+3/2+5/3+8/5+……的前n项100项之和

如题所述

1、首先,定义三个变量,正整数、除2的余和计算次数。

2、输入一个正整数,保存在变量num中。

3、用do-while语句执行循环,条件是计算后的num值不为0。

4、计数变量累加1,实现计算次数的统计。

5、对整数num用2取余,保存在变量r中。

6、用num除2的方式,计算正整数的商。

7、输出正整数转换为二进制数的过程。

8、最后,输出十进制数num转换为二进制数所需的次数。

9、运行程序,输入一个正整数后,计算机就会输出转换为二进制数的过程,同时输出正整数转换为二进制数,所计算的次数。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-03-30
//编写程序,输入一个正整数N(N>0),计算SUM=2/1 + 3/2 + 5/3 + 8/5 +...的前N项之和。
//注意:序列从第2项起,每一项的分子是前一项分子与分母的和,分母是前一项的分子。
#include <stdio.h>
int main()
{
double a=2,t;
double b=1;
double n=0,num=1;
double sum=0;
printf("请输入N:");
scanf("%lf",&n);
while(num<=n){
sum=sum+a/b;
t=b;
b=a;
a=t+b;
num++;
}
printf("前%f项之和是:%.3f\n",n,sum);
}
第2个回答  2013-11-17
以下是求前n项的和:#include<iostream.h>void main(){ int n;cout<<"n=";cin>>n;double temp=0.0;int count=0,x=1,y=2;while(count<n){temp+=(double)y/x;int temp1=x;x=y;y+=temp1;count++;}cout<<"前"<<n<<"项之和为:"<<temp<<endl;}
第3个回答  2013-11-17
#include "iostream.h"void main( void )
{
int i,n;
double sum=0.;
double d1=2.,d2=1.,t;
cout<<"input n: ";
cin>>n;
sum=d1/d2;
for(i=1;i<n;i++)
{
t=d1;
d1=d1+d2;
d2=t;
sum+=d1/d2;
}
cout<<sum<<endl;
}
第4个回答  推荐于2018-03-07
1.C语言:
#include <stdio.h>
void main()
{
int a=2;
int b=1;
int N=0;
float Y=0;
printf("请输入N:");
scanf("%d",&N);
while(a<=N)
{
Y=Y+a/b;
b=a;
a=a+b;

}
printf("前 %d 项之和是:%.2f\n",N,Y);
}
2.C++:
#include <iostream>
using namespace std;
void main()
{
int a=2;
int b=1;
int N=0;
float Y=0;
cout<<"请输入N:";
cin>>N;
while(a<=N)
{
Y=Y+a/b;
b=a;
a=a+b;
}
cout<<"前"<<N<<"项之和是:"<<Y<<endl;
}本回答被网友采纳
相似回答