c语言进制转换(函数专题)
时间: 2024-02-28 18:49:12 浏览: 95
以下是C语言实现进制转换函数的例子:
```c
#include <stdio.h>
#include <math.h>
int convertToDecimal(int num, int base) {
int decimalNum = 0, i = 0, rem;
while (num != 0) {
rem = num % 10;
num /= 10;
decimalNum += rem * pow(base, i);
++i;
}
return decimalNum;
}
int main() {
int num, base;
printf("请输入一个数字: ");
scanf("%d", &num);
printf("请输入数字的进制: ");
scanf("%d", &base);
printf("%d转换为十进制为: %d", num, convertToDecimal(num, base));
return 0;
}
```
该程序将输入的数字和进制作为参数传递给`convertToDecimal`函数,该函数将数字从给定的进制转换为十进制,并返回十进制值。然后,主函数将返回的十进制值打印到控制台上。
相关问题
c语言进制转换十进制转为十六进制的函数结果总多一个零
在C语言中,可以使用sprintf函数将十进制数转为十六进制字符串。当转换结果的十六进制数只有一位时,sprintf函数会在结果前面添加一个零。下面是一个示例代码:
```c
#include <stdio.h>
void decimalToHex(int decimal) {
char hex[10];
sprintf(hex, "%X", decimal);
printf("转换结果:%s\n", hex);
}
int main() {
int decimal = 15;
decimalToHex(decimal);
return 0;
}
```
运行以上代码,输出结果为:
```
转换结果:F
```
可以看到,当十进制数为15时,转换结果为十六进制的F,而不是0F。这是因为sprintf函数会自动在结果前面添加一个零,以保持结果的一致性。
c语言进制转换 十进制转换八进制
C语言中可以使用sprintf函数将十进制转换为八进制,具体实现方法如下:
```
int num = 123; // 十进制数
char oct[20]; // 存放八进制数的字符串
sprintf(oct, "%o", num); // 将十进制数转换为八进制数
printf("%s", oct); // 输出八进制数
```
另外,还可以使用位运算符将十进制转换为八进制,具体实现方法如下:
```
int num = 123; // 十进制数
int oct = 0; // 存放八进制数
int i = 1; // 位数
while (num != 0) {
oct += (num % 8) * i; // 取余数并乘以位数,加到八进制数中
num /= 8; // 将十进制数除以8
i *= 10; // 位数乘以10
}
printf("%d", oct); // 输出八进制数
```
阅读全文