设n为正整数,求解n使不等式a<1+1/(1+1/2)+1/(1+1/2+1/3)+.......+1(1+1/2+...+1/n)成立,求n.c语言问题!
3个回答
展开全部
/*求解n使不等式a<1+1/(1+1/2)+1/(1+1/2+1/3)+.......+1(1+1/2+...+1/n)成立*/
#include <stdio.h>
float sum(int n)
{
float s=0;
int i;
for(i=1;i<=n;++i)
{
s+=1.0/i;//计算(1+1/2+...+1/n),注意是1.0,这样算出来的才是小数
}
s=1.0/s;//计算1/(1+1/2+...+1/n)
return s;
}
int main()
{
float a,s=0;
int n;
printf("请输入a:");
scanf("%f",&a);
for(n=1;n<10000;++n)
{
s+=sum(n); //计算1+1/(1+1/2)+1/(1+1/2+1/3)+.......+1(1+1/2+...+1/n)
if(s>a) //当前的n使得不等式成立
break;
}
printf("n最小为:%d",n);//输出得到的n
return 0;
}
上午一上午课,有问题Hi我……坐等下课
2013 05 24 6:58
1L
那就这样吧:
/*求解n使不等式a<1+1/(1+1/2)+1/(1+1/2+1/3)+.......+1(1+1/2+...+1/n)成立*/
#include <stdio.h>
float sum(int n)
{
float s=0;
int i;
for(i=1;i<=n;++i)
{
s+=1.0/i;//计算(1+1/2+...+1/n),注意是1.0,这样算出来的才是小数
}
s=1.0/s;//计算1/(1+1/2+...+1/n)
return s;
}
int main()
{
float a,b,s=0,temp;
int n,flag=1,i;
printf("请输入a和b:");
scanf("%f%f",&a,&b);
if(a>b)
{
temp=a;
a=b;
b=temp;
}
for(n=1;n<10000;++n)
{
s+=sum(n); //计算1+1/(1+1/2)+1/(1+1/2+1/3)+.......+1(1+1/2+...+1/n)
if(flag)
{
if(s>a) //当前的n使得不等式成立
{
i=n;
flag=0;
}
}
if(s>b)//当前使得s>b
break;
}
printf("n为:%d",i);//输出得到的n
if((n!=(i+1))&&(a!=b))
printf(",%d",n-1);
printf("\n");
return 0;
}
2013 5 24 22:56
应楼主修改问题,给予新的答案
1L
展开全部
#include<stdio.h>
int main()
{
int a,b,i,j=1,max,min;double t,s,s1,s2;
scanf("%d %d",&a,&b);
for(i=2;;i++)
{
t=(1.0/i);
s1=s1+t;
s2=s1+1;
s=(1.0/s2)+s;j++;
if(s+1>a&&s+1<b) max=j;
if(s+1>a&&s+1<b&&j<min) min=j;
if(s+1>=b) break;
} printf("%d %d",min,max);
return 0;
}
一看就是我西工大苦逼大一学生
int main()
{
int a,b,i,j=1,max,min;double t,s,s1,s2;
scanf("%d %d",&a,&b);
for(i=2;;i++)
{
t=(1.0/i);
s1=s1+t;
s2=s1+1;
s=(1.0/s2)+s;j++;
if(s+1>a&&s+1<b) max=j;
if(s+1>a&&s+1<b&&j<min) min=j;
if(s+1>=b) break;
} printf("%d %d",min,max);
return 0;
}
一看就是我西工大苦逼大一学生
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-25
展开全部
额,poj~~~ 有木有c++的???
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询