第十二周 oj训练 进制转换

来源:互联网 发布:淘宝窗帘拍摄地点 编辑:程序博客网 时间:2024/05/20 23:39
Copyright (c) 2016 烟台大学计算机与控制工程学院All rights reserved.文件名称:test.cpp作者:何定钦完成日期:2016年11月22日题目描述:    输入一个十进制数N,将它转换成R进制数输出。输入:    输入数据包含多个测试实例,每个测试实例包含两个整数N(32位整数)和R(2<=R<=16, R<>10)。输出:    为每个测试实例输出转换后的数,每个输出占一行。如果R大于10,则对应的数字规则参考16进制(比如,10用A表示,等等)。样例输入:7 223 12-4 3样例输出:1111B-11    分析:#include <stdio.h>#include <stdlib.h>void swap(int N,int R);int main(){    int N,R;    while(scanf("%d%d",&N,&R)!=EOF)    {        if(N==0)            printf("%d",N);        else            swap(N,R);        printf("\n");    }    return 0;}void swap(int N,int R){    if(N==0)        return;    else if(N<0)    {        printf("-");        N=-N;    }    else        N=N;    switch(R)    {    case 2:        swap(N/2,2);        printf("%d",N%2);        break;    case 3:        swap(N/3,3);        printf("%d",N%3);        break;    case 4:        swap(N/4,4);        printf("%d",N%4);        break;    case 5:        swap(N/5,5);        printf("%d",N%5);        break;    case 6:        swap(N/6,6);        printf("%d",N%6);        break;    case 7:        swap(N/7,7);        printf("%d",N%7);        break;    case 8:        swap(N/8,8);        printf("%d",N%8);        break;    case 9:        swap(N/9,9);        printf("%d",N%9);        break;    case 10:        swap(N/10,10);        printf("%d",N%10);        break;    default:        swap(N/R,R);        if(N%R<10)            printf("%d",N%R);        else            printf("%c",'A'+N%R-10);    }}

结果:


知识点总结:

递归的进一步学习,多种十进制转其它进制的方法的学习。

心得体会:

我的该程序较为麻烦,看了老师的代码之后感觉自己的好麻烦。

0 0
原创粉丝点击