用c语言完成输入一个十进制数输出它的二进制数并去掉任何一个多余的零
时间: 2024-03-05 14:54:10 浏览: 151
可以使用位运算实现输入一个十进制数,输出它的二进制数并去掉任何一个多余的零,具体过程如下:
```c
#include <stdio.h>
int main()
{
int num, bit, flag = 0;
printf("请输入一个十进制数:");
scanf("%d", &num);
printf("该数的二进制数为:");
for (bit = 31; bit >= 0; bit--)
{
int val = num >> bit;
if (val & 1)
{
printf("1");
flag = 1;
}
else if (flag)
{
printf("0");
}
}
if (!flag)
{
printf("0");
}
printf("\n");
return 0;
}
```
上述代码中,首先通过`scanf`获取输入的十进制数,然后从最高位开始,依次获取每一位的值,并判断是否为1。如果是1,则输出1,并将标记`flag`设置为1。如果不是1,则判断前面是否已经输出过1,如果已经输出过,则输出0。最后判断是否输出过任何一个1,如果没有,则输出0。最终输出的二进制数去掉了多余的零。
相关问题
本关任务:编写一一个程序,能将输入的4位二进制数转换为十进制数并输出该十进制数。使用C语言
在C语言中,你可以编写一个简单的函数来实现这个功能。下面是一个示例程序,它接受一个四位二进制数作为字符串输入,并将其转换为等效的十进制数:
```c
#include <stdio.h>
#include <string.h> // 引入string.h库用于处理字符串
int binaryToDecimal(char binary[5]) {
int decimal = 0;
int base = 1;
// 从右到左遍历二进制字符串
for(int i = strlen(binary)-1; i >= 0; i--) {
if(binary[i] == '1') { // 如果当前位是1
decimal += base; // 加上对应位置的值
}
base *= 2; // 移位,准备下一位
}
return decimal;
}
int main() {
char binary[5];
printf("请输入一个四位的二进制数: ");
scanf("%s", binary); // 输入二进制数字符串
// 去掉多余的空格
binary[strlen(binary) - 1] = '\0'; // 最后一个字符可能是空格
binary[strlen(binary) - 2] = '\0'; // 如果有多个空格,则去掉第二个
int decimalValue = binaryToDecimal(binary);
printf("转换后的十进制数是: %d\n", decimalValue);
return 0;
}
```
这段程序首先读取用户的输入,然后去除多余的空格。接着,`binaryToDecimal`函数从二进制串的最右边开始,每次将当前位的值(如果是1)加到`decimal`变量上,并更新基数(base)为2的幂次。最后,主函数会显示结果。
利用一维数组进行二维转换。将十进制转换为二进制。C语言代码
在C语言中,你可以利用一维数组来模拟二维数组,因为C语言本身不直接支持二维数组作为数组名传递给函数。如果你想将十进制数转换成二进制字符串存储在一维数组中,可以按照以下步骤编写代码:
```c
#include <stdio.h>
#include <string.h>
// 函数用于将十进制转为二进制并存入一维数组
void dec_to_bin(int decimal, char binary[33]) {
int index = 0;
while (decimal > 0) {
binary[index++] = decimal % 2 + '0'; // 将余数转换为字符并添加到数组
decimal /= 2; // 更新十进制数值
}
binary[index] = '\0'; // 添加空字符终止字符串
// 如果数组开头有0,则向前移一位,去掉多余的前导零
for (int i = 0; i < index && binary[i] == '0'; i++) {
memmove(binary + i + 1, binary + i, index - i);
}
}
int main() {
int decimal_num = 42;
char binary_array[33]; // 32是为了保证最大长度(二进制最多31位加一个结束符)
dec_to_bin(decimal_num, binary_array);
printf("Decimal %d in binary is: %s\n", decimal_num, binary_array);
return 0;
}
```
在这个代码中,`dec_to_bin`函数将十进制数转换为二进制字符串,并存储在一个字符型的一维数组`binary`中。`main`函数中有一个示例,将42转换为其二进制表示。
阅读全文