1474 十进制转m进制——http://codevs.cn/problem/1474/

第一部分:题目

题目描述 Description

将十进制数n转换成m进制数 m<=16

n<=100

输入描述 Input Description

共一行

n和m

输出描述 Output Description

共一个数

表示n的m进制

样例输入 Sample Input

样例1:10 2

样例2:100 15

样例输出 Sample Output

样例1:1010

样例2:6A

第二部分:思路

十进制转换成其他进制:反向取余法。

反向取余法定义:

例如把n转换成m进制:

1,用n/m,得余数r,存入数组,执行步骤2;

2,如果n/m等于0的话,数组中的数反向输出就是n的m进制,(需要注意的是当进制为11~16的时候,10~15对应于:A,B,C,D,E,F.)

    如果n/m不等于0,继续执行步骤1.

第三部分:代码

#include<stdio.h>
int main()
{
    int n,m,i,s[10],len=0;
    scanf("%d %d",&n,&m);
    while(n)
    {
        s[len++]=n%m;
        n/=m;
    }
    for(i=len-1;i>=0;i--)
    {
        switch(s[i])
        {
            case 15:
                {
                    printf("F");
                    break;
                }
            case 14:
                {
                    printf("E");
                    break;
                }
            case 13:
                {
                    printf("D");
                    break;
                }
            case 12:
                {
                    printf("C");
                    break;
                }
            case 11:
                {
                    printf("B");
                    break;
                }
            case 10:
                {
                    printf("A");
                    break;
                }
            default:
                {
                    printf("%d",s[i]);
                    break;
                }
        }
    }
    printf("\n");
    return 0;
}

 

 

posted @ 2016-03-30 14:22  喝醉的香锅锅  阅读(221)  评论(0编辑  收藏  举报