770. 循环基础-数位分解

计算鸭给了你一个整数,要求从个位开始分离出它的每一位数字。

输入

输入一个整数,整数在 11 到 108108 之间。

输出

从个位开始按照从低位到高位的顺序依次输出每一位数字。数字之间以一个空格分开。

输入
123
输出
3 2 1

题目简析:

题目很简单,这里有三种方法

第一种:

使用了scanf

%1d的意思是只把输入的1位赋值,剩下的不要

g代表个位,s代表十位,b代表百位

#include<bits/stdc++.h>
using namespace std;
int main(){
	int g,s,b;
	scanf("%1d%1d%1d",&b,&s,&g);
	printf("%d %d %d",g,s,b);
	return 0;
}
第二种:

这个方法人人都是知道的吧~

#include<bits/stdc++.h>
using namespace std;
int main(){
	int g,s,b,n;
	scanf("%d",&n);
	g=n%100%10;
	s=n%10/10;
	b=n/100;
	printf("%d %d %d",g,s,b);
	return 0;
}

but!以上两种只是限于知道了位数(n)才能用,题目要求的是:不知道位数!!!

那么怎么办呢?

我们好像可以用strlen(n)但是现在用不到

到这里大家停一下,思考思考~

思考完了吗?

我们可以一直%10获得位数

是不是很有道理?

那么猜想存在,实践开始!

#include<bits/stdc++.h>
//一天一个芝士~ 
using namespace std;
int main(){
	int a; //用于存各个位数上的数字 
	int n,t=0;
	scanf("%d", &n);
	int x=n;
	while(x>0){
		a=x%10; //提取位数 
		x/=10; //重点!不要写成%!!!(我就是因为写成了%改了3分钟-w-) 
		cout<<a<<" ";
	}
    return 0;
}

完成~so easy

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值