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 2
23 12
-4 3
样例输出:
111
1B
-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);
}
}
结果:
知识点总结:
递归的进一步学习,多种十进制转其它进制的方法的学习。
心得体会:
我的该程序较为麻烦,看了老师的代码之后感觉自己的好麻烦。