• ベストアンサー

C言語 繰り返しの問題

C言語の初心者です。 キーボードから値を入力して、1から入力された値までの奇数の和を求めて出力するプログラムを作成します。以下のように組んでみましたが、全然うまくいきません。誰か教えていただけませんか? #include<stdio.h> int main(void) { int i,n,sum; sum=0; printf("入力値:",n); scanf("%d",&n); if(n<=0) { printf("\n合計値:0\n"); } else { printf("入力値:\n",n); for(i= 1; i<= n; i=i+2) { if(n%2=1) { sum=sum+i; } } } printf("\n合計値\n",sum); }

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

おかしなところを訂正します。 >for(i= 1; i<= n; i=i+2) (訂正1)for(i= 1; i<= n; i++) >if(n%2=1) (訂正2)if(i%2==1) >printf("\n合計値\n",sum); (訂正3)printf("\n合計値:%d\n",sum); それぞれの理由を以下にまとめます。 訂正1:i++(あるいはi=i+1)でないとその次の商の余りのif文の意味がありません。 訂正2:代入してはif文を使って奇数の判定をする意味がありません。 訂正3:合計値を出力しなくては意味がありません。 他にも「入力値:」などの文字が2重に出力されるパターンがあります。 プログラムのフローを考えながら作ってみてはいかがでしょうか。

noname#46513
質問者

お礼

年末のお忙しい中、本当にありがとうございます。もう一度考え直して、年内には完成したいと思います。ありがとうございました。

その他の回答 (2)

回答No.3

if(n<=0) { printf("\n合計値:0\n"); }    不要。  

noname#46513
質問者

お礼

年末のお忙しい中、お答えいただきましてありがとうございました。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

> printf("入力値:",n); ,n は不要です。nの値を出力する局面ではないです。 > printf("入力値:\n",n); nの値を出力するには、%dなどの書式文字列が必要です。 > for(i= 1; i<= n; i=i+2) iを2つずつ増やしていくのはまずいです。ここはあくまでも 1つずつ増やすようにしないと。 > if(n%2=1) nが偶数かどうかではなく、iが偶数かどうかを判定してください。 また、判定の際、等号は1つでいいですか?

noname#46513
質問者

お礼

年末のお忙しい中、お答えいただきましてありがとうございました。