こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

C言語のプログラムを修正してほしいのですが

#include <stdio.h>

int main(void)
{

int i, sum;

sum = 0;
for (i=1; i<=100; i++){
sum = sum + i;
}
printf("sum=%d\n", sum);

sum = 0; i= 1;
while (i <= 100) {
sum = sum + i;
++i;
}
printf("sum=%d\n", sum);

sum = 0; i = 1;
do {
sum = sum +i;
++i;
} while (i <=100);
printf("sum=%d\n", sum);

return 0;
}

上記のプログラムに修正を加えて、実行結果が

1+3+5+…+n の nを入力してください → 99をキーボードから入力(例)
sum=2500
sum=2500

となるようにしたいです。 nはキーボードから奇数を入力します。
奇数値 nをキーボードから入力して、1からnまでの奇数の総和を
計算するプログラムです。

超暇なときにでも回答お願いします。

投稿日時 - 2011-11-27 10:36:47

QNo.7157085

暇なときに回答ください

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

#3、4です。

#4で書きましたが、質問とは合っていないようです。

質問のプログラムを実行すると、

sum=****
sum=****
sum=****

と3行表示されますが、質問の後半では、

> 1+3+5+…+n の nを入力してください → 99をキーボードから入力(例)
> sum=2500
> sum=2500

の2行しか表示させないんですよね?

どのループを削るか判らないので、適当に削ってください。
質問からは読み取れません。

投稿日時 - 2011-11-27 13:42:37

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(5)

ANo.4

#3です。

もしかして、「for」「while」「do」のループを使うって言うこと?

#include <stdio.h>
int main(void){
  int i, j, sum;
  sum = 0;
  printf("1+3+5+…+n の nを入力してください>");
  scanf("%d", &j);
  if(j%2 == 1){
    for (i=1; i<=j; i+=2){
      sum = sum + i;
    }
    printf("sum=%d\n", sum);
    sum = 0;
    i= 1;
    while (i <= j) {
      sum = sum + i;
      i+=2;
    }
    printf("sum=%d\n", sum);
    sum = 0;
     i = 1;
    do {
      sum = sum +i;
      i+=2;
    } while (i <=j);
    printf("sum=%d\n", sum);
  }else{
    printf("奇数ではありませんでした。");
  }
  return 0;
}

やっぱり「修正」じゃない…。

投稿日時 - 2011-11-27 11:58:55

ANo.3

#include <stdio.h>
int main(void){
  int i, j, sum;
  sum = 0;
  printf("1+3+5+…+n の nを入力してください>");
  scanf("%d", &j);
  if(j%2 == 1){
    for (i=1; i<=j; i=i+2){
      sum = sum + i;
    }
    printf("sum=%d\n", sum);
  }else{
    printf("奇数ではありませんでした。");
  }
  return 0;
}

こういうのを「修正」とは言わない。

投稿日時 - 2011-11-27 11:46:23

ANo.2

プログラムやるなら、これくらいの応用力は欲しいところなんですが....

・このプログラムは、同じ処理をする3つの部分に分けられる、というのは理解してますか?(正確にはまったく同じではありませんが)
・その処理内容は理解してますか?変数sum,iの役割りは理解できていますか?
・上が理解できていれば、
 どこまで足すかを、100ではなく変数nにする方法
 1,2,3と「1から一つずつ増える値」ではなく、1,3,5と「1から二つずつ増える値」にする方法
はすぐにわかると思うのですがどうでしょうか?

まずは「int i, sum;」のところを
int i, sum, n;
n=99 ;
とでもして、変数nまでの奇数を足すプログラムに変更してみましょう。


キーボード入力は実は非常にやっかいなことです。実はCの標準には「キーボードから数値を入力する」機能はありません。
なんですが、とりあえずは、入門書や入門サイトの最初の方に載っている、scanf関数を使うものでいいでしょう。

投稿日時 - 2011-11-27 11:33:03

ANo.1

で、なにがわからんのですか?

投稿日時 - 2011-11-27 11:22:59

あなたにオススメの質問