1. c语言编程:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
1,2,3,5,8,13,21 ... 从第三项开始,F(n)=F(n-1)+F(n-2),符合斐波那契数列特征。
本题的分数序列,以上述数列的第n项作为n项的分母,以n+1项作为n项的分子。
不懂C语言。
一般来说,分数计算的结果,应该以分数形式精确表达。
写了一段fortran代码,计算这个数列前20项的和。
sum = / 9251704366605890848773498384
近似值为:32.
具体计算结果和fortran代码如下:
2. 用C语言编写:有一个分数序列2/1,3/2,5/3,8/5,13/8,......求出这个数列前20项之和
#include <stdio.h>
double sum(int n)
{
int i;
double part = 0;
for( i = 1.0; i <= n; i++ )
part += (1.0 / i);
return 2 * n - part;
}
int
main(void)
{
printf( "%.18f\n", sum(20) );
return 0;
}
楼主,小数点后的精度你可以根据需要自己调,我选的是18位。
3. c语言编程 有一分数系列 2/1,3/2,5/3,8/5,13/8,21/13,... 求出这个数列前20 项之和
你应该知道Fibonacci数列吧。就是第一个数和第二个数都是1,以后的数都是前面两个数的和,(1,1,2,3,5,8,13。。。。。。)。加点分吧,我帮你做
4. 用C语言编写程序编写分数序列的前20项之和
//分数序列如:2\1,3\2.5\3,8\5.13\8,21\13.......的前20项之和。 x0dx0a#include
5. 用C语言编写程序编写分数序列的前20项之和
//分数序列如:2\1,3\2.5\3,8\5.13\8,21\13.......的前20项之和。
#include<stdio.h>//直接看这一组数列有什么规律,很容易发现,从2/1开始,后一组的分母为前一组的一个分子
//后一项的分子为前一项的分母分子之和,如果用An表示分母,Bn表示分子,则有递推工式,B(n+1)=An::A(n+1)=An+Bn知道这个就很好办了
float getMe(int n)//这个函数就是求第n项的那个数的值
{
float An=2.0;float Bn=1.0;
float temp;
while(--n)
{
temp=Bn;
Bn=An;
An=An+temp;
}
return(An/Bn);}
void main()
{
int n;
float theSum=0.0;
printf("请输入你想要求的前n项的和:");
scanf("%d",&n);
for(;n>0;n--)
{
theSum=theSum+getMe(n);
}
printf("%f",theSum);
}
6. 用C语言的注释语句注释这个问题"有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和."
#include<stdio.h>
#include<stdlib.h>
void main(){
int n=20;
int a[20];
int b[20];
a[0]=2;
a[1]=3;
b[0]=1;
b[1]=2;
int i=0;
for(i=2;i<n;i++)
a[i]=a[i-1]+a[i-2];
for(i=2;i<n;i++)
b[i]=a[i-1]+b[i-2];
double sum=0;
for(i=0;i<n;i++)
sum=sum+a[i]/(b[i]+0.0);
printf("%f\n",sum);
system("pause");
}
7. c语言问题,编一个成,求以下数列前20项之和
#include<stdio.h>
int main()
{
int i,j=2,k=1,t;
double s=0.0;
for(i=1;i<=20;i++)
{
s+=(double)j/k;
t=j;
j=j+k;
k=t;
}
printf("sum=%.6f ",s);
getch();
return 0;
}
8. C语言编程:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
public class Demo11 {
public static void main(String[] args) {
double sum=2/1;
double m=2;//定义分子
double n=1;//定义分母
for(int i=2;i<=20;i++){
m=m+n;
n=m-n;
sum+=(double) m/n; //将分子的类型强制转换成double,否则两个int相除,结果还是int会将小数点后都舍弃。
}
System.out.println(sum);
}
}
//用数组方法来实现
public class Demo2 {
public static void main(String[] args) {
double numerator[]=new double[20]; //创建分子长度为20的浮点型数组
double denominator[]=new double[20]; //创建分母长度为20的浮点型数组
numerator[0]=2;
denominator[0]=1;
double sum=numerator[0]/denominator[0];
for(int i=0;i<19;i++){
numerator[i+1]=numerator[i]+denominator[i];
denominator[i+1]=numerator[i];
sum+=(double)numerator[i+1]/denominator[i+1];
}
System.out.println(sum);
}
}
(8)c语言求分数数列前20项之和扩展阅读
Java数列求和:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。
public class QiuHe {
public static void main(String[] args){
float total=0;
for(int i=0;i<20;i++){
float top= getTop(i+1);
float bottom=getBottom(i+1);
total+=top/bottom;//每一项的值
}
System.out.println(total);
}
//获取分子核心递归方法
public static float getTop(int position){
if(position==1){
return (float)2;
}
if(position==2){
return (float) 3;
}
return getTop(position-1)+getTop(position-2);
}
//获取分母核心递归方法
public static float getBottom(int position){
if(position==1){
return (float) 1;
}
if(position==2){
return (float)2;
}
return getBottom(position-1)+getBottom(position-2);
}
}
9. C语言计算一个分数序列的前20项之和
#include
void
main()
{
int
n;
double
s,
t;
s
=
0;
for
(n
=
1;
n
<=
20;
n++)
{
t
=
1.0
/
(2
*
n);//1为整型,如果结果为浮点型,那么要用1.0,
s
=
s
+
t;
}
printf("前20项之和为:%f",
s);//%d改为%f
getchar();
}