NOIP2011年普及组复赛第1题《数字反转》CA代码

本文介绍了一种用于翻转整数各个位上数字的算法实现,包括处理负数和末尾有0的情况,通过样例展示了输入输出格式及测试数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【题目描述 Description】
  给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。
输入输出格式 Input/output
【输入格式】
  输入文件名为reverse.in 。
  输入共1 行,一个整数 N。
【输出格式】
  输出文件名为reverse.out 。
  输出共1行,一个整数,表示反转后的新数。
【输入输出样例 Sample input/output】
样例测试点#1
样例1:
【样例输入】
123
【样例输出】
321

样例2:
【样例输出】
-380
【样例输出】
-83

难点1:考虑负数情况
难点2:考虑末尾有0的情况

测试数据:请翻看顶部,有测试数据10组“reverse.rar”下载链接,自行测试自己的代码。

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main(void)
{
	freopen("reverse.in","r",stdin);
	freopen("reverse.out","w",stdout);
	int i=0,nlen=0,ans=0,num=0,flag=0;
	int N[21]={0};
	cin>>num;
	if(num<0)
	{
		num=-num;
		flag=1;
	}
	for(i=1;num!=0;i++)
	{
		N[i]=num%10;
		num/=10;
	}
	nlen=i-1;
	for(i=1;i<=nlen;i++)
	{
		ans=ans*10+N[i];
	}
	if(flag==0)cout<<ans<<endl;
	else
	{
		ans=-ans;
		cout<<ans<<endl;
	}
	fclose(stdin);
	fclose(stdout);
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值