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

C语言实现整数转二进制并以数组输出的代码问题求助

问题排查
  • 数组定义非法:int x = 0; int a[x]; 定义了长度为0的数组,没有存储空间存放二进制位,int类型最多32位二进制,直接定义int a[32]即可满足需求
  • 循环条件错误:循环判断条件i < Num中的Num在循环体内会被Num = Num/2不断修改,导致循环次数远小于实际二进制位数,应该使用临时变量参与运算,保留原始数值
  • 输出逻辑错误:仅输出a[x]只会打印数组第一个元素,且存入的余数是二进制从低位到高位的顺序,需要倒序输出数组中所有有效位才能得到正确结果
  • 冗余头文件:<math.h> 全程未使用,可以删除
修正后代码
#include <stdio.h>
int main(void){
    int Num;
    int i;
    // 32位数组覆盖所有int类型的二进制长度需求
    int a[32] = {0};
    // 记录实际二进制位数
    int count = 0;
    scanf("%d", &Num);
    // 用临时变量参与运算,保留原始输入值
    int temp = Num;
    
    while(temp > 0) {
        // 余数存在数组下标从小到大的位置,对应二进制低位到高位
        a[count] = temp % 2;
        count++;
        temp = temp / 2;
    }
    
    printf("%d in base 2 is ", Num);
    // 倒序输出,从高位到低位打印
    for(i = count - 1; i >= 0; i--) {
        printf("%d", a[i]);
    }
    
    return 0;
}
运行验证

输入17时,数组依次存入1、0、0、0、1,倒序输出为10001,符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:36:07