2.设计一个C语言递归算法,把任一个十进制正整数转换为 S进制(2S9)数输出 void Transform(long num,int S); //把十进制正整数转换为 S进制数输出的递归算法
时间: 2023-06-19 18:04:20 浏览: 46
下面是一个递归算法,将十进制正整数 num 转换为 S 进制数并输出。
```
void Transform(long num, int S) {
int remainder = num % S;
if (num >= S) {
Transform(num / S, S);
}
if (remainder < 10) {
printf("%d", remainder);
} else {
printf("%c", 'A' + remainder - 10);
}
}
```
该算法首先计算 num 除以 S 的余数,如果 num 大于等于 S,则递归调用 Transform() 函数将 num / S 转换为 S 进制数并输出。最后输出余数,如果余数小于 10,则输出数字,否则输出对应的字母。
相关问题
2.设计一个递归算法,把任一个十进制正整数转换为 S进制(2S9)数输出 void Transform(long num,int S); //把十进制正整数转换为 S进制数输出的递归算法
以下是将十进制正整数转换为S进制数的递归算法:
```
void Transform(long num, int S){
if(num == 0){
return;
}
else{
Transform(num / S, S);
int remainder = num % S;
if(remainder < 10){
cout << remainder;
}
else{
cout << (char)('A' + remainder - 10);
}
}
}
```
在递归函数中,我们首先检查num是否为0。如果是,我们就停止递归并返回。否则,我们将num除以S并递归调用函数。然后,我们计算num除以S的余数,并将其打印出来。如果余数小于10,则直接输出余数。否则,我们将余数转换为相应的大写字母并输出。这样,我们就可以将任何十进制正整数转换为S进制数。
用C语言编写一个递归函数,实现将任意的十进制正整数转化为八进制数
以下是用C语言编写的递归函数,实现将任意的十进制正整数转化为八进制数:
```c
#include <stdio.h>
void decToOct(int num) {
if(num == 0) {
return;
} else {
decToOct(num / 8);
printf("%d", num % 8);
}
}
int main() {
int decimal;
printf("Enter a decimal number: ");
scanf("%d", &decimal);
printf("Octal equivalent: ");
decToOct(decimal);
return 0;
}
```
在这个程序中,我们定义了一个递归函数 `decToOct`,它接收一个十进制正整数 `num` 作为参数,并将其转换为八进制数。
递归函数的基本情况是当输入的数为 0 时,递归结束并返回。否则,函数会继续递归调用自身,传递 `num / 8` 作为参数,并输出 `num % 8` 的余数。这样,每次递归调用都会输出一位八进制数,直到最后一次递归结束。
在 `main` 函数中,我们首先提示用户输入一个十进制正整数,并读取输入。然后,我们调用 `decToOct` 函数,并输出转换后的八进制数。