逆序数字

题目描述

给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123

输入

一个不大于5位的数字

输出

三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数

样例输入

12345

样例输出

5
1 2 3 4 5
54321

提示

哈姆雷特:数字还是字符?这是一个问题!

来源

题解:

#include<stdio.h>
#include<math.h>
int main()
{
    int num,indiv,ten,hundred,thousand,ten_thousand,place;
    scanf("%d",&num);
    ten_thousand=num/10000;
    thousand=(int)(num-ten_thousand*10000)/1000;
    hundred=(int)(num-ten_thousand*10000-thousand*1000)/100;
    ten=(int)(num-ten_thousand*10000-thousand*1000-hundred*100)/10;
    indiv=(int)(num-ten_thousand*10000-thousand*1000-hundred*100-ten*10);
    if(num>9999)
        place=5;
    else if(num>999)
        place=4;
    else if(num>99)
        place=3;
    else if(num>9)
        place=2;
    else
        place=1;
    printf("%d\n",place);
   switch(place)
    {
      case 5:printf("%d %d %d %d %d\n",ten_thousand,thousand,hundred,ten,indiv);
             printf("%d%d%d%d%d",indiv,ten,hundred,thousand,ten_thousand);
             break;
      case 4:printf("%d %d %d %d\n",thousand,hundred,ten,indiv);
             printf("%d%d%d%d",indiv,ten,hundred,thousand);
             break;
      case 3:printf("%d %d %d\n",hundred,ten,indiv);
             printf("%d%d%d",indiv,ten,hundred);
             break;
      case 2:printf("%d %d\n",ten,indiv);
             printf("%d%d",indiv,ten);
             break;
      case 1:printf("%d\n",indiv);
             printf("%d",indiv);
             break;
    }
    return 0;
 
}
或:
#include<stdio.h>
 
int main() {
    int x,y[5],i,j;
    scanf("%d",&x);
    for(i=0;x!=0;i++) {
        y[i]=x%10;
        x=x/10;
    }
    printf("%d\n",i);
    for(j=i-1;j>0;j--)
        printf("%d ",y[j]);
    printf("%d",y[0]);
    putchar('\n');
    for(j=0;j<i;j++)
        printf("%d",y[j]);
    putchar('\n');
    return 0;
}
posted @ 2015-01-08 15:20  zach96  阅读(402)  评论(0编辑  收藏  举报