- ベストアンサー
c言語
c言語で自然数nを入力、2以上n以下の偶数の累積sumを求めるプログラムをfor文を使って作りたいです。 教えていただきたいです。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
何がわからないのか記載がないので、回答しにくい状態です。 まずソースを張ってみてください(補足にでも) わかる方がどこが間違っているのかを教えてくれると思いますよ。 ただ、 偶数って事は、単純に2で割るだけで良いんじゃないかと。 例えば「6」を入力したのであれば、 1,2,3,4,5,6が対象で、 2以上なのですから、2,4,6が対象の数字 2以上で6以下=2+6=8 2,4,6がヒットした=3個なので8x3=24 (nを2で割った数がヒットする数です) これを2で割り12が答え。 合計12が求まればいいだけなので、 for分はいらないと思います。 ポイントは、基数が入力された場合、例えば7だったら、6にする。 if (n&1) n--; /* 最下位ビットが1なら、1を引く */ こんだけで、できるかと
その他の回答 (2)
- AsarKingChang
- ベストアンサー率46% (3467/7474)
回答No.3
この件どうなりました? わからない事が、あるなら掘っておかず、 クリアリングしつつ、いらない情報なら 忘れても別にOKですが。一つクリアできるか?で その後の色々な事がだいぶ変わると思うので、 何か指摘などありましたら、是非補足を おねがいしますね!。
- AsarKingChang
- ベストアンサー率46% (3467/7474)
回答No.2
なお、if 分でやるなら、 if (n>=2 && !(n&1)) { /* 2以上で偶数 */ } for でやるなら、 for (i=2;i<=n;i+=2) { /* iは常に、2以上で偶数になる */ } こんだけでもOK
お礼
#include<stdio.h> int main(void) { int n, i = 2, sum = 0; printf("自然数nを入力してください\n"); scanf_s("%d", &n); for (i = 2; i <= n; i += 2) { sum += i; } printf("2以上%d以下の偶数の累積は%d\n", n, sum); getchar(); getchar(); return 0; } forを使ってこんな感じでできました。 回答ありがとうございました。