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

2015-06-23 13:29:45時点のリビジョン26

メッセージを消す
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 }

算術演算子

数値入力

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)\\

問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 }

ためになる外部ページ