n进制转十进制c语言自定义函数
时间: 2024-09-16 15:05:15 浏览: 49
在C语言中,你可以通过自定义函数将任意基数的数字转换成十进制数。这里是一个简单的示例,展示如何实现一个函数`decimal_from_base(n, digits)`来完成这个任务:
```c
#include <stdio.h>
#include <string.h>
// 自定义函数:n进制转十进制
int decimal_from_base(int base, char* number) {
int len = strlen(number);
long result = 0;
for (int i = len - 1; i >= 0; i--) {
// 将字符转换为整数,并考虑base值
int digit_value = number[i] - '0'; // 对于ASCII,非数字字符会小于'0'
if (digit_value >= base) {
printf("输入错误: %c不是有效的%dbase数字\n", number[i], base);
return -1;
}
result += digit_value * pow(base, len - i - 1); // 从最低位开始计算
}
return result;
}
int main() {
char input_number[] = "1A"; // 假设这是一个十六进制数
int base = 16;
int decimal_num = decimal_from_base(base, input_number);
if (decimal_num != -1) {
printf("十进制表示为:%d\n", decimal_num);
}
return 0;
}
```
在这个例子中,函数`decimal_from_base`接收一个基数和一个字符串作为输入,然后遍历字符串的每个字符,将其转换为对应的数值,并累加到结果中。如果输入的字符不是有效基数下的数字,函数会返回-1并提示错误。
阅读全文