開発環境
- 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 コメント:
コメントを投稿