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
相关产品推荐
相关产品推荐

