c语言输入1个二进制正整数,编写程序将其转换成十进制数。例如,输入1101,结果为13. 输入:字符串形式的二进制数。不超过32位。 输出:十进制整数。 【输入输出样例】 输入: 1101 输出: 13 提示:转换方法: a=0 a=a*2+s[i]-'0'
时间: 2024-03-03 16:49:34 浏览: 20
以下是C语言的实现代码:
```c
#include <stdio.h>
#include <string.h>
int main(){
char binary[33];
int i, len, decimal = 0;
scanf("%s", binary);
len = strlen(binary);
for(i=0; i<len; i++){
decimal = decimal * 2 + binary[i] - '0';
}
printf("%d", decimal);
return 0;
}
```
输入样例:
```
1101
```
输出样例:
```
13
```
相关问题
c语言任意输入一个十进制正整数,将其转换成二进制输出,不要用数组
可以使用位运算符来将十进制正整数转换成二进制。
具体步骤如下:
1. 定义一个变量 `num` 存储输入的十进制正整数,另一个变量 `binary` 存储转换后的二进制数。
2. 初始化 `binary` 为 0。
3. 使用循环将 `num` 转换成二进制数,循环条件为 `num` 不为 0。在循环中,每次将 `num` 的最后一位取出来,然后将其加入到 `binary` 中。
4. 输出转换后的二进制数 `binary`。
以下是示例代码:
```c
#include <stdio.h>
int main()
{
int num, binary = 0, i = 1;
printf("请输入一个十进制正整数:");
scanf("%d", &num);
while (num != 0) {
binary += (num % 2) * i;
i *= 10;
num /= 2;
}
printf("转换后的二进制数为:%d", binary);
return 0;
}
```
注意,这里用了一个变量 `i` 来表示当前位数的权值,初始值为 1。每次循环时,都将其乘以 10,相当于将位数向左移动一位。这个 `i` 可以替换成移位运算符 `<<`,效果是一样的。
用c语言编写一个程序:将一个十进制数正整数d转换为相应的二进制数
下面是用C语言实现将十进制数转换为二进制数的程序:
```c
#include <stdio.h>
int main() {
int d, i, j, bin[32];
printf("请输入一个正整数:");
scanf("%d", &d);
if (d < 0) {
printf("输入的不是正整数!\n");
return 0;
}
i = 0;
while (d > 0) {
bin[i] = d % 2;
d = d / 2;
i++;
}
printf("转换为二进制数为:");
for (j = i - 1; j >= 0; j--) {
printf("%d", bin[j]);
}
printf("\n");
return 0;
}
```
程序的运行结果如下:
```
请输入一个正整数:10
转换为二进制数为:1010
```
程序的实现思路是将输入的十进制数不断除以2,每次取余并将余数存储到一个数组中,直到商为0为止。最后再倒序输出数组中的每一位,就得到了该数的二进制表示。