C刷题记录-1009

题目描述

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

输入

一个不大于5位的数字

输出

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

样例输入

12345

样例输出

5
1 2 3 4 5
54321

一、
 1 #include <stdio.h>
 2 
 3 /* 定义结构体用于存放"/"和"%"的结果*/
 4 typedef struct {
 5  int x;
 6  int y;
 7 }remainder;
 8 
 9 /*定义函数,计算当前最高位和余数*/
10 remainder get_number(int number,int k){
11   remainder r;
12   r.x = number/k;
13   r.y = number%k;
14   return r;
15 }
16 int main(){
17   int number, count=0,len =0, div=10000,number_2 = 0,count_2=1;
18 
19   scanf("%d",&number);
20   /*while循环获取数字长度*/
21   while ((get_number(number,div).x) == 0)
22   {
23      count++;
24      div=div/10;
25   }
26   len = 5-count;
27   printf("%d\n",len);
28 
29   /*while循环获取各个位以及倒输出数字*/
30   while ((get_number(number,div).x) != 0)
31   {
32     printf("%d ", get_number(number,div).x);
33     switch(count_2){
34       case 5: number_2 += 10000*get_number(number,div).x;count_2++; break;
35       case 4: number_2 += 1000*get_number(number,div).x;count_2++; break;
36       case 3: number_2 += 100*get_number(number,div).x;count_2++; break;
37       case 2: number_2 += 10*get_number(number,div).x;count_2++; break;
38       case 1: number_2 += get_number(number,div).x;count_2++; break;
39       default: break;
40     }
41 
42     number = get_number(number,div).y;
43     div=div/10;
44     if(div == 1)
45     {
46       printf("%d\n", get_number(number,div*10).y);
47       break;
48     }
49     }
50     switch(count_2){
51       case 5: number_2 += 10000*get_number(number,div).x;count_2++; break;
52       case 4: number_2 += 1000*get_number(number,div).x;count_2++; break;
53       case 3: number_2 += 100*get_number(number,div).x;count_2++; break;
54       case 2: number_2 += 10*get_number(number,div).y;count_2++; break;
55       default: break;
56     }
57 
58   printf("%d",number_2);
59   return 0;
60 }

二、

 1 /*转换成字符串来实现*/
 2 #include <stdio.h>
 3 #include <string.h>
 4 #include <stdlib.h>
 5 
 6 int main(){
 7   int number,number_inverse = 0,count = 1,temp = 0;
 8   char str[5];
 9   char *p_str;
10   scanf("%d",&number);
11   p_str = itoa(number,str,10);
12 
13   printf("%d\n",strlen(p_str));
14   while(*p_str != '\0')
15   {
16     printf("%d ",(int)(*p_str-'0'));
17     switch (count){
18       case 1:   temp=(int)((*p_str)-'0') * 1; count++; break;
19       case 2:   temp=(int)((*p_str)-'0') * 10; count++;break;
20       case 3:   temp=(int)((*p_str)-'0') * 100; count++;break;
21       case 4:   temp=(int)((*p_str)-'0') * 1000; count++;break;
22       case 5:   temp=(int)((*p_str)-'0') * 10000; count++; break;
23       default:
24         break;
25 
26     }
27 
28     number_inverse += temp;
29     p_str ++;
30   }
31   printf("\n%d",number_inverse);
32 
33   return 0;
34 
35 }

 

posted @ 2017-11-07 10:52  遇逆境、处之泰然  阅读(160)  评论(0编辑  收藏  举报