開発環境
- OS X Lion - Apple(OS)
- TextWrangler(Text Editor) (BBEditの無料、light版)
- 言語: C
- コンパイラ: UNIX ccコンパイラ (汎用UNIX)
『実践プログラミング 第3版』 (Steve Oualline (著)、 望月 康司 (監修) (翻訳)、 谷口 功 (翻訳)、 オライリー・ジャパン、1998年、ISBN978-4900900646) II部(単純なプログラミング)の8章(他の制御文)8.5(プログラミング実習)実習8-7を解いてみる。
実習8-7.
コード(TextWrangler)
#include <stdio.h>
#include <string.h>
int main(){
char line[100];
char result[1000];
int number,h,t,o;
strcpy(result,"");
while(11){
printf("数値を入力(0から100): ");
fgets(line,sizeof(line),stdin);
sscanf(line,"%d",&number);
if(!(number >= 0 && number <= 100)){
printf("0から100までの数値を入力してください。\n");
continue;
}
h = number / 100;
t = (number % 100) / 10;
o = number % 10;
if(h == 1){
strcat(result,"one hundred");
} else if(t == 1){
switch(o){
case 0:strcat(result, "ten");break;
case 1:strcat(result, "eleven");break;
case 2:strcat(result, "twelve");break;
case 3:strcat(result, "thirteen");break;
case 4:strcat(result, "fourteen");break;
case 5:strcat(result, "fifteen");break;
case 6:strcat(result, "sixteen");break;
case 7:strcat(result, "seventeen");break;
case 8:strcat(result, "eighteen");break;
case 9:strcat(result, "nineteen");break;
}
} else if(t == 0 && o == 0){
strcat(result, "zero");
} else {
switch(t){
case 2: strcat(result, "twenty");break;
case 3: strcat(result, "thirty");break;
case 4: strcat(result, "forty");break;
case 5: strcat(result, "fifty");break;
case 6: strcat(result, "sixty");break;
case 7: strcat(result, "seventy");break;
case 8: strcat(result, "eighty");break;
case 9: strcat(result, "ninety");break;
}
if(t != 0 && o != 0){
strcat(result,"-");
}
switch(o){
case 1: strcat(result, "one");break;
case 2: strcat(result, "two");break;
case 3: strcat(result, "three");break;
case 4: strcat(result, "four");break;
case 5: strcat(result, "five");break;
case 6: strcat(result, "six");break;
case 7: strcat(result, "seven");break;
case 8: strcat(result, "eight");break;
case 9: strcat(result, "nine");break;
}
}
printf("%s\n",result);
strcpy(result, "");
}
return (0);
}
入出力結果(Terminal)
$ cc -g -o sample sample.c $ ./sample 数値を入力(0から100): 101 0から100までの数値を入力してください。 数値を入力(0から100): 100 one hundred 数値を入力(0から100): 99 ninety-nine 数値を入力(0から100): 98 ninety-eight 数値を入力(0から100): 50 fifty 数値を入力(0から100): 49 forty-nine 数値を入力(0から100): 21 twenty-one 数値を入力(0から100): 20 twenty 数値を入力(0から100): 19 nineteen 数値を入力(0から100): 18 eighteen 数値を入力(0から100): 11 eleven 数値を入力(0から100): 10 ten 数値を入力(0から100): 9 nine 数値を入力(0から100): 8 eight 数値を入力(0から100): 0 zero 数値を入力(0から100): -1 1から100までの数値を入力してください。 数値を入力(0から100): ^C $
C言語でもRubyみたいに再帰関数を使いこなせるようになれば、1から100まで以外の数字だったり、コードをもっと奇麗に書けるように合いそう。
0 コメント:
コメントを投稿