日期:2014-05-20  浏览次数:21022 次

两道简单的程序题目,求高手看看
1.1+1/2+1/3+1/4+1/5+...+1/100
2.1^2-2^2+3^2....+99^2-100^2的结果是

public   class   test   {
public   static   void   main(String[]   args)   {
int   sum=0;
for(int   fm   =1;fm <=100;fm++){
sum+=1/fm;
}
//System.out.print( "1+1/2+1/3+1/4....+1/100的结果是: "   +   sum);
}
}

结果是1,我觉得肯定不对!


public   class   test   {
public   static   void   main(String[]   args)   {
int   n,sum=0,   i=-1;
for(n=1;n <101;n++){
sum+=i^(n+1)*(n^2);
}
System.out.print( "1^2-2^2+3^2....+99^2-100^2的和是: "   +   sum);
}
}

帮忙看看

------解决方案--------------------
因为你的sum是int整型,应该用float或double,才能存储小数部分。
------解决方案--------------------
第一题:
public static void main(String[] args) {
// TODO Auto-generated method stub
double sum=0;
for(double fm =1;fm <=100;fm++){
//System.out.println(1/fm);
sum=sum+1/fm;
}
System.out.println( "1+1/2+1/3+1/4....+1/100的结果是: " + sum);

}
你那样编译器算的整除!
------解决方案--------------------
float sum=0;
for(int fm =1;fm <=100;fm++){
sum+=1.0/fm;
}
System.out.print( "1+1/2+1/3+1/4....+1/100的结果是: " + sum);
我的结果:
1+1/2+1/3+1/4....+1/100的结果是:5.187378

long n,sum=0, i=-1;
for(n=1;n <101;n++){
sum+=Math.pow(i, n+1)*(n*n);

错误:
1. sum 应该是float,不是int
2. ^是位移运算符,不是成方运算符。


------解决方案--------------------
a^2-b^2=(a+b)(a-b)