• ベストアンサー

error C2143: 構文エラー : ';' が '{' の前にありません。

#include <stdio.h> int main(void) {   int in;   printf("20以上の数字を入力してください\n");   scanf("%d", &in);   if(in >= 20){     printf("20以上の数字です。\n");     printf("終了します\n\n");}   else if(in <= 5){     printf("5以下の数字が入力されました\n");     printf("20には程遠いです\n\n");}   else(in <= 19){     printf("20以上の数字ではありません\n");     printf("20以上の数字を入力してください\n\n");}   return 0; } C言語でVisual C++ Expressを使っています このコードでビルドすると (16) : error C2143: 構文エラー : ';' が '{' の前にありません。 と表示されてしまいます。何がいけないのでしょうか?

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

  • ベストアンサー
  • yonfa
  • ベストアンサー率52% (22/42)
回答No.2

  else(in <= 19){ の部分ですが、   else if (in <= 19){ のつもりだったのでしょうか。 この場合、   else{ だけでよいです。

その他の回答 (1)

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

  else(in <= 19){ がおかしい。

beathouse
質問者

お礼

気づきました。ありがとうございました

関連するQ&A

  • C++言語について。構文エラー

    ジャンケンゲームを作ってたんですが サイトを参考にしながらやってたんですが、どこかでミスったみたいで。 コピーしてやるのはイヤなので、自分で打ちたいんです。   どうか間違いを指摘してもらえないでしょうか?            #include <stdio.h> #include <stdlib.h> int main() { int n; int p;//player int c;//computer srand(0);//乱数の初期化 do { //プレイヤーの手 printf("あなたの手を入力してください\n(グー:1、チョキ:2、パー:3\n"); scanf("%d", &p); //コンピュータの手 c = rand() % 3 + 1; //勝ち負け判定 if(p == c){ printf("draw\n"); }else if(p == 1 && c == 2){ printf("WIN!!\n"); }else if(p == 2 && c == 3){ printf("WIN!!\n"); }else if(p == 3 && c == 2){ printf("WIN!!\n"); }else{ printf("lose...\n"); } //続けるかどうかの判定 printf("try agin?\nNO(0を入力)---"); scanf("%d", &n); //nが0以外だったら続ける }while(n != 0); return 0; }        で、エラーが構文エラー : ';' が 'return' の前にありません。 というものでした。   よろしくおねがいします。

  • Cのプログラム(初心者)

    #include<stdio.h> void main(void) { int a,b,c; printf("西暦で生まれた年を入力してください。\n"); scanf("%d",&a); printf("今の年を西暦で入力してください。\n"); scanf("%d",&b); c=b-a; if('0'<=c&&c<='23'){ printf("あなたは%d歳です。げんき。\n",c); } else if('24'<=c&&c<='40'){ printf("あなたは%d歳です。仕事盛り。\n",c); } else if('41'<=c&&c<='60'){ printf("あなたは%d歳です。まだいける。\n",c); } else if('61'<=c&&c<='99'){ printf("あなたは%d歳です。がんばれ。\n",c); } else{ printf("100歳以上なの?\n"); } } というプログラムを作っているのですが、うまく実行できません。間違いがあると思うのですが、それもよくわかりません。ビルドは成功するのですが、どの数字を入力しても「げんき」しか出てきません。 わかる人がいたら教えてください。 お願いします。

  • Visual C++ error なんで?

     将来プログラマーを目指して勉強中の中学生です。    おとといC言語を始めてやさしいCを半分ぐらい読み 数当てゲームを作ってみようと思い今製作中なのですが(ランダムに数字を出すとかはできない)どうしてもエラーがでてしまうのです。 googleなどでエラーを調べてもどうしても解決につながらないので、本当は自力で見つけてバグを直さなくてはいけないのはわかっているのですが、ここで質問させていただきます。 ※ソース見にくいかもしれませんがすいません。  この数当てゲームは、100から999までの数字で入力された数字が、あらかじめ用意されている答えより小さいか大きいかを判断して 答えに近づいていくゲームです。 ------------------ソース--------------------------- /*数当てゲーム*/ //9/13日:作成開始 //9/13日:全角の空白には注意!!!エラー発生。問題解決 //9/14日:エラー #include <iostream>//本当は<stdio.h>でやっています。 int main (void) { int anser,tasu1; anser=749; printf("数当てゲームです。私があらかじめ用意しておいた数を当てる単純なゲームです。答えは100から999での間です。\n"); printf("では100から999までの数字を入力してください。\n"); scanf("%d", &tasu1); //tasu1に入力された数字を格納 if(tasu1 == anser){ printf("正解です!おめでとうございます。\n");//入力された数字がanserと一致したときここを処理 } else if(tasu1>anser){ printf("答えは入力された数字より小さいです。\n");//tasu1がanserより大きい場合ここを実行 } else if(tasu1<anser){ printf("答えは入力された数字より大きいです。\n");//入力された数字がanserより小さいときにここを処理 } else if(tasu1<100){ printf("入力された数字が許容範囲を超えています。\n");//入力された数字が100未満のときここを処理 } else if(tasu1>999){ printf("入力された数字が許容範囲を超えています。\n");//入力された数字が999より大きいときここを処理 } else{ printf("入力された数字が不正です。\n");//それ以外はここを処理 } return 0; } 見にくいですが、どうぞ回答よろしくお願いします。

  • C言語について

    次のような問題です。 問 自然数nを入力し、nを3で割って割り切れるかどうかを判定し結果を表示する。「割り切れる」、「1余る」、「「2余る」のいずれかが入るものとする。 このようなものをつくりました。 #include<stdio.h> int main(void) { int n; printf("自然数:"); scanf("%d",&n); if(n==0){ printf("割り切れる\n"); }else if(n==1){ printf("1余る\n"); }else{ printf("2余る"); } return(0); } これで合っているかよろしくお願いします。

  • scanf()で、エラー対応

    scanf()を使用して、入力で例えば「5462fa」数字ではなく文字を入力してしまった場合エラー(無限ループ)になりますが、 これをscanf()を使用したまま再入力を促すことが可能でしょうか?よろしくお願いします。 #include <stdio.h> int main(){   int a , kazu;   for(a=0;a<1;){     printf("値入力せよー>");       scanf ("%d", &kazu);         if( kazu >= 1 && kazu <=100 ){           a = a + 1 ;         }else{           printf("1から100で入力せよ\n");         }   }   printf ("kazu = %d", kazu);   return 0; }

  • 長方形、円、三角形の計算するプログラムでエラーがでます

    タイトルの通りなんですがエラーがでます>< コンパイラはできたのですが、実行して二つ目の入力するとこで、入力したあと止まります。 どこがおかしいのでしょうか? #include <stdio.h> int sikaku(void); int en(void); int main(void) { char ch; int a,b; printf("円(A) 長方形(B) 三角形(C)\n"); printf("入力してください:"); ch = getche(); if(ch == 'C'){ printf("\n底辺を入力してください:"); scanf("%d ",a); printf("高さを入力してください:\n"); scanf("%d",b); printf("%dです",a * b); } else if(ch == 'B') sikaku(); else if(ch == 'A') en(); return 0; } int en(void) { int a; float f; printf("\n半径を入力してください:"); scanf("%d",a); printf("円周率を入力してください:"); scanf("%f",f); printf("%fです",a * a * f); return 0; } int sikaku(void) { int a,b; printf("\n縦を入力してください:"); scanf("%d",a); printf("横を入力してくさい:\n"); scanf("%d",b); printf("dです",a * b); return 0; }

  • c言語についての質問です。

    #include<stdio.h> int main(void){ int a; printf("1文字たいぷしてください。\n"); scanf("%d",&a); if(a>=65 && a<=90){ printf("大文字です。\n"); } else if(a>=97 && a<=122){ printf("小文字です。\n"); } else{ printf("大文字でも小文字でもありません\n"); } return 0; } このプログラムは正しくなくて、 intをchar %dを%cにかえなければなりません。 なぜintはダメなんでしょうか? できれば丁寧に教えてください。 お願いします。

  • エラーの原因がわかりません。

    #include <stdio.h> int bonus(int year,char rank); main() { int a; char s[2]; while(1) { printf("勤続年数:"); scanf("%d",&a); printf("ランク:"); scanf("%s",s); if(bonus(a,s[0])==-1){ exit(1); } if(bonus(a,s[0])==0){ printf("入力エラー\n"); } printf("ボーナス支給額=%d\n",bonus(a,s[0])); } } int bonus(int year,char rank) { int bonus; if(strcmp(rank,'a')==0) if(year<=5) bonus=80000*2.3+80000*3+10000; else if(year<=10) bonus=100000*2.3+100000*3+12000; else if(year<=15) bonus=120000*2.3+120000*3+15000; else if(year>=16) bonus=150000*2.3+150000*3+18000; else return -1; else if(strcmp(rank,'e')==0) return -1; else return -1; return bonus; } 勤続年数とランクを入力したらボーナス支給額を表示させるというプログラムです。 ランクがA,B,C,Dとありましたが、800字以上になるので省略しました。 とりあえずコンパイルできたものの、実行してランクを入力したらエラーが出て終了してしまいます。 そのエラーの原因がわかりません。 多分メモリーら辺がおかしいみたいなんですけど・・・。 よろしくお願いします。

  • if~else文の中にまたif~else文をいれるには。

     このプログラムを思うように実行したいのですが、できません。 コンパイルはできるのですが、警告が4つほど出て、結果も自分が思ってるのとは違います。 プログラムのどこを改善すべきか教えてください。 OSはWindows XPで、コンパイラはボーランドのフリーコンパイラを使用しています。 #include<stdio.h> int main(){ int a,b,c,d; printf("1か0を入力してください。\n"); scanf("%d",&a); if(a=0) { printf("2か3を入力してください。\n"); scanf("%d",&b); if(b=2){ printf("今まで合計は%dです。\n",a+b); } if(b=3){ printf("今まで合計は%dです。\n",a+b); } else { printf("指定した数字を入力して下さい。\n"); } } else if(a=1) { printf("あなたは%dを入力しました。\n",a); } else { printf("指定した数字を入力してください。\n"); } return 0; }

  • C言語 エラー

    void kbd2(int *n, int *m, int w, int z){ int p=0; while(p==0){ while(p!=2){ printf("Type two integers:"); p=scanf("%d%d", n,m); if(p!=2){ scanf("%*s"); printf("Error: Not an integer!\n"); p=0; } else { if(0>*n || 0>*m || w<*n || z<*m){ scanf("%*s"); printf("Error: Out of range!\n"); p=0; } } } } } C言語にて、非負整数を2つ入力しようとしているのですが、main関数内でw=3,z=4にし、キーボード入力でw,z以上の数値を入力するとそこから先が止まってしまいます。(エラーメッセージがでません) しかし、そのあとに0以上w,z以下の整数を入力すると、*nまたは*m(w、z以上に入力したほう)がw、z以上の数値(始めに与えた数値)としてでてきます。 どこが悪いのでしょうか? 改善すべき点を教えてください。。。 なお、scanfは使う方向性でよろしくお願いします。 ちなみに、main関数内はこれです。 int main(){ int va=-1; int vb=-1; int amax=3; int bmax=4; kbd2(&va, &vb, amax, bmax); printf("OK: %d,%d", va, vb); return 0; }

専門家に質問してみよう