• ベストアンサー

問題がとけません

以下の問題がわかりません。 教えていただけますでしょうか? 以下の仕様を満たすプログラムを作成せよ。 キーボードから2整数を読み込み,読み込んだ順に標準出力にそれらの値の10進数表現をスペース文字で区切って1行に書き出し,改行する。読み込んだ一番目の整数の値が1000でなければ,次の2整数を読み込み同様に書き出す。一番目の整数の値が1000のときプログラムの実行を終了する。 ヒント------------------------------------------------- stdio.hをインクルードする。 読み込んだ値を保持するための2つの整変数を宣言して定義する。 2つの整数を読み込んで,その値を書き出すことを繰り返す部分は,次のdo-whileループで実現する。 do { (1) //2整数の読み込み //2整数の書き出し } while(条件); (2) プログラムの実行は上から順に行われるが,(2)で条件が真であれば(1)に戻り,そこから再び下方に順番に実行される。条件が真でなければ,(2)の次の行から下に順番に実行される。したがって,(2)の条件が満たされているかぎり,(1)と(2)の間を繰り返し実行することになる。このdo-whileループは,必ず1回は実行される点で,whileループと異なる。 行中に//があると,そこから行末まではコメントとみなされ書かれている内容は無視される。また,任意の位置に書かれた,一対の/*と*/の間もコメントとみなされる。 この課題の繰り返しの条件は,読み込んだ一番目の整数が1000でないこと。 iを整変数として, i != 1 という論理式の値は,iが1のとき偽,iが1でないとき真である。 2種類ある等値演算子の1つであるこの"!="という2項演算子(演算子の両側に1項ずつの2項を使う演算子)による演算結果は,両側の2つのオペランド(演算子が働きかけるもの)の値が「等しくない」とき真,それ以外のとき偽である。もう一つの等値演算子は"=="で,演算結果は2項が「等しい」とき真,それ以外のとき偽となる。 

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

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

まず、 ・整変数の宣言方法 ・2整数の読み込み方 ・2整数の書き出し方 は、 http://oshiete1.goo.ne.jp/qa4977613.html で質問された「例題」の中にあります。 たしかに、「2つ」ではありませんが。 プログラムの構造も必要最低限の部分 はここにありますね。 ・プログラムの実行の終了方法 これは、実際には、「繰り返しの方法」 と、「繰り返しの条件」が問題の中に あります。

naka0129
質問者

お礼

確かにありました。 さっきは見ても、なんのことやらわかりませんでしたが、 徐々にわかってきた気がします。 このような形でよろしいのでしょうか? #include <stdio.h> int main() { int a,b; do { scanf("%d%d",&a,&b); printf("%d\n",a); } while(a!=1000); }

その他の回答 (3)

回答No.4

もとの問題は ・「2つ」の変数を読み込む ・「2つ」の変数を表示する ・それを繰り返す ですね。 お書きになったプログラムの1行 づつの意味を考えてみてください。 プログラムの構造としてはこんなも のでしょうが、処理として足りない ところがあります。 答えは、既に、もう一つの質問の なかにあります。

  • tommy1977
  • ベストアンサー率43% (178/410)
回答No.2

えっと・・・ 何から答えればいいか分かりませんが、直では答えません。 ヒント1行目のstadio.hのインクルードからされていません。 また、変数a,bの形に関して”プログラム”から入力するのではなく、 キーボードから入力するので、 int a=1; はそもそも間違い。int a,b;とかにするべき。 (2整数ならmainの定義でも十分だと思うんだけどな) while文の条件も、ヒントにきっかり書いている訳で、 たとえば、整数形が a,b(aが最初に入る変数)とすると、 a != 1000 だったら、aが1000の時 偽、1000ではない時に正ですね。 プログラムの実行終了方法は… 最後まで行ったら終了ですよ(笑) 終了コードをちゃんと返したいのであれば return(0);とでも書いておけばいいわけで。 ところで・・・これって学校の課題?(^^;

naka0129
質問者

お礼

ご回答ありがとうございます。 このような形でよろしいのでしょうか? #include <stdio.h> int main() { int a,b; do { scanf("%d%d",&a,&b); printf("%d\n",a); } while(a!=1000); } はい、学校の課題です。

  • tommy1977
  • ベストアンサー率43% (178/410)
回答No.1

ヒントがそのまま答えじゃないですか。 これまでの授業で習ったこと(聞いていましたよね?) をそのまま当てはめていけば、OKでしょ。 文法に間違いがあればコンパイル時にエラーになりますし。

naka0129
質問者

補足

質問方法が不適切でした。 申し訳ございません。 以下自分でわかる範囲でかいたものです。 (ところどころつぎはぎですが) int main() { int a = 1; int b = 2; do{ printf("%d",a b); } while(=1000); } 下記がわからないところです。 教えていただけますでしょうか? ・整変数の宣言方法 ・2整数の読み込み方 ・2整数の書き出し方 ・プログラムの実行の終了方法 どうぞよろしくお願いいたします。

専門家に質問してみよう