题目: 为了得到一个数的"相反数",我们将这个数的数字顺序颠倒,然后再加上原先的数得到"相反数"。例如,为了得到1325的"相反数",首先我们将该数的数字顺序颠倒,我们得到5231,之后再加上原先的数,我们得到5231+1325=6556.如果颠倒之后的数字有前缀零,前缀零将会被忽略。例如n = 100, 颠倒之后是1. 输入描述: 输入包括一个整数n,(1 ≤ n ≤ 10^5) 输出描述: 输出一个整数,表示n的相反数 输入例子1: 1325 输出例子1: 6556 代码: [cpp] view plain copy print ? #include<iostream> #include<string> using namespace std; char nums[10]={'0','1','2','3','4','5','6','7','8','9'}; int oppsite(int num){ int data=num; int temp=num; string s=""; while(num!=0){ temp=num%10; s=s+nums[temp]; num/=10; } bool flag=true; temp=0; for(int i=0;i<s.size();i++){ if(s[i]!='0'&&flag==true) flag=false; if(s[i]!='0'||flag==false){ temp=temp*10+(s[i]-'0'); } } temp=temp+data; return temp; } int main(){ int num; cin>>num; cout<<oppsite(num); } 分析: 这个题目还是比较简单的,字符型和数字的转换 看了一下大佬的代码,深受打击 [cpp] view plain copy print ? 作者:雨baby 链接:https://www.nowcoder.com/discuss/39219 来源:牛客网 using namespace std; int n; int main() { cin >> n; int cn = 0; int x = n; while(x) { cn = cn * 10 + x % 10; x /= 10; } cout << n + cn << endl; return 0; } 转载来自:http://blog.youkuaiyun.com/gcola007/article/details/77922749