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;
}
}
回答(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;
}
やはり、全角数字をどう扱うかがポイントですね。
この回答へのお礼
お礼が遅くなり申し訳ありません。
これは文字列を使ったプログラムですね。
とても参考になりました。
ポイントですがNo.1の方が当方の求めていた回答で
あった為、申し訳ないですが以降は先着とさせて頂きます。
また機会がありましたらよろしくお願い致します。
ありがとうございました。
No.2ベストアンサー10pt
//かなり良くないが
#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;
}
この回答へのお礼
お礼が遅くなり申し訳ありませんでした。
こういうプログラムもあるのですね。
今の私のレベルでは難しいです。
良くない例という事で、こういうプログラムもあるの
だという参考にさせて頂きます。
ありがとうございました。
No.1ベストアンサー20pt
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;
}
この回答へのお礼
申し訳ありません。
お礼が遅くなりました。
質問時に学習していたレベルでは1番適当な解答で
大変助かりました。
ありがとうございました。
- 最新から表示
- |
- 回答順に表示
- |
- ベストアンサーのみ表示











