• 締切済み

大至急 プログラミングについてです。

キーボードから整数を入力し、入力された整数が100以上10以上100未満、10未満のいずれかを判定してその結果を出力するプログラムを作りなさい。 なのですが、自分が考えたのは#include <stdio.h> int main(void) { char *str[] = {"10未満", "10以上100未満", "100以上"}; int n; scanf("%d", &n); puts(str[(n >= 10) + (n >= 100)]); return 0; } ですが、友達の教科書と例回答を見ていると写真のようにしないといけないみたいなのですが、どなたかご教授お願い致します

みんなの回答

  • subaru130
  • ベストアンサー率20% (66/326)
回答No.5

判定すれだけならばこれで正解です。 教科書のプログラムはelse文はAとBを反転しているだけです 強いて教科書のようにするならば /*以下ブログラム文*/ #include <stdio.h> int main(void) { /*変数の宣言*/ int a; /*数値の入力と判定*/ scanf("%d",&a); if(a<=10) { printf("入力された数値は10未満です¥n"); } else if(a>=100) { printf("入力された数値は100以上です¥n"); } else { printf("入力された数値は10以上100未満です¥n");    } return 0; } きっとif else文を使うことが要求されている野だと思います。 C言語懐かしい

回答No.4

まず、他の回答者の皆様と同様、0801wm様の作られたプログラムは、問題に対して正しい解答であり、簡潔に書かれている点にはおいては優れていると言ってよいと思います。 ただ、添付画像のプログラムと画像左下部に比較演算子の「==」が記載されていることから、if文を用いた条件分岐でプログラムを作らなければならないのではないでしょうか? もし、上記の考え方であってる場合は以下のように書けばよいかと思います。 ただ、if文を使う事が強制でないのなら、0801wm様が書かれているプログラムの方がよいプログラムだと思いますので、そちらを提出した方が好評価だとは思います。 #include <stdio.h> int main(void){ int n; scanf("%d", &n); if(n < 0){ printf("負数が入力されました。\n"); }else if(n >= 100){ printf("%dは100以上です。\n",n); }else if(n < 100 && n >= 10){ printf("%dは10以上100未満です。\n",n); }else{ printf("%dは10未満です。\n",n); } return 0; }

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.3

これまでの答えにあるように、プログラミングの方法は1通りでないので、どちらでもよいのですが、 あなたの方法の長所と欠点。 ・プログラムが短く書ける ・たぶん、コンピュータの処理時間も短い。 ・何をしているのか、ソースコードを見ただけではわかりづらい。 教科書の方法の長所と欠点。 ・プログラムの目的にそった書き方で、理解しやすい。 ・デバッグが容易。 ・プログラムが長くなる。 ・たぶん、コンピュータの処理速度が遅い。

回答No.2

あなたのコードは、学校の課題としては正しいしむしろ他の生徒さんよりも簡潔なコードですね。 素晴らしいです。 ですが、写真の解答例は、違う問題の解答例では? /* データの比較と交換 */ と書いてありますしね。 コード自体はそのまま出して合格をいただけると思いますよ。

回答No.1

実行して結果が出れば正しい。 実行して結果が出てこなければバグ。 プログラムの書き方は一種類ではない。 しないいけない書き方などありません。

0801wm
質問者

補足

みなさん 回答有り難うございます。 私自身も学校の教育上なんとも言えないのですが、実際は例文のようにプログラムを作るのが課題で、すなわち作り直さなければいけないのです。 そこで、あの例に問題文をはめた形でプログラムを作る方法を再度ご教授頂ければと思います宜しくお願い致します