- 主题
- 7
- 帖子
- 116
- 精华
- 2
- 积分
- 345
- C币
- 244 枚
- 在线时间
- 101 小时
- 注册时间
- 2010-1-18
- 最后登录
- 2012-2-2
- 性别
- 保密

- 主题
- 7
- 帖子
- 116
- C币
- 244 枚
- 在线时间
- 101 小时
|
发表于 2010-5-27 18:12:59
|显示全部楼层
我今天下午研究十进制转化为二进制的三中方法如下,我觉得能用多种的方法做出一个题目是很捙! #include<stdio.h>
#define M (sizeof(int)>2?32:16)
int main(void)
{
int p,index=0,bin[M]={0};
int num;
printf("please enter a number:");
scanf("%d",&num);
if(num<0)
printf("data Eorror!");
else if(num==0)
printf("the result is zero!");
else
{
do
{
bin[index]=num%2;
num/=2;
index++;
}while(num);
index=M-1;
while(!bin[index])
{
--index;
}
p=index;
printf("result is the number:");
for(index=p;index>=0;index--)
printf("%d",bin[index]);
printf("\n");
}
return 0;
}
/***********************************/
#include<stdio.h>
void dec_bin(int n);
int main(void)
{
int num;
printf("please a number:");
scanf("%d",&num);
if(num<0)
printf("data Eorror!");
else
printf("the result is:");
dec_bin(num);
printf("\n");
return 0;
}
void dec_bin(int n)
{
int mod;
mod=n%2;
if(n>=2)
dec_bin(n/2);
printf("%d",mod);
return;
}
/***********************************/
#include<stdio.h>
int main(void)
{
unsigned num,Mask;
Mask=sizeof(int)>2?0x80000000:0x8000;
printf("please a number:");
scanf("%d",num);
if(num==0)
printf("the result is zero!");
else
{
while(Mask)
{
if(num&Mask)
{
while(Mask)
{
printf("%d",num&Mask?1:0);
Mask>>=1;
}
printf("\n end!");
break;
}
Mask>>=1;
}
}
return 0;
}
|
|