C语言-有关数字翻转的函数_index
众所周知,有两种形式的数字翻转。一种是忽略0的。
如,123的翻转数字是321,而700的翻转数字是7。我们称之为第一种数字翻转。它的函数如下。
- int overturn(int num){
- int ot_num = 0; //翻转后的数字
- int digit = 0; //每一次取出来的最末位的数字
- while(num != 0){
- if(num / 10 >=1){ //当输入的数没有被划到只剩一位时
- digit = num %% 10; //取出末位数字
- num /= 10; //“划掉”最后一位
- ot_num = ot_num * 10 + digit; //翻转
- }
- else{ //只剩一位时
- ot_num = ot_num * 10 + num;
- break;
- }
- }
- return ot_num;
- }
调用实例如下:
- #include<stdio.h>
- int overturn(int num){
- int ot_num = 0; //翻转后的数字
- int digit = 0; //每一次取出来的最末位的数字
- while(num != 0){
- if(num / 10 >=1){ //当输入的数没有被划到只剩一位时
- digit = num %% 10; //取出末位数字
- num /= 10; //“划掉”最后一位
- ot_num = ot_num * 10 + digit; //翻转
- }
- else{ //只剩一位时
- ot_num = ot_num * 10 + num;
- break;
- }
- }
- return ot_num;
- }
- int main(){
- int num = 0;
- while(scanf("%%d",&num) != EOF){
- printf("%%d
",overturn(num));
- }
- return 0;
- }
上面的注释写的很清楚,不多解释了。
那么第二种数字翻转是这样的。123的翻转数是321,而700的翻转数就是007 。它会如实地输出每一位的数字,不会进行任何省略。那么它的函数如下。
- void overturn_honest(){
- int num = 0;
- int digit = 0;
- scanf("%%d",&num);
- while(1){
- if(num / 10 >= 1){
- digit = num %% 10;
- num /= 10;
- printf("%%d",digit);
- }
- else{
- printf("%%d
",num);
- break;
- }
- }
- }
可以看到,我这里用了一个void。因为除了char 没有一个数据类型可以保存类似007这样的数字,而就算保存了也没什么意义。所以我宁愿这个函数无返回值。
对它进行一个调用:
- #include<stdio.h>
- void overturn_honest(){
- int num = 0;
- int digit = 0;
- scanf("%%d",&num);
- while(1){
- if(num / 10 >= 1){
- digit = num %% 10;
- num /= 10;
- printf("%%d",digit);
- }
- else{
- printf("%%d
",num);
- break;
- }
- }
- }
- int main(){
- while(1)
- overturn_honest();
- }
但是有个问题,你不要没事找事去输入007这种数字去让他翻转,这纯属恶心行为。
欢迎使用这些函数!
推荐阅读