CSDN之人人code,整数取反

题目描述:要求实现把给定的一个整数取其相反数的功能,举两个例子如下:x = 123, return 321 x = -123, return -321;

     解题思路:对int a进行判断,如果a的大小不等于0;则定义一个变量temp等于temp*10+a的最后一位,a = a/10;依次循环。。。代码如下

     

我的代码如下:

#include <iostream>
using namespace std;
int reverse(int x) {
    //wirte your code here
    int ix = x > 0 ? x : -x ;
    
    int flag = 0 ;
    if (ix != x)
        flag = 1 ; // 表示x为负数
    
    int iy = 0;
    while (ix > 0){
        iy *= 10 ;
        iy += ix % 10  ;
        ix /= 10 ;
    }
    if (flag == 1)
        iy = -iy ;
    return iy ;
    
}

//start 提示:自动阅卷起始唯一标识,请勿删除或增加。
int main()
{   
    cout << reverse(897) << endl;
    return 0;
} 
//end //提示:自动阅卷结束唯一标识,请勿删除或增加。        

     一开始不知道余数和被除数的符号相同,使用了问号表达式,还用了一个标志位来标记是否为负数,其实没必要,下面是代码转载的别人的博客:点击打开链接

整个代码看起来简单明了:

#include<stdio.h>  
  
int fun(int a)  
{  
    int temp = 0;  
    while(a)  
    {  
        temp = temp*10 + a%10;  
        a = a / 10;  
    }  
    return temp;  
}  
int main()  
{  
    int num;  
    printf("Input a num:");  
    scanf("%d",&num);  
    printf("The result is:%d",fun(num));  
    return 1;  
}  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值