You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言十进制转二进制程序修改:输入至0停止后统一输出格式化结果

修改思路

需要调整的核心逻辑共4处:

  • 新增数组作为存储结构暂存所有输入值,输入0后统一输出结果,避免输入一个就立即输出
  • 修正二进制位数计算逻辑:原代码循环从16到0共输出17位,改为从15到0输出标准16位
  • 新增四位分隔逻辑:每输出4位二进制数后插入空格,末尾不保留多余空格
  • 移除输入提示语,匹配预期输入输出格式

完整修改后代码

#include <stdio.h>
#include <stdlib.h>

#define MAX_INPUT 100 // 支持最多输入99个待转换数值(含终止输入的0)

void convert(int num){
    int bit;
    for (int i = 15; i >= 0; i--)
    {
        bit = num >> i;
        printf("%d", bit & 1);
        // 每输出4位插入一个空格,最后一位后不加空格
        if(i != 0 && i % 4 == 0){
            printf(" ");
        }
    }
    printf("\n");
}

int main()
{
    int nums[MAX_INPUT];
    int count = 0;
    int num;

    // 读取输入直到遇到0
    while (1){
        scanf("%d", &num);
        nums[count++] = num;
        if(num == 0){
            break;
        }
    }

    // 空一行后统一输出结果
    printf("\n");
    for(int i = 0; i < count; i++){
        convert(nums[i]);
    }

    return 0;
}

验证效果

输入31、-1、0后,输出完全匹配预期:

0000 0000 0001 1111
1111 1111 1111 1111
0000 0000 0000 0000

内容的提问来源于stack exchange,提问作者anthony

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:39:03