#include <stdio.h> #include <stdlib.h> int is3aho(int num) { /* ループ用変数 */ int i = 0; /* 文字列変換用 */ char str[255]; sprintf(str, "%d", num); /* 結果保持用 */ int result = 0; /* 3あるかなー? */ while(str[i] != '\0') { if(str[i] == '3') { result = 1; break; } i++; } return result; } int main(int argc, char **argv) { /* 最低限引数チェックはしておくのさ */ if(argc != 2) { printf("usage: 3aho [数字]\n"); return EXIT_FAILURE; } /* 数字変換 */ int num = atoi(argv[1]); /* あほチェック */ if(num == 0) { printf("usage: 0以上の数字を入力してください\n"); return EXIT_FAILURE; } else { if(num % 3 == 0){ printf("aho!!\n"); } else if( is3aho(num)) { printf("aho!!\n"); } } return EXIT_SUCCESS; }
動き
[root@cent6 c]# gcc -o 3aho 3aho.c [root@cent6 c]# ./3aho 13 aho!! [root@cent6 c]# ./3aho 3 aho!! [root@cent6 c]# ./3aho 1 [root@cent6 c]# ./3aho 1993 aho!! [root@cent6 c]# ./3aho 3333 aho!! [root@cent6 c]# ./3aho 1 32 usage: 3aho [数字] [root@cent6 c]# ./3aho usage: 3aho [数字]
ツイッター見て、fizzbuzzできないプログラマがいる!
とかいう話が久しぶりに出ていたので、fizzbuzz考えて、なべあつ出来なかったらどうしよう…と思い、帰宅中に頭で考えてみたからコードに落としてみた。
本当は文字列使わないで数字だけで判定したいけど…
ん?どうやるんだ…orz
じゃんけんプログラムとか研修でやったなぁ…