• ベストアンサー

C言語の課題

1、整数型の変数を2個だけ使い、キーボードから5個の整数を読み込み負の整数のみの和を表示プログラムを作れ 2、1、の問題について使える変数を3個に増やしたうえでwhile文を使ったプログラムを作れ 3、1、の問題について使える変数を3個に増やしたうえfor文を使ったプログラムを作れ 1を作ろうとするとかなり長くなってしまうのです… ヒントでもいいので教えてください。

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

  • ベストアンサー
回答No.15

 連休も今日まで。明日から授業が始まるでしょうから回答しましょう。ここで質問したついでに、課題にない do~while も覚えてしまいましょう。これで繰り返し文のカラクリをマスターしましたね。  なお、main()プログラムは「int main(void)」+「return 0;」の組み合わせで覚えておくことを勧めます。理由は gccで(コンパイラーによっては) warningが出るからです。 /* 回答1 * #include <stdio.h> int main(void) { // この定番を覚えよう。 int a, b; // 変数を2個使う。 b = 0; // まず、合計をゼロに設定する。 printf("Input a1: "); // わかるように入力をうながして scanf("%d", &a); // データを取り込む。 if (a < 0) // もし、aが負ならば b += a; // 加算する(b = b + a;)。 printf("Input a2: "); // 以下、これを残り4回繰り返す。 scanf("%d", &a); if (a < 0) b += a; printf("Input a3: "); scanf("%d", &a); if (a < 0) b += a; printf("Input a4: "); scanf("%d", &a); if (a < 0) b += a; printf("Input a5: "); scanf("%d", &a); if (a < 0) b += a; printf("result= %d\n", b); // 最後に、合計を表示する。 return 0; // int main() ゆえ、システムにゼロを返す。 } */ /* 回答2 #include <stdio.h> int main(void) { int a, b, c; // 変数を3個使う。 b = 0; // まず、合計を0にする。 c = 0; // カウントも0にする。 while(c < 5) { // カウントが5以下なら {} を実行し printf("Input a%d: ", c); // 以下、回答1と同じ。 scanf("%d", &a); if (a < 0) b += a; c += 1; // カウントを1つ増やす( c++)。 } printf("result= %d\n", b); // 最後に、合計を表示する。 return 0; } */ /* 回答3 #include <stdio.h> int main(void) { int a, b, c; // 変数を3個使う。 b = 0; // まず、合計を0にする。 for (c = 0; c < 5; c += 1) { // ループを5回繰り返し、 printf("Input a%d: ", c); // 以下、回答1,2に同じ。 scanf("%d", &a); if (a < 0) b += a; } printf("result= %d\n", b); return 0; } */ /* ついでに、do~while も覚えよう。*/ #include <stdio.h> int main(void) { int a, b, c; // 変数を3個使う。 b = 0; // まず、合計を0にする。 c = 0; // カウントも0にする。 do { printf("Input a%d: ", c); // 以下、回答1と同じ。 scanf("%d", &a); if (a < 0) b += a; c += 1; // カウントを1つ増やす( c++)。 } while (c < 5); // カウントが5以下なら do{ へ printf("result= %d\n", b); // 最後に、合計を表示する。 return 0; }

wing444
質問者

お礼

遅くなってしまいました。すいません。 課題は無事(?)提出しました。ありがとうございます。 提出はしたもののどこが間違っているか教えてくれないので回答を載せてくれて本当にたすかります。 (教えてくれないのが当たり前なのでしょうか…?)

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (14)

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.4

