スポンサーリンク

int型の数字を逆順に入れ替える関数を実装

参考:[c言語]文字列を逆順に入れ替える(サンプルコード)

第一引数の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

スポンサーリンク