- ベストアンサー
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); } よろしくお願いします。
- みんなの回答 (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); } な感じ…。
その他の回答 (4)
- magicalpass
- ベストアンサー率58% (378/648)
どう上手くいかないのか書いてください。 ・コンパイルでエラーが出るのですか? ・実行時にエラーが出るのですか? ・出力が期待した結果と違うのですか? ・「^」は何の演算子を意味していますか? 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); }
お礼
参考にさせていただきます。
- koko_u_u
- ベストアンサー率18% (216/1139)
まあ、確かにそれで計算できたら嬉しいけどね。 「…」を勝手に「+と-が交互で、連続する自然数の2乗」と補完しているのは人間なので無理です。
お礼
わかりずらくてすいません。 長いのでここではあえて省略して書きました。
- Willyt
- ベストアンサー率25% (2858/11131)
100項もの数式をズラズラ並べるのはプログラムとは言えないですよね。 こういう漸化式の計算は 項数がnの和w求める関数を作っておき、引数を100にして答えをプリントするという方法を採るのが普通だし、練習問題としてはそのようなプログラムを作る事を求めているのです。 プログラムというのは闇雲に組めばいいというのではなく、アルゴリズムをしっかり見極めてから、それをプログラム化するのですよ。
お礼
アドバイス有難うございます。 参考にします。
- επιστημη(@episteme)
- ベストアンサー率46% (546/1184)
Cコンパイラは ^ と … を理解できません。 1) int sum = 0; 2) i = 1,2,...100 に対し(3)を行う 3) i が偶数ならi*iをsumから引く i が奇数ならi*iをsumに加える 4) sumをプリントする これをCで書いてください。
お礼
有難うございます。 なんかもうエクセルとごっちゃになっていたようです。
お礼
解答有難うございます。 わかり易かったです。