基礎
早速以下のようなコードを書いてみよう。
int
;
(セミコロン)をつけます。日本語の 。 のようなものです。出力
C言語では、printf
という関数を使って出力を行います。
printf
のfは、formatの略printf("hogehoge")
のように、("") の中に書いた文字が出力される。実際に、書いてみよう。
int
printf
の中の\n
は、改行を表す。略称 | 名称 | 意味 |
AC | Accept | 正解、正しい答えを返した |
WA | Wrong Answer | 誤答、間違った結果を返した |
TLE | Time Limit Exceeded | 制限時間内にプログラムが終了しなかった |
MLE | Memory Limit Exceeded | メモリ制限を超えてメモリを使用した |
RE | Runtime Error | プログラム実行中にエラーが発生した |
変数
型名 変数名;
の順で宣言を行う。型名 | 種類 | サイズ | 範囲 |
int | 整数型 | 32bit | -2^31~2^31-1 |
long long | 整数型 | 64bit | -2^63~2^63-1 |
double | 浮動小数点数型 | 64bit | おおよそ-10^308~10^308で 15桁の精度 |
char | 文字型 | 8bit | -2^7~2^7-1 |
int num;
のように書く。=
を使って、値を代入することができる。num=10;
のように書く。int
num1+num2
のように書く。演算 | 記号 |
足し算 | + |
引き算 | - |
掛け算 | * |
割り算(商) | / |
割り算(余り) | % |
演算 | 使用例 | 意味 |
+= | a += b | a = a + b |
-= | a -= b | a = a - b |
*= | a *= b | a = a * b |
/= | a /= b | a = a / b |
%= | a %= b | a = a % b |
++ | a++ | a = a + 1 |
-- | a-- | a = a - 1 |
printf
の フォーマット指定子 を用いる。printf("%d", num)
のように書く。%d
の部分が、フォーマット指定子と呼ばれていて、,
の後の変数を出力する。型名 | フォーマット指定子 |
int | %d |
long long | %ld |
double | %lf |
char | %c |
int
入力
scanf
という関数を使う。scanf("%d", &num)
のように、scanf("フォーマット指定子", &変数名)
で使う。printf
の時と同じものを用いる。int
int
(型名)変数名
とすることで、強制的に型変換を行えます。double f = (double)A / B;
とすると、f = 0.5になります。条件分岐
条件分岐には、if文
を使う。
if(値)
で値が0以外なら、直後の1文が実行される。else
を使うと値が0だった時に直後の1文が実行される。{}
で囲むことによって、複数の文を1文として、扱うことができる。int
また、値の他に 条件式 を使って、条件分岐を行うこともできる。
記号 | 意味 |
== | 等号 左辺と右辺が等しい時に成り立つ |
!= | 左辺と右辺が異なる時に成り立つ |
< | 左辺が右辺よりも小さい時に成り立つ |
> | 左辺が右辺よりも大きい時に成り立つ |
<= | 左辺が右辺以下の時に成り立つ |
>= | 左辺が右辺以上の時に成り立つ |
&& | 左辺かつ右辺が成り立つ時に成り立つ |
|| | 左辺または右辺が成り立つ時に成り立つ |
先ほどのコードは、条件式を用いて以下のようにもかける。
int
else if
を用いることができる。int
&&
を用いる。int
int
繰り返し(定数回)
for文
を使うことで、繰り返しができる。for(初期化式; 条件式; 更新式)
で、1回だけ呼ばれる初期化式、毎回呼ばれる条件式、更新式がある。{}
で囲むことで、複数の文を、1文にすることができる。;
がないので注意する。for(i = 1; i <= N; i++) ;
int
繰り返し(不定回)
for文
以外に、while文
を使って繰り返しを行うことができる。while(条件式)
で条件式が満たされている間、直後の1文が繰り返される。if文
やfor文
と同じように、{}
で囲むことによって、複数の文を1文として扱える。num1 = 1;while(num1 < num2) num1 *= 2;
int
配列
int a, b, c, d, ...
のように、最大で100個もの変数を作るのは、大変!!int num[100]
のように、型名 変数名[サイズ]
で宣言し、アクセスするときは、num[0]
のように、変数名[インデックス]
でアクセスできる。num[0]~num[99]
までは、アクセスできるが、num[100]
は配列外参照と言ってエラーが起きる!!int num[10], i;for(i = 0; i < 10; i++) num[i] = i;
配列
とfor文
の組み合わせはよく使うので、覚えておくと良い。int
文字列
%s
を使う。&
を つけない ので注意する。char s[110];;;
<string.h>
をincludeする必要がある。関数名 | 引数 | 動作 |
strcpy | char* a, char* b | aにbをコピーする |
strcat | char* a, char* b | aの末尾にbを結合する |
strcmp | char* a, char* b | aとbを比較して、a < bなら負, a == bなら0, a > bなら正の値が返る |
strlen | char* a | 文字列aの長さを返す |
int
if文
を使って判定することができる。if(c>='A' && c <= 'Z') ;else if(c >= 'a' && c <= 'z') ;else ;
int n;if(c >= 'A' && c <= 'Z') n = c - 'A';else if(c >= 'a' && c <= 'z') n = c - 'a';;
int
for文
を回せば、答えが求まりそう。int
返り値の型 関数名(引数) {関数の中身; return 返り値;}
の形で定義する。関数名(引数)
で行う。intint