2

したがって、ユーザーを解決しようとしている質問は、正の数を入力することになっています。次に、ユーザーが入力した数まで奇数だけを加算して合計を表示するプログラムを作成しようとしています。したがって、たとえば、ユーザーが4を入力した場合、私のプログラムは4つの奇数を追加する必要があります。1 + 3 + 5 + 7 =16。
私が利用できる唯一のツールは、ステートメント、if、if / else if、whileループおよび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);
            }
        }
    }
}
4

6 に答える 6

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);
    }
}
于 2012-11-15T10:51:20.667 に答える
1
sum = 0;

for (i = 1; i < n*2; i=i+2)
    sum = sum + i;
于 2012-11-15T10:51:32.097 に答える
1

これにより、奇数の合計が得られます。

  if (n>0) 
   {
    total=0;
      for (int i = 1; i < n; i ++){
        if (i%2 == 1)
            total+=i;
      }
   }

nを含める場合は、条件をに変更しますi<=n

于 2012-11-15T10:51:39.283 に答える
1

たぶんあなたは与えられた数までのすべての数の合計を計算する方法を知っていますnか?式は非常に単純です(n * (n+1))/2。奇数のみの合計を取得するのは少し難しいですが、前の式だけを使用できる心配はありません。最初に、与えられた数nまでのすべての偶数の合計が次のようになることに注意してください。

  • (((n/2)* (n/2+1))/2) * 22+4+6+8+...N = 2*(1+2+3+...n/2)Nが偶数の場合(つまり、n / 2 x2までのすべての数値の合計。
  • ((((n-1)/2)* ((n-1)/2+1))/2) * 2Nが奇数の場合

実際、整数除算がある場合、式は常に次のようになります。(((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

この回答は、すべての言語で問題を解決するのに役立つはずです。コードはお任せします。文字通り一行です。

于 2012-11-15T10:58:15.087 に答える
0

奇数にもループを使用します。

for (int i = 0, j = 1; i < n; i++, j += 2) {
    println(j);
    total += j;
}
println(total);
于 2012-11-15T10:53:52.367 に答える
0
int oddSum = 0;
for (int i = 0; i < n; i++){
  oddSum = oddSum + (i*2) + 1;
}
于 2012-11-15T10:55:03.930 に答える