スポンサーリンク
int型の数字を逆順に入れ替える関数を実装
第一引数のnumの数字が、逆順となって戻り値として返します。
int revInt(int num){ double rev = 0; while(num != 0){ rev =rev * 10 + num % 10; num = num / 10; } if(INT_MIN <= rev && rev <= INT_MAX){ return rev; }else{ return 0; } }
10で割った余りで最下位の数字を取り出して、
10倍していくことで、先頭に持っていきます。
numは10で割ることで、最下位の数字を除去していきます。
while(num != 0){ rev =rev * 10 + num % 10; num = num / 10; }
逆順にするとintの範囲を超えることがあるので、
その時のエラー処理ですね。
if(INT_MIN <= rev && rev <= INT_MAX){ return rev; }else{ return 0; }
スポンサーリンク
サンプルコード
下記がサンプルコードになります。
$ cat sample.c #include <stdio.h> #include <limits.h> int revInt(int num){ double rev = 0; while(num != 0){ rev =rev * 10 + num % 10; num = num / 10; } if(INT_MIN <= rev && rev <= INT_MAX){ return rev; }else{ return 0; } } int main(){ printf("%d\n", revInt(123)); printf("%d\n", revInt(-123)); printf("%d\n", revInt(2147483647)); return 0; }
下記が実行結果になります。
$ gcc -o sample sample.c $ ./sample 321 -321 0
スポンサーリンク