C言語のファイルと拡張子
まず、C言語のプログラムを書くためにファイルを用意します。
ファイルには、「拡張子」というものがあります。
例えば、画像ファイルには「.png」や「.jpeg」といった拡張子がついています。(Windowsやスマートフォンでは、拡張子を表示しない設定になっていることがあります)
C言語の拡張子は、「.c」です。[ファイル名].cのようなファイルを用意してください。
これから、プログラムを書くときは、毎回このようなファイルを作成してください。
C言語のプログラムのテンプレート
それでは、プログラムを用意します。
情報処理部の活動では、C言語のプログラムを書くときに、次のようなテンプレートを使用します。
#include <stdio.h>
int main() {
//ここにプログラムを書く。
return(0);
}1行目の「#include <stdio.h>」は、入出力の機能を使うためのおまじないだと思っていてくれれば大丈夫です。
[補足]
「#include <stdio.h>」は、「stdio.h」というヘッダファイルをインクルードする命令です。
int main() { }は、「main関数」といい、C言語のプログラムの中で1番最初に実行される関数です。
関数は、プログラムのまとまりだと思っていてくれれば大丈夫です。
基本的には、このmain関数の中に、プログラムを書いていきます。
5行目の「return(0);」は、プログラムの終了を表します。
より、厳密には、OSに処理を返す意味があります。
競技プログラミングでは、0以外を返すことはしないでください。
C言語では、プログラムの命令の末尾に「;(セミコロン)」をつけます。
忘れると、コンパイルエラーが発生するので、気を付けましょう。
インデンテーションとコメント
インデンテーション(字下げ)は、とても大切ですが、if文などが出てくるまでは、今のままで大丈夫です。
基本的には、VSCodeが自動的にインデンテーション(字下げ)の調整を行ってくれます。
コメントとは、コンパイルするときにプログラムの命令として判定されない部分のことです。
//一行コメント
/*
複数行コメント
*/一行コメントは、プログラムの命令を書いた後に書くこともできます。
その場合は、「//」の後ろが全てコメントとなります。
Hello World!!
それでは、「Hello World!!」という文字列を出力します。
C言語で、出力をしたい場合には、printf()関数を使います。
printf("Hello World!!\n");文字列は、「”(ダブルクウォーテーション)」で囲います。
文字列とは、2文字以上の文字のことで、文字とは、1文字の文字のことです。
「\n」は、改行を意味します。
競技プログラミングをするときは、基本的に出力の末尾に改行を入れましょう。
ショートカットキー
少なくとも、次のショートカットキーは覚えて使えるようにしておきましょう。
| ショートカットキー | 動作 |
|---|---|
| Ctrl + A | すべて選択 |
| Ctrl + X | 切り取り |
| Ctrl + C | コピー |
| Ctrl + V | 貼り付け |
| Ctrl + S | 保存する |
| Ctrl + Z | 戻す |
| Ctrl + Y | 進める |
| Win + ← | ウィンドウを左半分にする |
| Win + → | ウィンドウを右半分にする |
コンパイルと実行
C言語のプログラムを実行するには、「コンパイラ」というプログラムを用いて、「コンパイル」をしなければいけません。
ターミナルで「cc [ファイル名].c」を実行することでコンパイルをすることができます。
すると、「a.out」というバイナリーファイル(0と1だけで表現されたコンピュータ用のファイル)が生成されます。
これをターミナルで「a.out」と実行することで、プログラムを実行できます。
何かエラーが出力された場合は、「コンパイルエラー」です。
プログラムの記述形式などが間違っているので、確認してみましょう。
提出と結果
提出は、HOJでは問題の右上か右下の「提出」ボタンで行うことができます。
「提出」ボタンを押すと、自動で「提出状況」のページに遷移します。
提出状況は、「Ctrl + R」または「F5」を押して、ページを更新することで、確認することができます。
提出結果は、次のいずれかの結果が表示されます。
| 状態 | 状態 | 説明 | 原因 |
|---|---|---|---|
| AC | Accepted | 正答 | |
| CE | Compile Error | コンパイルエラー | |
| TLE | Time Limit Exceeded | 実行制限時間超過 | 時間計算量が大きい(無限ループなど) |
| MLE | Memory Limit Exceeded | メモリ制限超過 | メモリの使い過ぎ |
| RE | Runtime Error | プログラムの異常終了 | 配列外参照・戻り値が0でない・再帰のしすぎ・0除算 |
| WA | Wrong Answer | 出力内容の不一致 | |
| WJ | Waiting for Judging | ジャッジ待ち | |
| WR | Waiting for Re-judging | 再ジャッジ待ち |
ACのみ正解で、赤字のものはすべて不正解です。
WJとWRは、ジャッジ結果ではなく、ジャッジ待ち状態です。
練習問題
0001 – Hello World! – Hamako Online Judge
1637 – [第1話]高木くんの自己紹介 – Hamako Online Judge