200行って....どんなやりかたしようとしてるんですか(^^; 入力 if (判定) { 計算 } 1回分は、これだけでできます。 これに出力と、いつものお決まりの#include~とか足しても,50行あれば書けますよ。

wing444
質問者

補足

両方が負の場合 片方が負の場合 両方が正の場合 と途中で入力した数字も場合分けして… とやったらそれぐらいに…

全文を見る
すると、全ての回答が全文表示されます。
回答No.3

キーボードからの入力をlong(1つめの変数) そしてもう一つの変数をlong long型にすれば 変数2個でもfor文で書くことはできる。 long longだって整数型←へりくつ ある程度小さい数字しか使わないんだったらint2個でもできるな。 つまり一つの変数の上位ビットをカウンタとして利用すれば。 でも、そんな答えは求められてないんだろうな(笑)。

wing444
質問者

補足

できるだけ簡単なintでやりたいです。 C言語は苦手でわからないところも多くて…

全文を見る
すると、全ての回答が全文表示されます。
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

そうですね。1の条件だと、入力→判定→計算をベタに5つ並べるくらいしかできなさそうですね。 でも、これって、それが狙いなんではないか、と思います。 それを2,3の方法を使えばグンと短かく解りやすくなる、ということを実感してもらうための課題ではないでしょうか。

wing444
質問者

補足

200以上になってしまうんですが良いんでしょうか…? 1画面に収まるぐらいが良いと言われて気になったんです…

全文を見る
すると、全ての回答が全文表示されます。
  • titokani
  • ベストアンサー率19% (341/1726)
回答No.1

その、「かなり長くなってしまう」というソースを書いてみてください。 変数が2個しか使えない以上、できることは限られますので、 多分そんなに外れてはいないと思いますよ。

wing444
質問者

補足

起動してみたとこエラーが出てしまい… ifを重ねてるんですが…

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語-繰り返し処理

    キーボードから入力される1以上の整数に対して、次のような処理 をするプログラムを作りたいのです。 入力される整数が5であった場合、 正の整数:5 1***** 2 **** 3 *** 4 ** 5 * (0、または負の数であればエラー、終了するようにする) for文等の繰り返しを使って色々書いてみたのですが、 12345***** などとなってしまいます。 どのように書けばいいのか教えてくださるとありがたいです。

  • c言語のプログラムです

    2つの生の整数の割り算a÷bはaからbを繰り返し引いていき、引くことが出来なくなるまでの回数を商、その時の残りを剰余をすることで、引き算だけを用いて実現することができる。このことを考慮して、while文と引き算だけを用いて割り算を実現しなさい。という問題なんですけどどのようにプログラムを作っていいやらわかりません 一様ヒントはあります ・変数としては、入力する二つの整数に対応する変数m,n、商に対応する変数q、剰余に対応する変数rを使うとよいでしょう。すべて整数ですのでintで宣言する。 皆さんのご協力お願いします

  • C言語プログラムの課題

    大学で以下のような課題が出ました。でも全然わかりません。わかる方がいらっしゃったら、是非教えてほしいです★ 1整数値123を変数iに代入して、iの値を表示するプログラムを作成せよ。 2実数値3.14159を変数xに代入して、xの値を表示するプログラムを作成せよ。 3文字型せーた'A'を変数chに代入して、chの値を表示するプログラムを作成せよ。ただし、chの値を表示する際には、%d,%x,%cの書式を用いること。 4キーボードから入力された2つの整数値i,jの値を画面に表示するプログラムを作成せよ。 5キーボードから2つの整数値を、変数in1とin2に入力して、以下の計算をした結果を画面に表示するプログラムを作成せよ。 in1+in2= in1-in2= in1*in2= in1/in2= in1%in2=

  • C言語  繰り返し「while」について

     「While 文を使って、1から100までの和を求めて表示するプログラムを作りなさい。」という問題なのですが、自分なりに作成しているのですが、上手くいきません。よろしくお願いします。

  • c言語プログラム

    加減乗除および剰余の演算記号(+-* / %)と2つの整数を入力し、入力した2つの整数に対して入力した演算を施して表示するプログラムをif文ではなくswitch文を用いて作成しなさいなお、演算記号入力の際に間違った記号(+ - * / % 以外)を入力した場合は+を入力したものとして計算するものとしなさい。 ヒントで 変数としては入力演算記号に対応する変数op、入力する2つの整数に対応する変数m,n、答えに対応する変数ansを使うとよいでしょう宣言についてはopは記号なのでcharで宣言しますが、あとはすべて整数ですのでintで宣言 まずやることは演算記号以外の場合に+であることを表示するプログラムを組むと思うんですけど どうしたらいいのかわかりません力を御貸しください

  • C言語の宿題ができません。

    演習問題4】 4-1. キーボードから整数値を入力して、奇数か偶数かを表示させる。 (if文で記述する) 4-2. キーボードから2つの整数値を入力して2つの値の大、等、小の関係を表示する。 (if文で記述する) 4-3. 月を入力し、入力した月の日数を表示する。ただし2月は28日とする。 (if文で記述する) 4-4. 月を入力し、入力した月の日数を表示する。ただし2月は28日とする。 (switch文で記述する) 【応用問題4】 r4-1. 問題4-1のプログラムで、さらに値が4の倍数であった場合に4の倍数であること も表示する。 ※ヒント:0は4の倍数ではない r4-2. キーボードから3つの整数値を入力して3つの値の大、中、小の関係を表示 する。 (if文で記述する) r4-3. 月を入力し、入力した月の日数を表示するプログラムで、入力した月が1~12の 範囲を越えていた場合エラーメッセージを表示させる。

  • C言語についてなんですが

    プログラムの作成で分からないところがあります。 「二つの整数値を読み込み、小さいほうの数以上で大きい数以下の 整数を全て加えた値を表示するプログラムをdo文を使って 作成せよ。」 下の図のようにしたいです。 2つの整数を入力せよ。 整数A:37 整数B:28 28以上37以下の全整数の和は325です。 よろしくお願いします。

  • プログラミング 【C言語】について

     プログラミングについての質問です。  九九表を表示するプログラムを作りなさいという問題です。 ただし、for()を使わずお願いします。  while()を使えばいいのか..... これで、どのようにすれば作れるでしょうか? 簡単な方法でお願いします。 まとまらない文章で  すみません。 できれば、 フローチャートのヒントもください。 よろしくお願いします。

  • C言語について  

    わからないのでよろしくお願いします。何回やってもうまく表示できません。 整数を入力し、入力された整数の数だけ「*」を横一列に表示し、最後に改行するプログラムを while 文を使って作りなさい。 但し、0または負の値が入力された場合は、「*」は表示せず、改行のみを表示すること。 ▼10が入力された場合の実行例 ********** #include<stdio.h> int main(void) { int n, kai; scanf("%d",&n); printf("\n nyuryoku=%d",n); while(0<kai){ kai=kai--; printf("*"); } kai=n; printf("\n"); }

  • C言語のforとwhileについて・・・

    C言語で「While 文を使って、1から100までの和を求めて表示するプログラムを作る」ことをやってみました。↓ ですが、forではできたのですが、whileでは動きませんでした。 whileで作る時は、forのどの部分を変えれば出来るんでしょうか? 解説できましたら、お願いします。。 #include <stdio.h> int main(void) { int i,wa; wa=0; for(i=1; i<=100; i++) { wa=wa+i; } printf("和=%d\n",wa); }