目次
Hello, World!
コンパイル
$ gcc -o hello hello.c -std=c99 $ ./hello
数値出力
変数
型
- void : 無
int : (-231) ~ (231-1) の範囲の整数
long long int : (-263) ~ (263-1)の範囲の整数
- double : 少数
算術演算子
- =: 代入(左辺の変数に右辺の値を格納する)
- +: 加算(+)
- -: 減算(ー)
- *: 乗算(×)
- /: 除算(÷)
- %: 剰余(mod)
便利な代入式
行番号表示/非表示切替
1 n++; // n = n + 1;
2 ++n; // n = n + 1;
3 n--; // n = n - 1;
4 --n; // n = n - 1;
5 n += 3; // n = n + 3;
6 n -= 3; // n = n - 3;
7 n *= 3; // n = n * 3;
8 n /= 3; // n = n / 3;
9 n %= 3; // n = n % 3;
10
11 // 余談
12 int m = 2;
13 int tmp;
14
15 tmp = m++;
16 printf("%d\n", tmp); // 2
17 printf("%d\n", m); // 3
18
19 m = 2;
20 tmp = ++m;
21 printf("%d\n", tmp); // 3
22 printf("%d\n", m); // 3
23
ビット演算子
x & y: ビットごとにand
- x | y: ビットごとにor
- x ^ y: ビットごとにxor
- ~x: ビット反転
x << y: xをy回左シフト
x >> y: xをy回右シフト
数値入力
scanf("%d", &変数名);
条件分岐
もし (1) ならば [1] をする そうでなく, もし (2) なら [2] をする そうでなければ [3] をする if( ){ }else if( ){ }else{ }
行番号表示/非表示切替
1 #include<stdio.h>
2 int main(void){
3 int n;
4 scanf("%d", &n);
5 if( n < 10 ){ // (1)なら
6 n = n * 100; // [1]する
7 }else if( n < 100 ){ // (1)でないかつ(2)であるとき
8 n = n * 10; // [2]をする
9 }else{ // そうでなければ
10 n = n * 5; // [3]する
11 }
12 printf("%d\n", n);
13 return 0;
14 }
15 /* 結果
16 入力されたnが 2 なら
17 200
18
19 入力されたnが 10 なら
20 1000
21
22 入力されたnが 30 なら
23 300
24
25 入力されたnが 400 なら
26 2000
27 */
比較演算子
< : 小なり
<= : 小なりイコール
> : 大なり
>= : 大なりイコール
- == : イコール
- != : notイコール
関数
一般に関数は引数を受け取って戻り値を返す
いろいろな関数
反復
for(/*一度だけ実行*/; /*ここに書いた条件が成り立つ間波括弧内を繰り返す*/; /*波括弧の後に実行*/){}
問3 べき乗
整数ふたつを引数にとって第1引数の第2引数乗を返す関数を定義してください
GNU Make
問3.5 FizzBuzz
1から100までの整数について
15の倍数ならFizzBuzz
- 3の倍数ならFizz
- 5の倍数ならBuzz
- いずれでもないならその数字
を出力するプログラム
問4 昇順ソート
解答例
solanumaple/programming講習2015/answer
スライド