dポイントプレゼントキャンペーン実施中!

以下のプログラムを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;
}
}

A 回答 (3件)

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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/18 14:28

一応作ってみました。



#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;
}

やはり、全角数字をどう扱うかがポイントですね。
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/18 14:43

//かなり良くないが


#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;
}
    • good
    • 0
この回答へのお礼

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

お礼日時:2006/05/18 14:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!