c语言编程:输入一个整数,输出它的二进制序列

#include<stdio.h>
void main()
{
int a[32],x,i,m;
int change(int x,int a[]);
scanf("%d",&x);
m=change(x,a);
for(i=0;i<m;i++)
printf("%d",a[i]);
}
int change( __(1)_____ )
{
int n=0,t,k;

do { a[n]=x%2;
_(2)_____;
n++;
}while(x!=0);
for(k=0;k<n/2;k++){
t=a[k];
_(3)____ ;
a[n-k-1]=t;
}
return n;
}

#include<stdio.h>
void main()
{
int a[32],x,i,m;
int change(int x,int a[]);//函数声明
scanf("%d",&x);
m=change(x,a);
for(i=0;i<m;i++)
printf("%d",a[i]);
}
int change(int x,int a[])//要和函数声明一致,所以后面也要填int x,int a[]
{
int n=0,t,k;
do { a[n]=x%2;
x=(unsigned int)x>>1;//要考虑到参数int x有可能为负数所以填x=x/2是不行的。
//如果x>=0的话填x=x/2没有问题,实际上我估计这里出题者的本意希望填x/2,但是如果当x为负数的时候
//会出错的,要么填 x=(unsigned int)x/2也是可以的,不过 x=(unsigned int)x/2的运行效率远远低于x=(unsigned int)x>>1。这里牵涉的东西比较多,三言两语说不清
//如果想了解原因,建议回去看谭浩强的强制类型转换、正数和负数的2进制表示、移位3个知识点
n++;
}while(x!=0);
//do...while()这个功能就是把这个数的二进制的位存入这个数组中
for(k=0;k<n/2;k++){
t=a[k];
a[k]=a[n-k-1];//实现数组中2个数交换
a[n-k-1]=t;
//for循环是为了交换顺序,比如x=11是的二进制码是1011这4个码一次存在a[3] a[2] a[1] a[0]中,而输出的时候是按a[0] a[1] a[2] a[3]这样输出的如果没有这个交换屏幕上看到的会是1101
}
return n;//返回值是数组中有用数据的个数
}
这个代码是经计算机运行验证的,绝对没有问题的,如果觉得好,请采纳,谢谢
温馨提示:内容为网友见解,仅供参考
第1个回答  2013-11-19
int x,int a[]

x=x/2

a[k]=a[n-k-1]

c语言编程:输入一个整数,输出它的二进制序列
t=a[k];a[k]=a[n-k-1];\/\/实现数组中2个数交换 a[n-k-1]=t;\/\/for循环是为了交换顺序,比如x=11是的二进制码是1011这4个码一次存在a[3] a[2] a[1] a[0]中,而输出的时候是按a[0] a[1] a[2] a[3]这样输出的如果没有这个交换屏幕上看到的会是1101 } return ...

C语言输入一整数,输出其二进制。
printf(“%d\\t”,a[i]=a[i-1]+a[i-2]);}

C语言:键入一个char型整数,屏幕输出它的二进制,咋编程?
代码文本:include "stdio.h"int main(int argc,char *argv[]){ char i;int x;printf("Enter x(char)...\\nx=");if(scanf("%d",&x)==1 && x>-129 && x<128){ printf("%d(10) --> ",x);for(i=0;i<8;x<<=1,i++)printf("%d",!!(x&0x80));printf("(2)\\n");...

输入一个整数,将其转化为二进制数进行输出用c语言
include<stdio.h>int main(){ int i=0,n; char bin[32]; scanf("%d",&n); while(n) { bin[i]=(n&1)+'0'; n=n>>1; i++; } for(i=i-1;i>=0;i--) printf("%c",bin[i]); return 0;} ...

C语言 由键盘输入一个无符号整数(4字节),显示它的十六进制和二进制编...
C语言 由键盘输入一个无符号整数(4字节)。显示它的十六进制和二进制编码?printf("%d", a); \/\/以八进制输出。printf("%o", a); \/\/以十进制输出。printf("%X", a); \/\/以 16 进制输出。

c语言怎样 有键盘输入一个整数,在屏幕上输出其二进制数值
include <stdio.h> define N 60 int main(){ int iDat = 0, i = 0, iBase = 0, iCont = 0;int iArr[N];puts("Please input the data:");scanf("%d",&iDat);puts("Please input the Base:");scanf("%d",&iBase);iCont = iDat;do { iArr[i++] = iCont % iBase;iCo...

【急求】c语言程序输入一个整数(int),要求输出其二进制形式的值。
h> main(){ char binOut[17];short int i, j; \/* 16bit的整数,要用short int型 *\/ scanf("%d", &i);for(j=15;j>=0;j--){ if(i&(1<<j))binOut[15-j] = '1';else binOut[15-j] = '0';} binOut[16] = 0;printf("DEC(%d)=BIN(%s)\\n",i,binOut);} ...

在C语言中,如何让计算机输出一个整数的二进制形式,
在C语言里没有这样的函数,只能自已编写一个这样的函数 大概思路 void Fun(int num){ if(num ==1 || num == 0) \/\/等于0 或是 1时,直接输出 { printf("%d",num);} else { while(num\/2>0){ printf("%d",num%2); \/\/取余 num = num\/2; \/\/取整 } } } ...

c语言该程序哪错了。。任意输入一个整数输出二进制。十进制。十六进制...
void main( ){ int x;scanf("%d", x);\/\/输入函数错误,改为scanf("%d",&x);\/\/ printf("%d,", x); \/\/ 按十六进制输出 十六进制输出格式为%x, 八进制为%o;%d为十进制;printf("%x,", x);\/\/十六进制输出\/\/printf("%d,", x); \/* 按二进制输出 *\/ printb(x, sizeof...

C语言如何输入一个数值(int,float,double,char,long),以二进制的形式输...
include<stdio.h>void prt(char *p){int i; for(i=7;i>=0;i--) printf("%d",(*p & (1<0);}int main(){ char c=122; int i=123,j; long a=124; long long b=125; float x=19.375; double y=19.375; char *p; p=&c; printf("c="); prt(p); print...

相似回答