用c++写一个其他进制数转换为10进制数
时间: 2024-05-09 07:19:57 浏览: 13
以下是将八进制数转换为十进制数的C代码:
```c
#include <stdio.h>
#include <math.h>
int main() {
int octal, decimal = 0, i = 0;
printf("Enter an octal number: ");
scanf("%d", &octal);
while (octal != 0) {
decimal += (octal % 10) * pow(8, i);
++i;
octal /= 10;
}
printf("Decimal number is: %d", decimal);
return 0;
}
```
解释:
1. 首先定义了三个变量,`octal` 用于存储输入的八进制数,`decimal` 用于存储转换后的十进制数,`i` 用于记录当前位数。
2. 通过 `scanf` 函数获取用户输入的八进制数。
3. 使用循环进行八进制数转十进制数的操作。每次循环,将输入的八进制数的最后一位取出来,乘上对应的权值(8的i次方),并加到 `decimal` 变量中。然后将 `i` 增加 1,将输入的八进制数除以 10,继续下一次循环。
4. 循环结束后,打印出转换后的十进制数。
需要注意的是,这里使用了 `pow` 函数来计算权值,这个函数需要包含 `math.h` 头文件。此外,如果输入的八进制数中含有非法字符,程序可能会出现异常。
相关问题
用c++将一个十六进制数转换成十进制数
以下是一个将十六进制数转换成十进制数的C代码示例:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int main()
{
char hex[17];
long long decimal, place;
int i = 0, val, len;
decimal = 0;
place = 1;
/* 读取十六进制数 */
printf("输入一个十六进制数: ");
scanf("%s", hex);
/* 计算十六进制数的长度 */
len = strlen(hex);
len--;
/* 将十六进制数转换成十进制数 */
for(i=0; hex[i]!='\0'; i++)
{
/* 将十六进制字符转换成对应的十进制值 */
if(hex[i]>='0' && hex[i]<='9')
{
val = hex[i] - 48;
}
else if(hex[i]>='a' && hex[i]<='f')
{
val = hex[i] - 97 + 10;
}
else if(hex[i]>='A' && hex[i]<='F')
{
val = hex[i] - 65 + 10;
}
decimal += val * pow(16, len);
len--;
}
printf("十六进制数为 %s,对应的十进制数为 %lld\n", hex, decimal);
return 0;
}
```
该程序读取一个十六进制数,并将其转换成一个长整型的十进制数。程序首先计算十六进制数的长度,然后从左到右遍历每个十六进制字符,并将其转换成对应的十进制值。最后,程序使用幂函数计算每个十六进制字符的权重,将其乘以对应的十进制值,并将所有结果相加得出最终的十进制数。
用c++写一个将二进制数转换为十进制数,用c++实现
以下是将二进制数转换为十进制数的 C++ 代码实现:
```c++
#include <iostream>
#include <cmath>
using namespace std;
int main() {
long long binaryNumber, decimalNumber = 0;
int i = 0, remainder;
cout << "Enter a binary number: ";
cin >> binaryNumber;
while (binaryNumber != 0) {
remainder = binaryNumber % 10;
binaryNumber /= 10;
decimalNumber += remainder * pow(2, i);
++i;
}
cout << "Decimal number is: " << decimalNumber;
return 0;
}
```
代码的基本思路是将输入的二进制数按照位数逐一转换为十进制数,最后将每一位上的数值相加即可得到最终的十进制数。