当前位置:编程学习 > JAVA >>

循环求值问题

求13-23+33-43+...973-983+993-1003的值.这个问题用循环做了很久还是没做出来,求助. --------------------编程问答-------------------- 简单呀:    13 做基数 后面一个-、+作为一个组合  等于 13 +10
看有多少组 (-,+)  13+几个10  最后要是多一个    就 -最后一个数 --------------------编程问答-------------------- //计算13-23+33-43+...973-983+993-1003的值
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Administrator
 */
public class Test {
    public static void main(String[] args) {
        int number1 = 13;
        int number2 = 23;
        int sum1 = 0;
        int sum2 = 0;
        int sum = 0;
        
        int time = (1003 - 13)/2;
        
        for(int i = 0; i < time; i ++) {
            sum1 += number1;
            number1 +=20;
        }
        
        for(int j = 0; j < time; j++) {
            sum2 += number2;
            number2 += 20;
        }
        
        sum = sum1 - sum2;
        
        System.out.println(sum);
    }
}
--------------------编程问答--------------------

package test;

public class Add {

/**
 * @param args
 */
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
int result = 0;

int start = 13;

int end = 1003;

int step = 10;

for(int i = start;i<=end;i = i+step)
{
if(i%20 > 10)
{
result = result + i;
}else
{
result = result - i;
}
}

System.out.println(result);


}
}

--------------------编程问答-------------------- 一定要for循环吗。明显的规律啊。 --------------------编程问答--------------------
引用 1 楼 scottxzj 的回复:
简单呀:    13 做基数 后面一个-、+作为一个组合  等于 13 +10
看有多少组 (-,+)  13+几个10  最后要是多一个    就 -最后一个数


你说的对, 把-23作为第一项,33作为第二项,然后993是按等差数列来算的话它是98项,因为偶数项前面又是正数,而且993还是最后一对的偶数项。两两又构成一对,每对的结果为-10,所以结果为13+(10)*49-1003=-500.  

还有一种方法13作为首项,1003是100项。共50对,每对-10,结果为-500. --------------------编程问答--------------------

    public static void main(String[] args)
    {
        int sum=0;
        for(int i=13,j=0; i<=1003; i+=10,j++)
        {
            sum=(j%2==0 ? sum+i : sum-i);
        }
        System.out.println("13-23+33-43+.....+993-1003 = "+sum);
    }
--------------------编程问答-------------------- result: 250 * 2 --------------------编程问答-------------------- 6F的代码清晰明了,我刚才在eclipse试了一下,的确是-500,呵呵 --------------------编程问答--------------------
引用 7 楼 lamar511 的回复:
result: 250 * 2
 

你错了,呵呵!!!!! --------------------编程问答--------------------
引用 3 楼 kong88kang 的回复:
Java code?123456789101112131415161718192021222324252627282930313233package test; public class Add {     /**     * @param args     */    public static void main(String[] args) {        // ……

无聊把你的循环改成一行= =
result+=(i* ((((i/step)&1)==1)? 1:-1));
--------------------编程问答-------------------- 6楼比我好多了,不要看我 --------------------编程问答-------------------- top top top --------------------编程问答-------------------- 蛋疼下

public static void main(String[] args) {
int sum = 0;
for (int i = 13, j = 1; i <= 1003; i += 10, j *= -1) sum += i * j;
System.out.println(sum);
}
--------------------编程问答-------------------- public static void main(String[] args)
    {
       int sum=0;
        for(int i=13,j=0; i<=1003; i+=10,j++)
        {
            sum=(j%2==0 ? sum+i : sum-i);
        }
        System.out.println("sum="+sum);
    } --------------------编程问答-------------------- public static void main(String[] args) {
int sum=0; 
int count=0;
for (int i = 13; i <=1003; i+=10) {
count++;
if(count%2==0){
sum-=i;
}else{
sum+=i;
}
}
System.out.println(sum);
} --------------------编程问答-------------------- private static void Test05(){
int a=0;
int j=23;
for(int i=13;i<54;i+=20){
for(;j<64;){
a+=i-j;
j+=20;
break;
}
}
System.out.println(a);
} --------------------编程问答-------------------- 除 --------------------编程问答-------------------- public int sum() {
int n = 13;
int sum = 0;
int flg = 0;
while(n <= 1003) {
if(flg%2==0) {
sum += n;
}else {
sum -= n;
}
n += 10;
flg++;
}
}
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,