当前位置: 代码迷 >> C语言 >> 想过二级C的朋友进来!(编程题)
  详细解决方案

想过二级C的朋友进来!(编程题)

热度:123   发布时间:2005-10-08 18:29:00.0
想过二级C的朋友进来!(编程题)
偶以后每天都会发个二级C的编程题上来, 希望各位学C的新手支持偶啦,愿与大家互相学习,共同进步! 今天的题: 输入n输出s,n的范围是大于1小于100,公式s=1+(1+2^0.5)+(1+2^0.5+3^0.5)+(1+2^0.5+3^0.5+……+n^0.5)
搜索更多相关的解决方案: 朋友  

----------------解决方案--------------------------------------------------------
偶做的:
#include<math.h>
#include<stdio.h>
double fun(int n){
int i,j;
double sum0=0,sum1=0;
for(i=1;i<=n;i++){
  for(j=1;j<=i;j++)
   sum0+=sqrt(j);
  sum1+=sum0;sum0=0;
}
return sum1;
}
main()
{int n;
printf("enter n:\n");
scanf("%d",&n);
if((n<=1)||(n>=100)){printf("data error!retry!");scanf("%d",&n);}
printf("the s=%lf",fun(n));
}
----------------解决方案--------------------------------------------------------

只用一个循环: #include <math.h> int main() { int i,n; float sum;

printf("please input numner n:\n"); scanf("%d",&n); for(i=0;i<=n;i++) sum=2*sum+sqrt(i); printf("The sum is %f",sum); getch(); }


----------------解决方案--------------------------------------------------------
楼上的看着怪怪的~~
----------------解决方案--------------------------------------------------------
三楼的程序有问题喔,得不到预期的结果,给N输入20则输出为S=534.188884
错在:
s(n)-s(n-1)=1+2^0.5+3^0.5+4^0.5+……+n^0.5
而不是等于s(n-1)+n^0.5
所以不能用sum=2*sum+sqrt(i)求和
不过三楼的想法很好,很有启发性!

[此贴子已经被作者于2005-10-9 0:39:55编辑过]



----------------解决方案--------------------------------------------------------

#include&lt;math.h&gt;
main(){
   double sum;
   int n,i;
   printf("Input n(1&gt;=n&lt;=100)");
   scanf("%d",&amp;n);
   if(!(n&gt;=0&amp;&amp;n&lt;=100))
        { printf("Error !!  Retry!");scanf("%d",&amp;n); }
   else
        for(i=1;i&lt;=n;i++)
              sum=2*sum+sqrt(i);
        printf("%f",sum)  ;
}
----------------解决方案--------------------------------------------------------
楼上的:if(!(n&gt;=0&amp;&amp;n&lt;=100))中的"&amp;&amp;"应改为"||"
另外跟三楼的错误一样"sum=2*sum+sqrt(i);"这个表达式不能得到题目要求的结果
给N输入20则输出为S=534.188884
检验一下


----------------解决方案--------------------------------------------------------
最重要的是当N大于20或者更多的情况怎么办????????

----------------解决方案--------------------------------------------------------
一样的啊,我给的只是N=20只是为了检验程序的正确性,N&gt;20不妨碍啊
----------------解决方案--------------------------------------------------------
n太大就会出现益出问题, 考虑没?
----------------解决方案--------------------------------------------------------
  相关解决方案