• ベストアンサー

C言語初心者です。

C言語初心者です。 1^2-2^2+3^3-4^2…+99^2-100^2の値を求めるプログラムを作成したいのですが上手くいきません。 どこが足りないのですか? #include <stdio.h> int main(void) { printf("%d", 1^2 - 2^2 + 3^2 - 4^2 … + 99^2 - 100^2); return (0); } よろしくお願いします。

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

  • ベストアンサー
  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.5

#include<stdio.h> int main(void) { int i,sum; sum = 0; for(i=1;i<=100;i++){ if(i%2 == 0){ sum -= i*i; }else{ sum += i*i; } } printf("%d", sum); return (0); } な感じ…。

shorinji36
質問者

お礼

解答有難うございます。 わかり易かったです。

その他の回答 (4)

回答No.4

どう上手くいかないのか書いてください。  ・コンパイルでエラーが出るのですか?  ・実行時にエラーが出るのですか?  ・出力が期待した結果と違うのですか?  ・「^」は何の演算子を意味していますか? 1~100の各整数の2乗値の加減算の結果を得たいのなら 次のように組むことも出来ますが。 #include <stdio.h> #include <math.h> void main() {  int i;  int sum = 0;  for (i = 1; i <= 100; i++) {   if (i % 2 == 1) {    sum += (int)pow(i, 2);   } else {    sum -= (int)pow(i, 2);   }  }  printf("%d", sum); }

shorinji36
質問者

お礼

参考にさせていただきます。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.3

まあ、確かにそれで計算できたら嬉しいけどね。 「…」を勝手に「+と-が交互で、連続する自然数の2乗」と補完しているのは人間なので無理です。

shorinji36
質問者

お礼

わかりずらくてすいません。 長いのでここではあえて省略して書きました。

  • Willyt
  • ベストアンサー率25% (2858/11131)
回答No.2

 100項もの数式をズラズラ並べるのはプログラムとは言えないですよね。 こういう漸化式の計算は 項数がnの和w求める関数を作っておき、引数を100にして答えをプリントするという方法を採るのが普通だし、練習問題としてはそのようなプログラムを作る事を求めているのです。  プログラムというのは闇雲に組めばいいというのではなく、アルゴリズムをしっかり見極めてから、それをプログラム化するのですよ。

shorinji36
質問者

お礼

アドバイス有難うございます。 参考にします。

回答No.1

Cコンパイラは ^ と … を理解できません。 1) int sum = 0; 2) i = 1,2,...100 に対し(3)を行う 3) i が偶数ならi*iをsumから引く   i が奇数ならi*iをsumに加える 4) sumをプリントする これをCで書いてください。

shorinji36
質問者

お礼

有難うございます。 なんかもうエクセルとごっちゃになっていたようです。

関連するQ&A