D - 数字反转
题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例 2)。
输入格式
输入共 1 行,一个整数 N。
输出格式
输出共 1 行,一个整数,表示反转后的新数。
数据范围
−1,000,000,000 ≤ N ≤ 1,000,000,000。
Sample Input
123
Sample Output
321
Sample Input
-380
Sample Output
-83
思路
这道题我们可以用字符串来存储这个数字
首先我们判断这个数是否为负数,为负则第一位的负号不变
之后我们再找到这个数末尾第一个不为零的数(因为反转过后要去掉前导零)
然后我们再反向输出这个字符串
#include<string.h>
#include<stdio.h>
int main()
{
char s[100];
scanf("%s",s);
int l=strlen(s);
int f=0;
if(s[0]=='-')
{
printf("-");
f=1; // 如果该数为负,则操作位数往后移一位
}
for(int i=l-1;i>=f;i--)
if(s[i]!='0')
{
l=i; // l即第一个不为零的数的位置
break;
}
for(int i=l ; i>=f ; i--)
{
printf("%c",s[i]);
}
}