• ベストアンサー

C言語のプログラムについて。

#include <stdio.h> int main(void) {   int hoge,piyo;   printf("数値を入力せよ。:");   scanf("%d",&hoge);   piyo = hoge % 2;   if (piyo == 0) {     printf("%dは、偶数。\n",hoge);   } else {     printf("%dは、奇数。\n",hoge);   };   return 0; } という、プログラムが、実行できません。 といって、エラーメッセージがでてくれないので、困っています。 ひょっとして、非常に初歩的なミスという気もするのですが。 これはよかった!という、C言語に関する書籍、また、コンピュータのシステムに関する書籍がありましたら、合わせてご教授ください。

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

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.6

コンパイルエラーが出てないとすれば、ソースに問題はないです。 WindowsでVCを使ってるとのことなので、 スタートメニューからDosプロンプト(コマンドプロンプト)を開いて 出来上がったexeのパスを指定して直接動かしてみてください。 プロンプトはデフォルト設定で実行後に自動的に終了してしまいます。 もしかしたら動いているのに、なんかしらの理由でプロンプトが閉じてるかもしれません。 (普通でしたらscanfの所で止まるはずですけど・・・)

ondok
質問者

お礼

回答ありがとうございます。 おかげさまで、実行はできませんでしたが、その原因がファイル名にあるらしいことがわかりました。 とくに予約語を使ったとか、長い名前にしたとか、そういうことではないので、実のところは、あやふやなのですが・・・。

その他の回答 (6)

回答No.7

 もしexeファイルを実行している場合、scanfの部分で入力するとすぐに消えてしまいます。これは最後の}のところまでいくと勝手に閉じてしまうからです。多分今回のトラブルもこのせいだと思います。なので、こんなプログラムでやってみてはどうでしょうか? /*修正プログラム*/ #include <stdio.h> int main(void) {   int hoge, piyo, dummy;   printf("数値を入力せよ。:");   scanf("%d", &hoge);   piyo = hoge % 2;   if (piyo == 0) {     printf("%dは、偶数。\n",hoge);   } else {     printf("%dは、奇数。\n",hoge);   };   printf("(何か数字を入力して終了)");  /*修正部分*/   scanf("%d", &dummy);   return 0; } このプログラムは最後に何か数字を入力すると終了するようになっています。そうすれば偶数か奇数かを判断する部分を見ることができるでしょう。  C言語に関する書籍のほうですが、C++の書籍しかもっていないので残念ながら教えられません。

ondok
質問者

お礼

アドバイス、ありがとうございました。 この場をお借りしまして、道を示してくださった方々、みなさんにお礼を申し上げます。 自分の言葉が足りないばっかりに、せっかくのご好意を役立てることができなかったこともありましたようで。C言語どころか、日本語もうまく操れない自分に免じて、何卒お許しください。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.5

これといっておかしいところはないですね。 日本語の部分の文字コードがなにがしかのエスケープになってしまっているのかも知れませんね。まずは、日本語部分を英語(ASCII)にして問題の切り分けをしてみるのがよいかもしれません。 実際に「実行できない」というのは、exeはできるけど実行しても何のリアクションもない、ということですか?それともexe自体が生成されないと言うこと?

ondok
質問者

補足

ありがとうございます。 ごく初歩的なプログラムなのになんでや! と、自信喪失状態だったのですが、おかしいところがないとわかり、ほっとしました。 exe ファイルは、できとるようです。 リアクションとしては、XPにしてからよくお目にかかる「Microsoft(R)に報告しますか云々・・・。」の窓が出ます。

回答No.4

#1です。。 >自分の統計上、4票獲得です。 初版で勉強しているので、今販売されている版では若干内容に加筆等があるでしょうね。 さて… >エラーメッセージがでてくれないので、困っています。 これについてですが、その内容を表示されるとVCの開発環境特有のエラーかも知れませんね。記述されてみては如何でしょうか? <補足> >しかしこれは動作には関係ない(あっても動くはず)なので、原因は別にあるはずです。 #2さんのご指摘についてですが、確かにあっても無くても動作には(自分が知る範囲では)問題はありません。

ondok
質問者

お礼

回答、ありがとうございます。 上にも書きましたが、おっしゃるとおり、 > VCの開発環境特有のエラー の線が濃厚です。いままでにも怪しい動きはあったので。 やはり、フリー環境には限度がある、ということでしょうか。 いや、環境ではなく、使う人間によるのかもしれません。

回答No.3

私が大学で初めてCを学ぶときに使った本は 「やさしいC 著者(高橋麻奈)」でした。 名前のとおり本当にやさしいです。けどわかりやすい。 基礎固めにはかなりお勧めできます。

ondok
質問者

お礼

回答、ありがとうございます。 これは、初めて伺いました。 参考にさせていただきます。

  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.2

二つ考えられることがあります。 (1)上記のコードには、全角の空白「 」が使われていますが、 実際のソースコードではどうでしょうか? もし、ソースコードにも全角空白があったなら、 それを消して、半角空白かタブに変えてください。 (2)もしかしたらと思うのですが、 ちゃんとコンパイルをしましたか? 上記のソースコードが書いてあるファイルを 実行可能ファイルにするためにコンパイルの作業が必要です。 たとえば、上記が書いてあるファイルをtest.cとして、 bcc32というコンパイラ(Borlandの提供しているコンパイラプログラム) があったとしたら、 コマンドプロンプト(Windows XPの場合)か MS-DOS窓(Windows Me等の場合)を使って、 >bcc32 test.c とキーボードから入力します。 するとtest.exe(.cの部分が.exeになった名前のファイル) ができるので、それを >test.exe とキーボードから入力して実行します。 コンパイラを最初に使うときは 「パスの設定」という作業が必要になりますが、 それは各コンパイラの説明書きを見てください。 なお、#1さん指摘はその通りです。 しかしこれは動作には関係ない(あっても動くはず)なので、 原因は別にあるはずです。

ondok
質問者

補足

早速の回答、ありがとうございます。 まず、(1)についてですが、 実際のソースコードでは、タブキーでインデントしております。 (2)についてですが、使用コンパイラは、Ms Visual C++ toolkit 2003 です。 ほかのプログラムは、コンパイルと実行はできています。 ・・・となると、なぜでしょうかな(汗)。

回答No.1

  };   return 0; この }; の ; は要りません。 自分は研修時に「はじめてのC」という本で勉強しましたよ。

ondok
質問者

お礼

迅速なお答え、ありがとうございます。 そうなのでした。セミコロンは、いらないのでした。 「はじめてのC」は、これで自分の統計上、4票獲得です。