输入一个整数,要求(1)求出它是几位数;(2)分别输出每一位数字.例如123,输出123;(3)按逆序输出各位数字,例如原数为 321,应输出 123


int main() {

	int n;
	scanf("%d", &n);
	int temp = n;
	//1.求位数
	int count = 0;
	/* 这样写有个问题,如果输入0,位数也输出0
	while (n != 0) {
		n /= 10;
		count++;
	}
	*/
	do {
		count++;
		n /= 10;
	} while (n != 0);
	printf("%d\n", count);

	//2.从高位开始,输出每一位
	//12345  / 10000  => 1   12345 %= 10000 => 2345
	//2345   /1000    => 2   2345 %= 1000   => 345
	//...
	//5     5/1       =>5    5 %= 1         =>0   直到n为0
	int power =pow(10, count - 1);  //pow返回double类型,强转一下也可以  int power=(int)pow(10,count-1);
	n = temp;
	/* 解决负数问题 这个根据实际情况
	if (n < 0) {
		printf("-");
		n = -n;
	}
	*/
	while (n != 0) {
		printf("%d ", (n / power));   //除法返回double类型, 强转下也可以  printf("%d ", (int)(n / power));
		n %= power;
		power /= 10;   //每次减少一个0
	}
	printf("\n");

	//3.逆序输出每一位数
	//12345 -> 12345%10 得个位  12345/=10   => 1234
	//...
	//1      ->1%10       1/=10        => 0
	while (temp != 0) {
		printf("%d ", temp % 10);
		temp /= 10;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值