小王做算术
时间: 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;
}
题目和答案均来自于互联网,仅供参考,如有问题请联系管理员修改或删除。