落書きノート

ふと自分が気になった事を書いてます

C言語で問題を解く

解きながら学ぶC言語

解きながら学ぶC言語

// q8-3
#include <stdio.h>
#define max(x, y) x > y ? x : y

int main(void) {
  int a = 3;
  int b = 4;
  int c = 1;
  int d = 2;
  printf("%d\n", max(max(a,b),max(c,d)));
  printf("%d\n", max(max(max(a,b), c), d));
  return 0;
}

// q8-4
#include <stdio.h>
#define swap(type, a, b) type t = a; a = b; b = t;

int main(void) {
  int a = 10;
  int b = 5;
  swap(int, a, b);
  printf("%d %d\n", a, b);
  return 0;
}

// q8-5
#include <stdio.h>

enum season { Spring, Summer, Fall, Winter, Invalid };

void spring(void) {
  puts("春はあけぼの");
}

void summer(void) {
  puts("夏は夜");
}

void fall(void) {
  puts("秋は夕暮れ");
}

void winter(void) {
  puts("冬はつとめて");
}

enum season select(void) {
  int tmp;

  do {
    printf("0...春 1...夏 2...秋 3...冬 4...終了 : ");
    scanf("%d", &tmp);
  } while(tmp < Spring || tmp > Invalid);
  return tmp;
}

int main(void) {
  enum season selected;
  do {
    switch(selected = select()) {
    case Spring : spring(); break;
    case Summer : summer(); break;
    case Fall   : fall();   break;
    case Winter : winter(); break;
    }
  } while(selected != Invalid);
  return 0;
}