サイズ: 4090
コメント:
|
← 2015-07-08 17:25:40時点のリビジョン44 ⇥
サイズ: 5288
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 78: | 行 78: |
== 便利な代入式 == {{{#!highlight c n++; // n = n + 1; ++n; // n = n + 1; n--; // n = n - 1; --n; // n = n - 1; n += 3; // n = n + 3; n -= 3; // n = n - 3; n *= 3; // n = n * 3; n /= 3; // n = n / 3; n %= 3; // n = n % 3; // 余談 int m = 2; int tmp; tmp = m++; printf("%d\n", tmp); // 2 printf("%d\n", m); // 3 m = 2; tmp = ++m; printf("%d\n", tmp); // 3 printf("%d\n", m); // 3 }}} = ビット演算子 = * x & y: ビットごとにand * x | y: ビットごとにor * x ^ y: ビットごとにxor * ~x: ビット反転 * x << y: xをy回左シフト * x >> y: xをy回右シフト |
|
行 135: | 行 170: |
= 関数 = 一般に関数は引数を受け取って戻り値を返す<<BR>> [[solanumaple/programming講習2015/examplefunction|いろいろな関数]]<<BR>> |
|
行 154: | 行 193: |
== 問3 べき乗 == | = 問3 べき乗 = |
行 165: | 行 204: |
$(C) -o $@ $^ $(CFLAGS)\\ }}} == 問4 昇順ソート == |
$(C) -o $@ $^ $(CFLAGS) }}} = 問3.5 FizzBuzz = 1から100までの整数について * 15の倍数ならFizzBuzz * 3の倍数ならFizz * 5の倍数ならBuzz * いずれでもないならその数字 を出力するプログラム = 問4 昇順ソート = |
行 185: | 行 232: |
= 解答例 = [[solanumaple/programming講習2015/answer]] = スライド = [[attachment:day1.pdf]] [[attachment:day2.pdf]] |
目次
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
スライド