计算鸭给了你一个整数,要求从个位开始分离出它的每一位数字。
输入
输入一个整数,整数在 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