#includestdio.h
#includemath.h
#define FRAME_SIZE 64
#define _CRT_SECURE_NO_DEPRECATE 消除scanf函数在VS2005下的警告
void main()
{
intm,n,temp,arr[FRAME_SIZE];
staticint count = 0;
sta
count= 0;对静态变量恢复到初始值
printf(请输入您要检测的二进制数n);
scanf(%d,&m);
temp=m;
n= 0;
while(temp 10)
{
temp= int(temp10);
n++;输入的数字为n+1位
printf(temp=%dt n=%dn,temp,n);
}
temp= m;
for(inti= 0;i=n;i++)
{
intk = tempint(pow(10.0,n-i));将第n+1位上的数字计算出来传递给k
printf(k=%dt temp =%dn,k,temp);
注意这个地方因为pow函数对应有flaot和double的实现,标注10.0之后就自动对应float类型参数
if(k!=0&& k!= 1)判断是否是二进制数
{
printf(您所输入的不是二进制数n);
gotosta;
这次使用goto语句发现goto语句实在是太难调试了,因为随意跳转可能导致很多地方不能使用局部变量;
而对于静态全局变量又不得不考考虑是否给他初始化到原来值
}
arr[i]=k;将数据放入数组
intt=temp -int(pow(10.0,n-i));
if(t=0)当去掉首位为0时不用再减
{
temp= t;
}
}
printf(实际发送数据为n);
for(i=0;i=n;i++)
{
printf(%dt,arr[i]);
}
插入0
for(i=0;i=n;i++)
{
if(arr[i]=1)
{
count++;
}
if(count 4)
{
n++;
inta = n;
while(ai+1)注意i是从0开始的,要在i+1位插入
{
arr[a]= arr[a-1];
printf(arr[a]=%dt,arr[a]);
a--;
}
保持变量i和n同时移
arr[i+1]=0;
i++;数组数据后移1位
count=0;
}
}
printf(实际发送数据为n);
for(i =0;i=n;i++)
{
printf(%dt,arr[i]);
}
}