所以我试图解决的问题是,用户应该输入任何正数。然后,我尝试编写一个程序,只将奇数加到用户输入的数字上,并显示总数。例如,如果用户输入4,我的程序应该添加四个奇数。1+3+5+7= 16。
我唯一可用的工具是for statement、if、if/else if、while loop和println。
我只能想出如何打印出奇数。我知道我想创建一个名为total的变量来存储将所有奇数相加的值,但我不知道如何将其应用到程序中。
import acm.program.*;
public class AddingOddNumbers extends ConsoleProgram {
    public void run() {
        int n = readInt("enter a positive nunber: ");
        int total = 0;
        for (int i = 0; i < n; i++) {
            if (n == 1) {
                println(1);
            } else {
                println((i * 2) + 1);
            }
        }
    }
}发布于 2012-11-15 18:58:15
也许你知道如何计算所有数字的和,直到给定的数字n?公式很简单:(n * (n+1))/2。现在只得到奇数的和有点棘手,但是-不用担心,你可以只使用前面的公式。首先请注意,直到给定数字n的所有偶数的和是:
如果N是偶数(即直到n/2乘以2的所有数字的和),这是因为如果N是奇数,你就有奇数,如果N是奇数,你就会有奇数
事实上,如果你有整数除法,公式总是:(((n/2)* (n/2+1))/2) * 2 = (n/2)* (n/2+1)
因此,要计算所有奇数的和,直到n,您只需从所有数字的和中减去偶数的和:
(n * (n+1))/2 - (n/2)*(n/2+1)
事实上,如果你仔细观察,你会注意到1+3+...(2*n-1)总是等于n^2。
这个答案应该可以帮助你解决所有语言的问题,我把代码留给你了。字面上只有一行。
https://stackoverflow.com/questions/13395898
复制相似问题