zoukankan      html  css  js  c++  java
  • 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
    ",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
    ", 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
    ",strlen(p_str));
    14   while(*p_str != '')
    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("
    %d",number_inverse);
    32 
    33   return 0;
    34 
    35 }
  • 相关阅读:
    折半枚举(双向搜索)
    弹性碰撞
    集合的整数表示
    反转(开关问题)
    尺取法
    floor函数用法
    二分搜索
    4. 差分约束系统
    二叉树的表达式求值
    关于移动app开发的一些不错的站点
  • 原文地址:https://www.cnblogs.com/xiangxyq/p/7797935.html
Copyright © 2011-2022 走看看