问题标题: 酷町堂:1749

0
0
已解决
武建豪
武建豪
中级天翼
中级天翼

横向数字转竖向经验值:1200

题目描述 Description

对于一个不多于4位正整数来说,每一位拆分为一个数字,竖向排列,并且在最开始标明这个数字总的位数。

输入描述 Input Description

一个正整数n(0<=n<=9999)

输出描述 Output Description

第一行输出n的位数,随后每一行输出n从高位到低位每一位的数字

样例输入 Sample Input

456

样例输出 Sample Output

3 4 5 6

(我才不是馋他经验

武建豪在2021-04-17 09:18:58追加了内容

武建豪在2021-04-24 19:15:39追加了内容

武建豪在2021-05-01 14:24:32追加了内容

千斤顶


0
已采纳
丁勇智
丁勇智
中级守护
中级守护

如:

读入456,这个数有三位,所以输出3;

再把456拆开变成单独的4,5,  6,依次输出;

最后输出 3 4 5 6

0
陈曦
陈曦
资深天翼
资深天翼

核心:

if(n==0){
        cout<<1<<endl;
        cout<<0;
        return 0;
    }
    while(x){
        i++;
        a[i]=x%10;
        x/=10;
    }

 

0
刘英杰
刘英杰
新手天翼
新手天翼

思路:

首先特判0的情况

若n等于0,特判输出

n不等于0时

while循环,条件为n大于0

循环体内,首先用数组a记录n模10(也就是n的个位),每次循环再让n除以10使得n减少一位。

(数组a的快捷记录可以使用a[++cnt]=……;)

最后,输出记录的cnt,接着由cnt到1降序循环输出a的每一个元素

刘英杰在2021-04-16 23:24:20追加了内容

输出要注意换行

0
丁勇智
丁勇智
中级守护
中级守护

样例让你先输出这个数的位数,再把每一位依次输出

0
0
武奕楷
武奕楷
新手天翼
新手天翼

int s,w,n,i=1,a[10];

int main(){

cin>>n;

if(n==0){

cout<<1<<endl<<0;

return 0;

}

while(n!=0){

w=n%10;

a[i]=w;

s++;

i++;

n/=10;

}

cout<<s<<endl;

for(int j=s;j>=1;j--){

cout<<a[j]<<endl;

}

return 0;

我要回答