用c写一个八进制转十进制得代码
时间: 2023-06-19 07:09:41 浏览: 45
以下是用C语言编写的八进制转十进制的代码:
```c
#include <stdio.h>
int main() {
int octal, decimal = 0, base = 1;
printf("Enter an octal number: ");
scanf("%d", &octal);
while (octal != 0) {
decimal += (octal % 10) * base;
octal /= 10;
base *= 8;
}
printf("The decimal equivalent is: %d", decimal);
return 0;
}
```
运行结果:
```
Enter an octal number: 64
The decimal equivalent is: 52
```
这个程序首先要求用户输入一个八进制数,然后使用 while 循环将其转换为十进制数。在每一次循环中,我们使用取模运算符 `%` 取出八进制数的最后一位,将其乘以当前位的基数(8的幂次),并将结果累加到十进制数中。然后,我们将八进制数除以10,以便在下一次循环中处理下一位,同时将基数乘以8,以便在下一次循环中处理下一位的基数。最后,我们打印出计算出的十进制数。
相关问题
用c语言写顺序栈十进制转换八进制
以下是用C语言实现十进制转八进制的顺序栈代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define STACK_SIZE 100
typedef int ElemType;
typedef struct {
ElemType data[STACK_SIZE];
int top;
} SqStack;
void InitStack(SqStack *S) {
S->top = -1;
}
int StackEmpty(SqStack *S) {
if (S->top == -1) {
return 1;
}
else {
return 0;
}
}
int Push(SqStack *S, ElemType x) {
if (S->top == STACK_SIZE - 1) {
return 0;
}
else {
S->top++;
S->data[S->top] = x;
return 1;
}
}
int Pop(SqStack *S, ElemType *x) {
if (StackEmpty(S)) {
return 0;
}
else {
*x = S->data[S->top];
S->top--;
return 1;
}
}
void DecimalToOctal(int n) {
SqStack S;
InitStack(&S);
while (n != 0) {
Push(&S, n % 8);
n = n / 8;
}
printf("转换为八进制为:");
while (!StackEmpty(&S)) {
ElemType x;
Pop(&S, &x);
printf("%d", x);
}
}
int main() {
int n;
printf("请输入一个十进制数:");
scanf("%d", &n);
DecimalToOctal(n);
return 0;
}
```
运行结果:
```
请输入一个十进制数:123
转换为八进制为:173
```
用c语言写一个进制转换的代码
以下是一个C语言的进制转换代码,可以将十进制数转换为二进制、八进制和十六进制:
```c
#include <stdio.h>
void dec2bin(int num); // 将十进制转换为二进制
void dec2oct(int num); // 将十进制转换为八进制
void dec2hex(int num); // 将十进制转换为十六进制
int main() {
int num;
printf("请输入一个十进制数:");
scanf("%d", &num);
printf("该数的二进制表示为:");
dec2bin(num);
printf("\n该数的八进制表示为:");
dec2oct(num);
printf("\n该数的十六进制表示为:");
dec2hex(num);
printf("\n");
return 0;
}
void dec2bin(int num) {
int i, j, bin[32];
for (i = 0; num > 0; i++) {
bin[i] = num % 2;
num = num / 2;
}
for (j = i - 1; j >= 0; j--)
printf("%d", bin[j]);
}
void dec2oct(int num) {
int i, j, oct[32];
for (i = 0; num > 0; i++) {
oct[i] = num % 8;
num = num / 8;
}
for (j = i - 1; j >= 0; j--)
printf("%d", oct[j]);
}
void dec2hex(int num) {
int i, j, hex[32];
for (i = 0; num > 0; i++) {
hex[i] = num % 16;
num = num / 16;
}
for (j = i - 1; j >= 0; j--) {
if (hex[j] < 10)
printf("%d", hex[j]);
else
printf("%c", hex[j] + 55);
}
}
```
输入一个十进制数后,程序会自动将其转换为二进制、八进制和十六进制,并输出结果。例如,输入10,程序输出:
```
请输入一个十进制数:10
该数的二进制表示为:1010
该数的八进制表示为:12
该数的十六进制表示为:A
```