小王做算术

小王做算术

时间: 1ms        内存:128M

描述:

刚上小学的小王只会做很简单的加减法,他不懂很多位数的算术运算,默认地先数数这个数的位数,再把它拆分为多个1位数,比如12345,小王会把它拆分为1,2,3,4,5,假定你是小王,输入一个不多于5位的正整数,要求: 

(1)求出它是几位数; 

(2)分别输出每一位数字; 

(3)按逆序输出各位数字。

输入:

输入一个不多于5位的正整数。

输出:

输出数据有3行,第一行为正整数位数,第二行为各位数字,第三行为逆序的各位数字。

示例输入:

123

示例输出:

3
1 2 3
3 2 1

提示:

参考答案(内存最优[1092]):

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n,i,flag =0,a[10];
    scanf("%d",&n);
    while(n)//分离整数,
    {
        a[flag++] = n % 10;
        n = n / 10;
    }
    printf("%d\n",flag);
    for(i = flag-1;i >= 0;i--)//正序输出
    {
        if(i==0)printf("%d\n",a[i]);
        else printf("%d ",a[i]);
    }
    for(i = 0; i < flag;i++)//逆序输出
    {
        if(i==flag-1)printf("%d\n",a[i]);
        else printf("%d ",a[i]);
    }

    return 0;
}

参考答案(时间最优[0]):

#include<stdio.h>
#include<stdlib.h>
int main()
{
    int n,i,flag =0,a[10];
    scanf("%d",&n);
    while(n)//分离整数,
    {
        a[flag++] = n % 10;
        n = n / 10;
    }
    printf("%d\n",flag);
    for(i = flag-1;i >= 0;i--)//正序输出
    {
        if(i==0)printf("%d\n",a[i]);
        else printf("%d ",a[i]);
    }
    for(i = 0; i < flag;i++)//逆序输出
    {
        if(i==flag-1)printf("%d\n",a[i]);
        else printf("%d ",a[i]);
    }

    return 0;
}

题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注