问题描述: 设n为正整数,求解n使不等式a 1个回答 分类:综合 2014-11-06 问题解答: 我来补答 /*求解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){\x05float s=0;\x05int i;\x05for(i=1;i<=n;++i)\x05{\x05\x05s+=1.0/i;//计算(1+1/2+...+1/n),注意是1.0,这样算出来的才是小数\x05}\x05s=1.0/s;//计算1/(1+1/2+...+1/n)\x05return s;}int main(){\x05float a,s=0;\x05int n;\x05printf("请输入a:");\x05scanf("%f",&a);\x05for(n=1;n<10000;++n)\x05{\x05\x05s+=sum(n);\x05//计算1+1/(1+1/2)+1/(1+1/2+1/3)+.+1(1+1/2+...+1/n)\x05\x05if(s>a)\x05//当前的n使得不等式成立\x05\x05\x05break;\x05}\x05printf("n最小为:%d",n);//输出得到的n\x05return 0;}上午一上午课,有问题Hi我……坐等下课2013 05 24 6:581L那就这样吧:/*求解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);\x05if(a>b)\x05{\x05\x05temp=a;\x05\x05a=b;\x05\x05b=temp;\x05} 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)\x05\x05if(flag) {\x05\x05\x05if(s>a) //当前的n使得不等式成立\x05\x05\x05{\x05\x05\x05\x05\x05i=n;\x05\x05\x05\x05flag=0;\x05\x05\x05}\x05\x05}\x05\x05if(s>b)//当前使得s>b\x05\x05\x05break; } printf("n为:%d",i);//输出得到的n\x05if((n!=(i+1))&&(a!=b))\x05\x05printf(",%d",n-1);\x05printf("\n"); return 0;}2013 5 24 22:56应楼主修改问题,给予新的答案1L 展开全文阅读