PTA 7-250 递归函数输出一个十进制整数的十六进制形式
分数 100
作者 于延
单位 哈尔滨师范大学
任务描述
编写函数,函数的参数是整数N,在函数中输出整数N的十六进制形式(递归方法实现)。主函数中输入整数a和b,输出从a到b的所有整数的十六进制形式。具体输出格式参考样例。
输入样例:
200 210
输出样例:
C8 C9 CA CB CC CD CE CF D0 D1 D2
输入样例:
20000 20010
输出样例:
4E20 4E21 4E22 4E23 4E24 4E25 4E26 4E27 4E28 4E29 4E2A
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
#include <stdio.h>
void hexadecimal(int inte){ //转换成十六进制输出
if(inte == 0) //该十进制数为0时
return;
hexadecimal(inte / 16); //调用自身
if(inte % 16 >= 10){ //余数 >= 10时对应的字母
switch(inte % 16){
case 10:
printf("A");
break;
case 11:
printf("B");
break;
case 12:
printf("C");
break;
case 13:
printf("D");
break;
case 14:
printf("E");
break;
case 15:
printf("F");
break;
}
}else{
printf("%d", inte % 16);
}
}
int main(){
int m, n;
scanf("%d %d", &m, &n);
for(int i = m; i <= n; i++){ //循环范围内的十进制整数
hexadecimal(i); //调用函数
if(i == n) //不输出空格的条件
printf("");
else //输出空格
printf(" ");
}
return 0;
}
解题思路:
用短除法的思想每次除16的余数就是该十六进制数的一位,第一次除就是十六进制数的最后一位,以此类推;因为递归输出是逆序输出,所以输出后就是十六进制数。
注:十六进制数求余数(>= 10)时,用字母表示;如:10用字母’A’表示。
归属知识点:
选择结构
递归