输入一个八进制正整数,转换为十进制数并输出。要求用C语言指针实现
时间: 2024-03-10 09:50:54 浏览: 30
好的,可以使用以下代码实现:
```c
#include <stdio.h>
void oct2dec(int *num) {
int dec = 0, base = 1;
int oct = *num;
while (oct > 0) {
int digit = oct % 10;
dec += digit * base;
base *= 8;
oct /= 10;
}
*num = dec;
}
int main() {
int oct;
printf("请输入一个八进制正整数:");
scanf("%o", &oct);
oct2dec(&oct);
printf("转换为十进制数为:%d\n", oct);
return 0;
}
```
首先定义了一个 `oct2dec` 函数,它的参数是一个指针,指向一个整型变量。函数内部使用了一个循环,将八进制数转换为十进制数。最后将转换后的十进制数通过指针返回。
在 `main` 函数中,先输入一个八进制数,然后调用 `oct2dec` 函数进行转换,并输出结果。
注意,使用 `%o` 格式化字符可以直接将八进制数输入到变量中。
相关问题
用指针实现:输入一个八进制正整数,转换为十进制数并输出。
好的,可以使用以下代码实现:
```c
#include <stdio.h>
int main() {
int octal_num, decimal_num = 0, base = 1;
printf("请输入一个八进制正整数:");
scanf("%o", &octal_num);
while (octal_num != 0) {
int rem = octal_num % 10;
decimal_num = decimal_num + rem * base;
octal_num = octal_num / 10;
base = base * 8;
}
printf("转换为十进制数为:%d\n", decimal_num);
return 0;
}
```
这段代码中,我们首先通过 `scanf` 函数输入一个八进制正整数,然后使用循环和取模运算将其转换为十进制数,并存储在变量 `decimal_num` 中,最后使用 `printf` 函数输出结果。
用c语言将一个十进制正整数转换为r进制数,并输出转换后的值,用链栈实现
以下是使用链栈实现将一个十进制正整数转换为r进制数的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链栈节点结构体
typedef struct node {
int data;
struct node *next;
} Node, *LinkStack;
// 初始化链栈
LinkStack initStack() {
LinkStack top = (LinkStack)malloc(sizeof(Node));
top->next = NULL;
return top;
}
// 判断链栈是否为空
int isEmpty(LinkStack top) {
return top->next == NULL;
}
// 入栈
void push(LinkStack top, int data) {
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = top->next;
top->next = newNode;
}
// 出栈
int pop(LinkStack top) {
if (isEmpty(top)) {
printf("Stack is empty.");
return -1;
}
Node *p = top->next;
int data = p->data;
top->next = p->next;
free(p);
return data;
}
// 十进制正整数转换为r进制数
void decimalToR(int decimal_number, int r) {
LinkStack stack = initStack();
while (decimal_number != 0) {
push(stack, decimal_number % r);
decimal_number = decimal_number / r;
}
while (!isEmpty(stack)) {
printf("%d", pop(stack));
}
}
int main() {
int decimal_number = 123;
int r = 16;
printf("%d in base %d is ", decimal_number, r);
decimalToR(decimal_number, r);
printf(" in base %d", r);
return 0;
}
```
输出结果为:
```
123 in base 16 is 7B in base 16
```