首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

进制变换(将M进制的数X转换为N进制的数输出)

2013-03-14 
进制转换(将M进制的数X转换为N进制的数输出)题目#include stdio.h#include stdlib.h#include string.

进制转换(将M进制的数X转换为N进制的数输出)
题目

#include <stdio.h>#include <stdlib.h>#include <string.h> #define LEN 2000 char str[LEN], another[LEN];int  ten[LEN]; int switchToTen();void switchToAnother(int k, int n); int main(){    int m, n, k;     while (scanf("%d %d", &m, &n) != EOF) {        scanf("%s", str);                 k = switchToTen(m);         switchToAnother(k, n);      }     return 0;} int switchToTen(int m){    int i, j, len, k, c;     //初始化    len = strlen(str);    k = 1;    memset(ten, 0, sizeof(ten));     //转换为10进制数    for (i = 0; i < len; i ++) {        for (j = 0; j < k; j ++) {            ten[j] *= m;        }        if (str[i] >= '0' && str[i] <= '9') {            ten[0] += str[i] - '0';        }else if (str[i] >= 'A' && str[i] <= 'Z') {            ten[0] += str[i] - 'A' + 10;        }else if (str[i] >= 'a' && str[i] <= 'z') {            ten[0] += str[i] - 'a' + 10;        }         for (j = c = 0; j < k; j ++) {            ten[j] += c;                 if (ten[j] >= 10) {                c = ten[j] / 10;                ten[j] %= 10;               }else {                c = 0;            }        }         while (c) {            ten[k ++] = c % 10;            c /= 10;        }    }      //翻转数组    int temp;    for (i = 0, j = k - 1; i < j; i ++, j --) {        temp = ten[i];        ten[i] = ten[j];        ten[j] = temp;    }    return k;} void switchToAnother(int k, int n){    int sum, i, r, t, d;     sum = 1;    r = 0;    memset(another, 0, sizeof(another));     while (sum) {        sum = 0;         for (i = 0; i < k; i ++) {            d = ten[i] / n;            sum += d;             if (i == k - 1) {                t = ten[i] % n;                if (t >= 0 && t <= 9) {                    another[r] = t + '0';                }else {                    another[r] = t - 10 + 'a';                }                r ++;            }else {                ten[i + 1] += ten[i] % n * 10;            }             ten[i] = d;        }    }         //打印是输出    for (i = r - 1; i >= 0; i --) {        printf("%c", another[i]);    }    printf("\n");}/**************************************************************    Problem: 1080    User: wangzhengyi    Language: C    Result: Accepted    Time:170 ms    Memory:920 kb****************************************************************/


热点排行