今、C言語でswitch文を学んでいます。
今まで学んだ内容は
・printf()
・scanf()
・if文
・switch文
です。
そこで質問なのですが、
switch文の中にswitch文を半永久的に書くことは出来ますか?
野球のテキストゲームを作ろうと思っていて、
3つの選択肢を最大で6回選んでもらおうとおもっています。
そうなると例えば
case1の中にswitch文が入り、
そのswitch文の中のcase1にswitch文を書くみたいなことになります。
そしたらエラーが出てしまったので困っています。
【環境など】
・Windows10
・Microsoft VisualStudio 2017
【エラー内容】
・case ラベル値はこのスイッチ 行 130 で既に設定されています
・default ラベルはこのスイッチで既に使用されています
・switch 文の中に 2 つ以上の 'default' があります。
・{;に一致するトークンが見つかりませんでした。
【警告内容】
・'scanf' : 書式文字列 '%s' には、型 'char *' の引数が必要ですが、可変個引数 1 は型 'int *' です
・'printf' : 書式文字列 '%s' には、型 'char *' の引数が必要ですが、可変個引数 1 は型 'int *' です
【コード】
int main( void ) { int tensai, throw1, throw2, throw3, throw4, throw5, throw6, throw7; printf("\n\n\n\n\n\n\n\n"); printf(" 天才バッターの名前を入力してね\n\n\n\n"); printf(" → "); scanf("%s", &tensai); system("cls"); printf("\n\n\n\n"); printf(" 実況「さあ、試合も大詰め!」\n\n\n\n"); printf(" 実況「9回ツーアウト満塁!」\n\n\n\n"); printf(" 実況「一打逆転のチャンスで打席にはバッターの ”%s!”」\n\n\n\n",&tensai); printf(" 実況「ピッチャー第1球、投げました!」\n\n\n\n"); printf(" (1球目が来た。1:ストレート 2:カーブ 3:見送る)\n\n"); printf(" → "); scanf("%d",&throw1); system("cls"); switch (throw1) { case 1: printf("\n\n\n\n\n"); printf(" 主審「ストライ~ク!!」\n\n\n\n"); printf(" 実況「1球目はボール球を空振り」\n"); // キー入力待ち rewind(stdin); _getch(); system("cls"); printf("\n\n\n\n\n"); printf(" 実況「ピッチャー第2球、投げました!」\n\n\n\n"); printf(" (2球目が来た。1:ストレート 2:カーブ 3:見送る)\n\n"); printf(" → "); scanf("%d", &throw2); system("cls"); switch (throw2) { case 1: printf("\n\n\n\n\n"); printf(" 主審「ストライ~ク!!」\n\n\n\n"); printf(" 実況「2球目も空振り~」\n"); break; case 2: printf("\n\n\n\n\n"); printf(" 主審「ストライ~ク!!」\n\n\n\n"); printf(" 実況「2球目も空振り~」\n"); break; default: printf("\n\n\n\n\n"); printf(" 主審「ボール!!」\n\n\n\n"); printf(" 実況「2球目は少し外れてボール!!」\n"); // キー入力待ち rewind(stdin); _getch(); system("cls"); printf("\n\n\n\n\n"); printf(" 実況「ピッチャー第3球、投げました!」\n\n\n\n"); printf(" (3球目が来た。1:ストレート 2:カーブ 3:見送る)\n\n"); printf(" → "); scanf("%d", &throw3); system("cls"); switch (throw3) { case 1: printf("\n\n\n\n\n"); printf(" 主審「」\n\n\n\n"); printf(" 実況「」\n"); break; case 2: printf("\n\n\n\n\n"); printf(" 主審「」\n\n\n\n"); printf(" 実況「」\n"); break; default: printf("\n\n\n\n\n"); printf(" 主審「ボール!!」\n\n\n\n"); printf(" 実況「3球目も少し外れてボール!!」\n"); // キー入力待ち rewind(stdin); _getch(); system("cls"); printf("\n\n\n\n\n"); printf(" 実況「ピッチャー第4球、投げました!」\n\n\n\n"); printf(" (4球目が来た。1:ストレート 2:カーブ 3:見送る)\n\n"); printf(" → "); scanf("%d", &throw4); system("cls"); switch (throw4) { case 1: printf("\n\n\n\n\n"); printf(" 主審「」\n\n\n\n"); printf(" 実況「」\n"); break; case 2: printf("\n\n\n\n\n"); printf(" 主審「」\n\n\n\n"); printf(" 実況「」\n"); break; default: printf("\n\n\n\n\n"); printf(" 主審「ストライ~ク!!」\n\n\n\n"); printf(" 実況「4球目はストライク!!」\n\n\n\n"); printf(" 実況「これでカウント 2ボール 2ストライク」\n"); break; } break; } break; case 2: printf("\n\n\n\n\n"); printf(" 主審「ストライ~ク!!」\n\n\n\n"); printf(" 実況「一球目はボール球を空振り」\n"); // キー入力待ち rewind(stdin); _getch(); system("cls"); printf("\n\n\n\n\n"); printf(" (2球目が来た。1:ストレート 2:カーブ 3:見送る)\n\n"); printf(" → "); scanf("%d", &throw2); system("cls"); switch (throw2) { case 1: printf("\n\n\n\n\n"); printf(" 主審「ストライ~ク!!」\n\n\n\n"); printf(" 実況「二球目も空振り~」\n"); break; case 2: printf("\n\n\n\n\n"); printf(" 主審「ストライ~ク!!」\n\n\n\n"); printf(" 実況「二球目も空振り~」\n"); break; case 9: printf("\n\n\n\n\n"); printf(" 主審「ボール!!」\n\n\n\n"); printf(" 実況「二球目は少し外れてボール!!」\n"); break; } break; default: printf("\n\n\n\n\n"); printf(" 主審「ボール!!」\n\n\n\n"); printf(" 実況「一球目は少し外れてボール!!」\n"); break; } // キー入力待ち rewind(stdin); _getch(); return 0; }
回答5件
あなたの回答
tips
プレビュー