• PAT (Advanced Level) Practise:1027. Colors in Mars


    【题目链接】

    People in Mars represent the colors in their computers in a similar way as the Earth people. That is, a color is represented by a 6-digit number, where the first 2 digits are for Red, the middle 2 digits for Green, and the last 2 digits for Blue. The only difference is that they use radix 13 (0-9 and A-C) instead of 16. Now given a color in three decimal numbers (each between 0 and 168), you are supposed to output their Mars RGB values.

    Input

    Each input file contains one test case which occupies a line containing the three decimal color values.

    Output

    For each test case you should output the Mars RGB value in the following format: first output "#", then followed by a 6-digit number where all the English characters must be upper-cased. If a single color is only 1-digit long, you must print a "0" to the left.

    Sample Input

    15 43 71
    

    Sample Output

    #123456

    问题分析:

    实际问题就是把10进制数转换为13进制数。

    提交代码:

     1 #include <stdio.h>
     2 
     3 int decimal_to_other(int decimal, int base, char *other, int size)
     4 {
     5     char str[256];
     6     int i, len, tmp;
     7 
     8     len = 0;
     9 
    10     //while(decimal != 0)
    11     do {
    12         tmp = decimal % base;
    13         if(tmp >= 10)
    14         {
    15             str[len] = tmp - 10 + 'A'; 
    16         }
    17         else
    18         {
    19             str[len] = tmp + '0';
    20         }
    21         len++;
    22         decimal /= base;
    23     } while(decimal != 0);
    24 
    25     for(i = 0; i < len && i < size-1; i++)
    26     {
    27         other[i] = str[len-1-i];
    28     }
    29 
    30     other[i] = '';
    31 
    32     return len;
    33 }
    34 
    35 int main(void)
    36 {
    37     int R, G, B;
    38     int rl, gl, bl;
    39     char r[10];
    40     char g[10];
    41     char b[10];
    42 
    43     scanf("%d %d %d", &R, &G, &B);
    44 
    45     rl = decimal_to_other(R, 13, r, sizeof(r)/sizeof(r[0]));
    46     gl = decimal_to_other(G, 13, g, sizeof(g)/sizeof(g[0]));
    47     bl = decimal_to_other(B, 13, b, sizeof(b)/sizeof(b[0]));
    48 
    49     printf("#");
    50 
    51     if(rl == 1)
    52         printf("0");
    53     printf("%s", r);
    54 
    55     if(gl == 1)
    56         printf("0");
    57     printf("%s", g);
    58 
    59     if(bl == 1)
    60         printf("0");
    61     printf("%s", b);
    62  //printf("#%s%s%s", r, g, b);
    63     
    64     return 0;
    65 }
  • 相关阅读:
    IG GROUP开源RESTdoclet项目
    Visual Studio 2012 Update 1抢先看
    使用 Windows Azure 移动服务将云添加到您的应用
    WMF 3.0 RTM(包含PowerShell 3.0 )业已发布
    Node.js 0.9.2 发布(非稳定版)
    vsftpd 3.0.1 正式版发布
    Piggydb 6.2 发布,个人知识库管理
    Apache Commons Codec 1.7 发布
    Notepad++ 6.1.8 正式版发布
    gWaei 3.6.0 发布,英日词典
  • 原文地址:https://www.cnblogs.com/utank/p/4775577.html
Copyright © 2020-2023  润新知