• ベストアンサー

等差数列 Cプログラミング

C言語でのプログラムの添削をお願いします。 2+3iの等差数列をi=10まで表示して、さらにその総和を求めるというものなのですが、 #include<stdio.h> main(){ int i; int a=0; int S; for(i=1;i<=10;i++){ a=2+3*i; printf("a=%d\n" ,a); } S=(1/2)*i*(2+a); printf("S=%d\n" ,S); return 0; } このようにしてみたら、 S=(1/2)*i*(2+a); の部分には効果がないと表示され、実際に値が0になってしまいます。 原因がわかりません。 どなたか理解できる方、回答お願いします。

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

  • ベストアンサー
  • A88No8
  • ベストアンサー率52% (836/1606)
回答No.2

こんにちは Integerという数値型は、整数を扱います。したがって(1/2)を計算した段階で結果が 0 のため、(1未満の0.5は、0とされる)その後の乗算は常に結果が 0 になり効果がありません。

amada08
質問者

お礼

やはりそうでしたか。 式を工夫して表せるようにしたいとおもいます。 ありがとうございます。

その他の回答 (2)

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.3

#1間違えた。忘れてくれー><

  • Trick--o--
  • ベストアンサー率20% (413/2034)
回答No.1

C言語の代入演算子は == です。 = は比較演算子です。

関連するQ&A