数字的处理与判断
题目描述
给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123
输入
一个不大于5位的数字
输出
三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数
样例输入
12345
样例输出
5
1 2 3 4 5
54321
#include<iostream>
using namespace std;
int main()
{
int m,a,b,c,d,e,cnt=0;
cin >> m;
int n = m;
while (m > 0)
{
a = m % 10;
m = m / 10;
cnt++;
}
m = n;
if (cnt == 1)//一位数
{
cout <<cnt << endl << m << endl << m<<endl;
}
else if (cnt == 2)
{
a = m % 10;
b = m / 10 % 10;
m = m / 10;
cout << cnt << endl << b << " " << a << endl << a << b<<endl;
}
else if (cnt == 3)
{
a = m % 10;
b = m / 10 % 10;
c = m / 100 % 10;
m = m / 10;
cout <<cnt << endl << c << " " << b << " " << a << endl << a << b << c<<endl;
}
else if (cnt == 4)
{
a = m % 10;
b = m / 10 % 10;
c = m / 100 % 10;
d = m / 1000 % 10;
m = m / 10;
cout <<cnt << endl <<d<<" "<< c << " " << b << " " << a << endl << a << b << c<<d<<endl;
}
else if (cnt == 5)
{
a = m % 10;
b = m / 10 % 10;
c = m / 100 % 10;
d = m / 1000 % 10;
e = m / 10000 % 10;
cout <<cnt<< endl<<e<<" "<< d << " " << c << " " << b << " " << a << endl << a << b << c << d<<e<<endl;
}
return 0;
}
总结:由于不知道m的位数,可以先通过一次循环记录m的位数,再通过位数进行分类;
注意:应该先把m的值复制一份,判断位数之后再赋值给m,以免判断位数之后,m的值发生改变。
错误点——①格式错误:每种情况下,首先输出的值为cnt,而不能依次输出“1”,“2”,“3”…;
②每种情况下,由于位数已知,不用再使用循环。
Ps:后续有数组的求法,可以再用新的写法再写过。