
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
switch(a)
{
case 1: printf("\nりんご\n"); break;
case 2: printf("\nバナナ\n"); break;
default: printf("\nその他\n"); break;
}
return 0;
}
C言語でプログラム練習しています
上の内容で正常に動くのですが
caseのところを例えば
1~10までは りんご
11~30までは バナナ
など1つの数字ではなく複数の数字にしたいのですがどうすればいいのでしょうか?
以前VBを少し経験したことがありまして
その際は
case 1 to 10
でできたのですがC言語ではできないみたいです
わかる方教えてください
No.1ベストアンサー
- 回答日時:
1から5がバナナ、6から10がりんご としたい場合
switch( a ) {
case 1:
case 2:
case 3:
case 4:
case 5:
printf("バナナ\n" );
break;
case 6:
case 7:
case 8:
case 9:
case 10:
printf("りんご\n");
break;
}
といった具合にしてやればいいですよ
飛んだ値でも可能です
1,3,5がバナナ 2,4,6がりんごならば
switch( a ) {
case 1:
case 3:
case 5:
printf("バナナ\n" );
break;
case 2:
case 4:
case 6:
printf("りんご\n");
break;
}
といった具合にします
caseを連続して記述して breakを最後のブロックだけに記述します
No.6
- 回答日時:
#define MAX 50
int table[MAX + 1] = {
0, /* ダミー */
1,1,1,1,1,1,1,1,1,1, /* 1~10りんご */
2,2,2,2,2,2,2,2,2,2, /* 11~30ばなな */
2,2,2,2,2,2,2,2,2,2,
3,3,3,3,3,4,4,4,4,4, /* 31~35みかん、36~40なし */
5,5,5,5,5,5,5,5,5,5 /* 41~50ぶどう */
};
/* aは1~50 */
switch(table[a]) {
case 1:
りんご
break;
case 2:
ばなな
break;
case 3:
みかん
break;
case 4:
なし
break;
case 5:
ぶどう
break;
}
No.4
- 回答日時:
#include <stdio.h>
int main(void)
{
int a;
scanf("%d",&a);
switch(cnvNo(a))
{
case 1: printf("\nりんご\n"); break;
case 2: printf("\nバナナ\n"); break;
default: printf("\nその他\n"); break;
}
return 0;
}
int cnvNo(int a)
{
if ((a >= 1) && (a <= 10))
{
return(1);
} else if ((a >= 11) && (a <= 30)) {
return(2);
}
return(-1);
}
No.3
- 回答日時:
#include <stdio.h>
int main(void)
{
int i;
for(i = 0; i < 40; ++ i){
switch((1 <= i && i <= 30) + (11 <= i && i <= 30)){
case 1: printf("%2d りんご\n", i); break;
case 2: printf("%2d バナナ\n", i); break;
default: printf("%2d その他\n", i); break;
}
}
return 0;
}
No.2
- 回答日時:
case 1:
case 2:
~
case 10:printf ("...");break;
のようにbreakしなければ求めてることは可能でしょう
長くなるようならif else使った方が見やすいと思います
お薦めはしませんがgcc拡張ではcase 0 ... 10のような書き方が可能です
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- C言語・C++・C# 至急教えてください!プログラミングの問題です。 割られる整数と割る整数を受け取って、商と余りを出力す 3 2022/07/05 10:23
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
- C言語・C++・C# c言語でユーザ関数を利用して複素数のべき乗と絶対値の数列を計算するプログラムが作りたいです。 3 2023/01/29 22:13
- C言語・C++・C# 至急教えてください! プログラミングの問題です! お願いします! 出力2と全く同じ出力をするように、 2 2022/06/22 23:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
10個出力で改行したいのですが...
-
(C言語)めちゃくちゃな値にな...
-
コマンドプロンプトがすぐ消える
-
getchar()マクロによる空白文字...
-
C言語のプログラムでうまく動...
-
九九を表示させるプログラム
-
C言語プログラミング
-
コマンドラインに出力した文字...
-
スレッドとメッセージキューに...
-
c言語でAからZまでを表示する...
-
基本的に問題
-
C言語で、引数が構造体の場合
-
一番大きい奇数を表示する
-
既約分数の表示プログラム
-
4の倍数を論理演算で表す。。
-
switch分のケースを範囲数?に...
-
万年カレンダーのC言語プログラ...
-
hit&bolwのプログラミングがで...
-
2次方程式の解の表示
-
for文内でscanf関数により配列...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
10個出力で改行したいのですが...
-
c言語で2000年以降カレンダーを...
-
c言語でAからZまでを表示する...
-
【C】fizzbuzzのトリッキーなコ...
-
strcmp
-
printf で二進表示を行いたい。
-
【C言語教えてください】sin波...
-
コマンドラインに出力した文字...
-
8人分のテストの点数を入力し、...
-
コンパイルエラーについて
-
CTRL+Dでループを抜けるには
-
(C言語)めちゃくちゃな値にな...
-
cshの文字列操作(0埋め)
-
テキストカーソル位置の取得
-
コマンドプロンプトがすぐ消える
-
printfの出力内の文字をdefine...
-
scanfに文字が入力されたときに...
-
台形の面積を求めるプログラム
-
改行について 1行に何個かづ...
-
WM_CLOSEで閉じれないウィンド...
おすすめ情報