##master-page:HomepageReadPageTemplate ##master-date:Unknown-Date #format wiki #language en <> = Hello, World! = {{{#!highlight c /*スラッシュアスタリスクで囲んでコメントが書ける*/ //スラッシュ二本の後, 行末までコメントになる #include int main(void){ printf("Hello, World!\n"); return 0; } }}} {{{#!highlight c #include // printf() を使うために必要なファイルをinclude int main(void){ // プログラムを呼ぶと最初に呼ばれる関数 printf("hello, world"); // 文字列を出力する(改行なし) printf("\n"); // 改行する return 0; // 必ず書く } }}} == コンパイル == {{{ $ gcc -o hello hello.c -std=c99 $ ./hello }}} = 数値出力 = {{{#!highlight c #include int main(void){ printf("%d\n", 5); // 5 と表示,改行される printf("私は%d歳", 18); // 私は18歳 と表示される printf("%d\n", 2 * 3 + 14 / 7 - 3 % 2 ); // 2 × 3 + 14 ÷ 7 - 3 mod 2 return 0; } }}} = 変数 = {{{#!highlight c #include int main(void){ int n = 3; n = n + 1; printf("%d\n", 4); // 4 と表示,改行される return 0; } }}} = 型 = * void : 無 * int : (-2^31^) ~ (2^31^-1) の範囲の整数 * long long int : (-2^63^) ~ (2^63^-1)の範囲の整数 * double : 少数 = 算術演算子 = * =: 代入(左辺の変数に右辺の値を格納する) * +: 加算(+) * -: 減算(ー) * *: 乗算(×) * /: 除算(÷) * %: 剰余(mod) == 便利な代入式 == {{{#!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回右シフト = 数値入力 = scanf("%d", &変数名); {{{#!highlight c #include int main(void){ int n; scanf("%d", &n); return 0; } }}} = 条件分岐 = もし (1) ならば [1] をする そうでなく, もし (2) なら [2] をする そうでなければ [3] をする if( ){ }else if( ){ }else{ } {{{#!highlight c #include int main(void){ int n; scanf("%d", &n); if( n < 10 ){ // (1)なら n = n * 100; // [1]する }else if( n < 100 ){ // (1)でないかつ(2)であるとき n = n * 10; // [2]をする }else{ // そうでなければ n = n * 5; // [3]する } printf("%d\n", n); return 0; } /* 結果 入力されたnが 2 なら 200 入力されたnが 10 なら 1000 入力されたnが 30 なら 300 入力されたnが 400 なら 2000 */ }}} = 比較演算子 = * < : 小なり * <= : 小なりイコール * > : 大なり * >= : 大なりイコール * == : イコール * != : notイコール = 関数 = 一般に関数は引数を受け取って戻り値を返す<
> [[solanumaple/programming講習2015/examplefunction|いろいろな関数]]<
> = 反復 = for(/*一度だけ実行*/; /*ここに書いた条件が成り立つ間波括弧内を繰り返す*/; /*波括弧の後に実行*/){} {{{#!highlight c #include int main(void){ int n; for(n = 3; n > 0; n = n-1){ printf("%d\n", n); } return 0; } /* 結果 3 2 1 */ }}} = 問3 べき乗 = 整数ふたつを引数にとって第1引数の第2引数乗を返す関数を定義してください = GNU Make = {{{#!highlight make C = gcc CFLAGS = -std=c99 -Wall SOURCE = $(filter-out $(patsubst %.h,%.c,$(wildcard *.h)),$(wildcard *.c)) all: $(basename $(SOURCE)) %: %.c $(C) -o $@ $^ $(CFLAGS) }}} = 問3.5 FizzBuzz = 1から100までの整数について * 15の倍数ならFizzBuzz * 3の倍数ならFizz * 5の倍数ならBuzz * いずれでもないならその数字 を出力するプログラム = 問4 昇順ソート = {{{#!highlight c #include void sort(int array[], int size){ } int main(void){ int array[10]; for(int i = 0; i < 10; i = i + 1){ scanf("%d", &array[i]); } sort(array, 10); for(int i = 0; i < 10; i = i + 1){ printf("%d\n", array[i]); } return 0; } }}} = 解答例 = [[solanumaple/programming講習2015/answer]] = スライド = [[attachment:day1.pdf]] [[attachment:day2.pdf]] = ためになる外部ページ = * [[http://judge.u-aizu.ac.jp/onlinejudge/index.jsp?lang=ja|AIZU ONLINE JUDGE: Programming Challenge]] * [[http://9cguide.appspot.com/|苦しんで覚えるC言語]] * [[http://www.curiocube.com/mikata/beyondthecode/index.php|コーディングの向こう側 - つくる人の味方]] * [[http://www.wakayama-u.ac.jp/~chen/cmake/cmake.html|Learning CMake]]