質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

296閲覧

c言語の繰り返しについて

kai20000803

総合スコア29

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2021/04/26 07:05

質問
自分の教科書より
下記のコードがあり、r < 0の時にどうして
s = r * r * 3.14;
printf("面積は%fです。\n", s);
このコードが実行されないのでしょか。

#include<stdio.h> int main(void) { int r; double s; do { printf("半径?:"); scanf("%d", &r); } while (r < 0); s = r * r * 3.14; printf("面積は%fです。\n", s); return 0; }

もし下記のようになっていたら
s = r * r * 3.14;
printf("面積は%fです。\n", s);
が実行されないのはわかるのですが。。

if (r > 0) { s = r * r * 3.14; printf("面積は%fです。\n", s); }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

コンパイルして実行してみましたか?
質問するときは

  • 期待していた動き
  • 実際の動き

を記載すると質問者がどこに違和感を感じているのかわかりやすいです。

実際に動かしてみるとこうなりますね。

半径?:-1 半径?:10 面積は314.000000です。

-1 を入力したあとに面積を表示していないのは、 while の条件式 r < 0 を満たしているので再度 do 以降を繰り返すからですね。

投稿2021/04/26 07:27

mather

総合スコア6753

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

do ~ while (式) は繰り返し文です。
式が真だと ~ を繰り返します。
提示されているプログラムでは do {} while (r < 0); は、r >= 0 にならないとこの繰り返しから抜け出さないので、それ以降の文にたどり着かないわけです。

投稿2021/04/26 07:11

itagagaki

総合スコア8402

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

do { ~ } while()は繰り返しです。
繰り返し条件がr<0なのでrが負である限りprintfscanfを繰り返すだけです。

投稿2021/04/26 07:09

otn

総合スコア84798

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問