c语言十进制转二进制,用power
时间: 2024-05-09 21:14:47 浏览: 11
可以使用循环和power函数来将十进制数转换为二进制数。以下是一个简单的C语言代码示例:
```c
#include <stdio.h>
#include <math.h>
int main() {
int decimal, binary = 0, i = 0;
printf("请输入一个十进制数:");
scanf("%d", &decimal);
while (decimal > 0) {
binary += (decimal % 2) * pow(10, i);
decimal /= 2;
i++;
}
printf("转换为二进制数为:%d", binary);
return 0;
}
```
在这个示例中,我们首先从用户输入获取一个十进制数。然后,我们使用while循环,将每个十进制位转换为二进制位,并将其添加到二进制数中。我们使用pow函数计算2的幂,然后将其乘以余数并将结果添加到二进制数中。最后,我们将结果打印出来。
相关问题
用c语言栈写一个二进制转换十进制的程序
好的,以下是一个用 C 语言栈实现二进制转换为十进制的程序:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 栈的结构体定义
struct Stack {
int top;
int arr[MAX_SIZE];
};
// 初始化栈
void initStack(struct Stack *s) {
s->top = -1;
}
// 判断栈是否已满
int isFull(struct Stack *s) {
return s->top == MAX_SIZE - 1;
}
// 判断栈是否为空
int isEmpty(struct Stack *s) {
return s->top == -1;
}
// 入栈操作
void push(struct Stack *s, int item) {
if (isFull(s)) {
printf("Stack is full\n");
return;
}
s->arr[++s->top] = item;
}
// 出栈操作
int pop(struct Stack *s) {
if (isEmpty(s)) {
printf("Stack is empty\n");
return -1;
}
return s->arr[s->top--];
}
// 二进制转换为十进制
int binaryToDecimal(char binary[]) {
struct Stack s;
initStack(&s);
int i = 0, decimal = 0, power = 1;
// 将二进制数的每一位依次入栈
while (binary[i] != '\0') {
push(&s, binary[i] - '0');
i++;
}
// 依次出栈并计算十进制数
while (!isEmpty(&s)) {
decimal += pop(&s) * power;
power *= 2;
}
return decimal;
}
int main() {
char binary[MAX_SIZE];
printf("Enter a binary number: ");
scanf("%s", binary);
int decimal = binaryToDecimal(binary);
printf("Decimal equivalent of %s is %d\n", binary, decimal);
return 0;
}
```
程序通过栈的数据结构来实现二进制转换为十进制,`push` 函数用来入栈,`pop` 函数用来出栈,`binaryToDecimal` 函数用来将二进制数转换为十进制数。在 `main` 函数中,读取用户输入的二进制数,并调用 `binaryToDecimal` 函数来计算十进制数的值,最后输出结果。
输入二进制1101.11转换为十进制C语言
以下是将二进制数1101.11转换为十进制数的C代码示例:
```c
#include <stdio.h>
#include <math.h>
int main() {
char binary[] = "1101.11";
int integer_part = 0;
double decimal_part = 0;
int i;
for (i = 0; binary[i] != '.' && binary[i] != '\0'; i++) {
integer_part = 2 * integer_part + (binary[i] - '0');
}
if (binary[i] == '.') {
i++;
int power = -1;
while (binary[i] != '\0') {
decimal_part += pow(2, power) * (binary[i] - '0');
power--;
i++;
}
}
double decimal = integer_part + decimal_part;
printf("Decimal: %lf", decimal);
return 0;
}
```
该程序首先定义一个二进制字符串"1101.11",然后使用for循环将其分成整数部分和小数部分。在for循环中,我们使用2倍增加整数部分的值,并将每个字符转换为数字并添加到整数部分中。如果我们遇到小数点,我们将指针移动到小数部分的第一个数字。然后,我们使用幂函数将每个数字转换为其等效的十进制值,并将其乘以2的幂次方。最后,我们将整数部分和小数部分相加,得到十进制数,并将其输出给用户。