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

解決済みの質問

switch文をif文に変換

以下のプログラムをif文に書き換えるとどうなるでしょうか?
if文と論理演算子を使って短く書きかえられるらしいのですが。

#include <stdio.h>

main()
{
int no;

scanf("%d",&no);

switch (no){
case 1: puts("1番です。\n"); break;
case 2: puts("2番です。\n"); break;
case 3: puts("3番です。\n"); break;
case 4: puts("4番です。\n"); break;
case 5: puts("5番です。\n"); break;
case 6: puts("6番です。\n"); break;
default: puts("そんな学年はありません。"); break;
}
}

投稿日時 - 2006-05-09 01:33:56

QNo.2139785

暇なときに回答ください

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

noが1以上6以下なら"no番です。"と出力し、
それ以外なら"そんな学年はありません。"と出力するのなら
こんな感じで良いのでは。

(全角スペースが入っているのでこのままでは動きません)
--------------------
#include <stdio.h>
int main()
{
 int no;

 scanf("%d",&no);

 if(1<=no && no<=6){
  printf("%d年です。\n", no); /*年が適当かと思ったので年にしました*/
 }
 else{
  printf("そんな学年はありません。\n");
 }

 return 0;
}

投稿日時 - 2006-05-09 01:59:15

お礼

申し訳ありません。
お礼が遅くなりました。
質問時に学習していたレベルでは1番適当な解答で
大変助かりました。
ありがとうございました。

投稿日時 - 2006-05-18 14:28:11

ANo.1

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

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

回答(3)

ANo.3

一応作ってみました。

#include <stdio.h>

int main(void)
{
 int no;

 scanf("%d",&no);

 if (1 <= no && no <= 6)
  printf("%s番です。\n", (char*[]){ "1", "2", "3", "4", "5", "6" }[no-1]);
 else
  puts("そんな学年はありません。");

 return 0;
}

やはり、全角数字をどう扱うかがポイントですね。

投稿日時 - 2006-05-09 12:36:33

お礼

お礼が遅くなり申し訳ありません。
これは文字列を使ったプログラムですね。
とても参考になりました。
ポイントですがNo.1の方が当方の求めていた回答で
あった為、申し訳ないですが以降は先着とさせて頂きます。
また機会がありましたらよろしくお願い致します。
ありがとうございました。

投稿日時 - 2006-05-18 14:43:13

ANo.2

//かなり良くないが
#include <stdio.h>

main(){
int no;
char *p="0";

scanf("%d",&no);

if(1 <= no && no <=6){
*(p+1) += no;
fputs(p, stdout);
puts("番です。\n");
} else {
puts("そんな学年はありません。");
}
return 0;
}

投稿日時 - 2006-05-09 02:06:14

お礼

お礼が遅くなり申し訳ありませんでした。
こういうプログラムもあるのですね。
今の私のレベルでは難しいです。
良くない例という事で、こういうプログラムもあるの
だという参考にさせて頂きます。
ありがとうございました。

投稿日時 - 2006-05-18 14:36:14

あなたにオススメの質問