一个关于求数列的题
题目:函数fun功能:计算s= 1+1/(1+2)+1/(1+2+3)...1/(1+2+3..n)的和,返回s的值以下是我写的:
float fun(intn)
{
float s;
int i,a,j;
for(j=1;j<=n;j++)
{
for(i=1;i<=j;i++)
{a+=i;}
s +=1/a;
}
return s;
}
为什么这输出的数据特别离谱呢?(其他部分是给定的,不会错) 三个问题:
1、没有主函数,程序就没有入口地址,也就无法运行;
2、变量 a、s 没有赋初值,结果将是无法预知的
3、求助的问题,最好不要发悬赏,因为即使是回答的答案,被你选为最佳答案,除了得到你的鱼币之外,无法得到技术值,而悬赏的求助帖子,被选为最佳答案后,系统给获得最佳答案者的奖励 是:鱼币+3,荣誉+2,技术+1。能回答问题者,没有几个是缺鱼币的,况且,购买了会员之后,鱼币也就一文不值了,所以,大家最看重的还是技术值,这个是花钱买不来的。
以下是我的程序:
#include<stdio.h>
float fun(intn)
{
float a = 0, s = 0;
int i;
for(i = 1;i <= n;i++)
{
a += i;
s += 1.0 / a;
}
return s;
}
int main()
{
int n;
float sum;
scanf("%d",&n);
sum = fun(n);
printf("数列前%d项和为:%f",n,sum);
}
s与a未赋初值 且有1/a 应将a定为float 代码如下
#include<stdio.h>
float fun(intn)
{
float s,a;
int i,j;
for(j=1,s=0;j<=n;j++)
{
for(i=1,a=0;i<=j;i++)
{a+=i;}
s +=1/a;
}
return s; s与a未赋初值 且有1/a 应将a定为float 代码如下
#include<stdio.h>
float fun(intn)
{
float s,a;
int i,j;
for(j=1,s=0;j<=n;j++)
{
for(i=1,a=0;i<=j;i++)
{a+=i;}
s +=1/a;
}
return s; 本帖最后由 jackz007 于 2020-11-30 00:02 编辑
#include <stdio.h>
double fun(const int n)
{
int d , k ;
double s ;
for(s = 1 , d = 1 , k = 2 ; k < n + 1 ; s += 1.0 / (d + k) , d += k , k ++) ;
return s ;
}
int main(void)
{
int d ;
scanf("%d" , & d) ;
printf("%lf\n" , fun(d)) ;
}
页:
[1]