问题大着呢,你只返回了一个数而已,应该返回一个数组 #include void main() { void fun(int m,int *j,int c[]); int m; int i; int c[100]={0};//用来装二进制数 int count = 0;//用来统计有效位数 printf("输入一个十进制整数:\n"); scanf("%d",&m); fun(m,&count,c); for(i = 0; i < count; i++) printf("%d",c[i]); printf("\n"); } void fun(int m,int *j,int c[]) { int a[100],n,i,k=0; for(i=0;m>0;i++) { n=m%2; m=m/2; a[i]=n; *j=*j+1; } for(i=*j-1;i>=0;i--) { c[k++]=a[i]; } }