题目描述
给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123
输入
一个不大于5位的数字
输出
三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数
样例输入
12345
样例输出
5
1 2 3 4 5
54321
提示
哈姆雷特:数字还是字符?这是一个问题!
来源/分类
C语言
题目截图:
思路:
利用:
%运算,和/运算!将独立的数存入一个数组里!
%运算取得余数,/运算使得参与运算的数不断减小!
我们定义一个最大的数组:长度为5!这下总能装得下吧~哈哈~
int b[5]={0};
先是有个判断条件:必须要5位数以内!
if(a<1000000)
{}
就用这个啦!
但是那个统计位数,可是让人头痛呀!只好再找个变量啦~
利用a来进行运算,但是a的值后面还要用到,因此只能用一个临时变量啦!
定义一个:t
c初始化为0!每执行一次运算就加一!这样就可以获得它的位数啦!
do{
t/=10;
c++;
}while(t!=0);
获取独立的数:
for(int i=c-1;i>=0;i--)
{
b[i]=a%10;
a/=10;
}cout<<c<<endl;
假如输入的是:12345.
我们,会先得到5!这个应该存储在最后面的!所以就把数组颠倒一下!
从:b[c-1].开始储存数字!
具体代码:
#include<iostream>
using namespace std;
int main()
{
int a,t;int b[5]={0};int c=0;
cin>>a;
t=a;
do{
t/=10;
c++;
}while(t!=0);
if(a<1000000)
{
for(int i=c-1;i>=0;i--)
{
b[i]=a%10;
a/=10;
}cout<<c<<endl;
for(int i=0;i<c;i++)
{
cout<<b[i]<<" ";
}cout<<endl;
for(int i=0;i<c;i++)
{
cout<<b[c-1-i];
}
}
}
代码截图:
OJ执行截图:
OK!