2012年4月8日日曜日

開発環境

『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) の8章(他の制御文)8.5(プログラミング実習)実習8-6を解いてみる。

実習8-6.

コード(TextWrangler)

#include <stdio.h>
int main(){
  char line[4];
  int num;
  int hund;
  int ten;
  int one;
  printf("1~100の整数を入力: ");
  fgets(line,sizeof(line),stdin);
  sscanf(line,"%d",&num);
  hund = num / 100;
  ten = (num % 100) / 10;
  one = num % 10;
  if(hund == 1){
    printf("one hundred ");
  }
  if(ten == 1 && one != 0){
    switch(one){
      case 1:printf("eleven");break;
      case 2:printf("twelve");break;
      case 3:printf("thirteen");break;
      case 4:printf("fourteen");break;
      case 5:printf("fifteen");break;
      case 6:printf("sixteen");break;
      case 7:printf("seventeen");break;
      case 8:printf("eighteen");break;
      case 9:printf("nineteen");break;
    }
  } else {
    switch(ten){
      case 0:break;
      case 1:printf("ten");break;
      case 2:printf("twenty");break;
      case 3:printf("thirty");break;
      case 4:printf("forty");break;
      case 5:printf("fifty");break;
      case 6:printf("sixty");break;
      case 7:printf("seventy");break;
      case 8:printf("eighty");break;
      case 9:printf("ninety");break;
    }
    if(ten != 0 && one != 0){
      printf("-");
    }
    switch(one){
      case 1:printf("one");break;
      case 2:printf("two");break;
      case 3:printf("three");break;
      case 4:printf("four");break;
      case 5:printf("five");break;
      case 6:printf("six");break;
      case 7:printf("seven");break;
      case 8:printf("eight");break;
      case 9:printf("nine");break;
    }
  }
  if(hund == 0 && ten == 0 && one == 0){
    printf("zero");
  }
  printf("\n");
  return (0);
}

入出力結果(Terminal)

$ cc -g -o sample sample.c
$ ./sample
1~100の整数を入力: 1
one
$ ./sample
1~100の整数を入力: 2
two
$ ./sample
1~100の整数を入力: 10
ten
$ ./sample
1~100の整数を入力: 11
eleven
$ ./sample
1~100の整数を入力: 12
twelve
$ ./sample
1~100の整数を入力: 12
twelve
$ ./sample
1~100の整数を入力: 21
twenty-one
$ ./sample
1~100の整数を入力: 59
fifty-nine
$ ./sample
1~100の整数を入力: 100
one hundred 
$ ./sample
1~100の整数を入力: 101
one hundred one
$ ./sample
1~100の整数を入力: 111
one hundred eleven
$ ./sample
1~100の整数を入力: 123
one hundred twenty-three
$ ./sample
1~100の整数を入力: 0
zero
$

0 コメント:

コメントを投稿