ログイン
編集不可のページディスカッション情報添付ファイル
solanumaple/programming講習2015

MMA

Hello, World!

   1 /*スラッシュアスタリスクで囲んでコメントが書ける*/
   2 //スラッシュ二本の後, 行末までコメントになる
   3 #include<stdio.h>
   4 
   5 int main(void){
   6   printf("Hello, World!\n");
   7   return 0;
   8 }

   1 #include<stdio.h>
   2 // printf() を使うために必要なファイルをinclude
   3 
   4 int main(void){
   5     // プログラムを呼ぶと最初に呼ばれる関数
   6 
   7     printf("hello, world");
   8     // 文字列を出力する(改行なし)
   9 
  10     printf("\n"); // 改行する
  11   
  12     return 0; // 必ず書く
  13 }

コンパイル

$ gcc -o hello hello.c -std=c99
$ ./hello

数値出力

   1 #include<stdio.h>
   2 int main(void){
   3   printf("%d\n", 5); // 5 と表示,改行される
   4   printf("私は%d歳", 18); // 私は18歳 と表示される
   5   printf("%d\n", 2 * 3 +  14 / 7 - 3 % 2 ); // 2 × 3 + 14 ÷ 7 - 3 mod 2
   6   return 0;
   7 }

変数

   1 #include<stdio.h>
   2 
   3 int main(void){ 
   4   int n = 3;
   5   n = n + 1;
   6   printf("%d\n", 4); // 4 と表示,改行される
   7   return 0;
   8 }

算術演算子

便利な代入式

   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 

ビット演算子

数値入力

scanf("%d", &変数名);

   1 #include<stdio.h>
   2 
   3 int main(void){
   4   int n;
   5   scanf("%d", &n);
   6   return 0;
   7 }

条件分岐

もし (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 */

比較演算子

関数

一般に関数は引数を受け取って戻り値を返す
いろいろな関数

反復

for(/*一度だけ実行*/; /*ここに書いた条件が成り立つ間波括弧内を繰り返す*/; /*波括弧の後に実行*/){}

   1 #include<stdio.h>
   2 
   3 int main(void){
   4   int n;
   5   for(n = 3; n > 0; n = n-1){
   6     printf("%d\n", n);
   7   }
   8   return 0;
   9 }
  10 /* 結果
  11 3
  12 2
  13 1
  14 */

問3 べき乗

整数ふたつを引数にとって第1引数の第2引数乗を返す関数を定義してください

GNU Make

   1 C = gcc
   2 CFLAGS = -std=c99 -Wall
   3 SOURCE = $(filter-out $(patsubst %.h,%.c,$(wildcard *.h)),$(wildcard *.c))
   4 all: $(basename $(SOURCE))
   5 
   6 %: %.c
   7         $(C) -o $@ $^ $(CFLAGS)

問3.5 FizzBuzz

1から100までの整数について

を出力するプログラム

問4 昇順ソート

   1 #include<stdio.h>
   2 void sort(int array[], int size){
   3 }
   4 int main(void){
   5   int array[10];
   6   for(int i = 0; i < 10; i = i + 1){
   7     scanf("%d", &array[i]);
   8   }
   9   sort(array, 10);
  10   for(int i = 0; i < 10; i = i + 1){
  11     printf("%d\n", array[i]);
  12   }
  13   return 0;
  14 }

解答例

solanumaple/programming講習2015/answer

スライド

day1.pdf day2.pdf

ためになる外部ページ

solanumaple/programming講習2015 (最終更新日時 2015-07-08 17:25:40 更新者 solanumaple)