您的位置:首页 > 其它

CSDN之人人code,整数取反

2014-02-26 11:28 585 查看
题目描述:要求实现把给定的一个整数取其相反数的功能,举两个例子如下: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;  
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: