所以我试图解决用户的问题应该输入任何正数。然后我正在尝试编写一个程序,只添加奇数到用户输入的数字并显示总数。因此,例如,如果用户输入4我的程序应该添加四个奇数。 1 + 3 + 5 + 7 = 16.
我可用的唯一工具是声明,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);
}
}
}
}
答案 0 :(得分:2)
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);
total += (i * 2) + 1;
}
}
println("total : " + total);
}
}
答案 1 :(得分:1)
sum = 0;
for (i = 1; i < n*2; i=i+2)
sum = sum + i;
答案 2 :(得分:1)
这将给你奇数总和。
if (n>0)
{
total=0;
for (int i = 1; i < n; i ++){
if (i%2 == 1)
total+=i;
}
}
如果要包含n,请将条件更改为i<=n
。
答案 3 :(得分:1)
也许您知道如何计算给定数字n
之前的所有数字的总和?公式非常简单:(n * (n+1))/2
。现在得到只有奇数的总和有点棘手但是 - 不用担心你只能使用前面的公式。首先注意到所有偶数的总和,直到给定的数字n为:
(((n/2)* (n/2+1))/2) * 2
如果N是偶数(即所有数字的总和,最多为n / 2倍,因为你有2+4+6+8+...N = 2*(1+2+3+...n/2)
)((((n-1)/2)* ((n-1)/2+1))/2) * 2
如果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
。
这个答案可以帮助您解决所有语言的问题,我将代码留给您。它实际上是一行。
答案 4 :(得分:0)
我也会使用一个循环来表示奇数。
for (int i = 0, j = 1; i < n; i++, j += 2) {
println(j);
total += j;
}
println(total);
答案 5 :(得分:0)
int oddSum = 0;
for (int i = 0; i < n; i++){
oddSum = oddSum + (i*2) + 1;
}