PTA 逆序后四位

任务描述

程序每次读入一个至少4位数的正整数,然后输出其后4位按位逆序的数字。注意:当输入的数字含有结尾的0时,输出不应带有前导的0。比如输入57000,输出应该是7。

输入格式:

每个测试的数都是一个正整数。

输出格式:

输出逆序的数。

思路分享

叠甲:萌新,语句基本学会一点做一点相关题目,史山请见谅,因为站内大佬发的有点看不懂,请轻喷。

本质还是对if else的应用,通过一步一步检测来筛掉错误条件,这个办法适用于大部分有限区间的分支问题。    但对于没有区间的正整数求和,我更喜欢用for的无条件循环, 对于取最大数或者中间数,用if配合比大小,重新分配(站内有大佬发过代码,我也是学习而来) 站内还有一种思路就是赋值检测是不是0,这样可以把所有零删掉,也可以改一下代码变成删掉前导的0.

具体代码用途已注释,如有其他见解欢迎评论区留言。

#include<stdio.h>
int main()
{
	int n,a,b,c,d;
    //对整形字母进行定义,最好使用易懂的英文//
	scanf("%d",&n);//用户输入//
	a=n%10;//个位,也即倒序输出第一位//
	b=(n/10)%10;//十位,也即倒序输出第二位//
	c=(n/100)%10;//百位,也即倒序输出第三位//
	d=(n/1000)%10;//千位,也即倒序输出第四位//
    if ((a==0)&&(b==0)&&(c==0)){
//开始判断,在前三位都为0的情况下,输出第四位//
//第四位为零也无所谓,题目只要求不输出前导的0,即不能00,但可以0//
    	printf("%d",d);
	}else if ((a==0)&&(b==0)&&(c!=0)){
//在前两位都为0,且第三位不为零的情况下,输出第三位和第四位//
//因为只要求不输出前导的0,在我们找到一个非零数后,这个非零数后面的数就不需要判断了//
		printf("%d%d",c,d);
	}else if ((a==0)&&(b!=0)){
//在第一位为零,第二位不为零的情况下,输出第二位第三位第四位//
		printf("%d%d%d",b,c,d);
	}else if ((a!=0)){
//在第一位不为零的情况下,输出全部位数//
		printf("%d%d%d%d",a,b,c,d);
	}else {//此项为检查项,用于检测是否把==只写成=,从而导致输出错误//
		printf(")");
	}
    return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值