Alpha_dllg的个人空间 https://blog.eetop.cn/1010876 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

C语言之进制转换

已有 680 次阅读| 2012-10-12 08:50 |个人分类:C语言学习篇

天气: 舒适
心情: 平静
      刚开始的内容虽然很简单,但是也可以提高大家的基础技能,希望大家可以认真的学习。

进制转换:

1、十进制转为十六进制

void main()
{
int i=0;
printf("please input decimalism number :\n");
scanf("%d",&i);
printf("the hex number is 0x%x\n",i);
}

本例主要考察输入输出格式控制符,关于格式控制的问题,大家可以问一下度娘 ,scanf这个函数
我们会经常用到的 千万要注意它的格式 scanf("%d",&i)。
ps:此方法可能会遭到大婶们的喷饭...

2、十进制转换为二进制

void main()
{
int i,j,n,m;
int a[16]={0};
system("cls");// clear screen
printf("please input the decimalism number (0~32767):\n");
scanf("%d",&n);
for(m=0;m<15;m++)
{
i=n%2;
j=n/2;
n=j;
a[m]=i;
}
for(m=15;m>=0;m--)
{
printf("%d",a[m]);
if(m%4 == 0)
printf(" ");
}
printf("\n");
}

这个例子中的算法我们在纸上写一下就知道了,没有必要写注释,即使是初学者也可以完全看得懂,需要
提醒大家的是:’{}‘的位置,如果一个循环或者一个判断语句里面有多个子语句,千万要注意{}的位置。
可能会有小朋友会问为什么要把结果倒着存进数组,这个问题你自己改一下程序看看效果就知道了...
3、n进制转换为十进制

首先说明一下我们用到的算法:12345=((((1*10+2)*10+3)*10+4)*10)+5  剩下的就不用说了吧,
我们根本不需要知道这个数有多少位.....


#include<stdio.h>
#include<string.h>
void main()
{
long dec;
int i,n,temp,size;
char a[100];
printf("please input a number string:\n");
gets(a);
//toupper(a);//windows下为strupr
size = strlen(a);
dec=0;
printf("please input n(2 or 8 or 16):\n");
scanf("%d",&n);
for(i=0;i<size;i++)
{
a[i]=toupper(a[i]);//windows下为strupr
if((a[i]-'0'>=n&&a[i]<'A')||a[i]-'A'+10>=n)
{
printf("data error!!\n");
exit(0);
}
if(a[i]>='0'&&a[i]<='9')
temp=a[i]-'0';
else if(n>=11&&(a[i]>='A'&&a[i]<='A'+n-10))
temp=a[i]-'A'+10;
dec=dec*n+temp;
}
printf("the decimal is %ld\n",dec);
}

4、以IP地址形式输出
                 我们也需要娱乐,S"O,自己娱乐一下了,把自己平时的一些喜好什么的用可爱的C表达出来吧!!!!!!                  I am Crazy!!!


#include<stdio.h>
int bin_dec(int x,int n)
{
if(n==0)
{
return 1;
}
return x*bin_dec(x,n-1);
}
void main()
{
int i;
int ip[4]={0};
char a[33];
printf("please input binary number:\n");
scanf("%s",a);
for(i=0;i<8;i++)
{
if(a[i]=='1')
ip[0]+=bin_dec(2,7-i);
if(a[i+8]=='1')
ip[1]+=bin_dec(2,7-i);
if(a[i+16]=='1')
ip[2]+=bin_dec(2,7-i);
if(a[i+24]=='1')
ip[3]+=bin_dec(2,7-i);
if(a[i+24]=='\0')
break;
}
printf("ip: %d.%d.%d.%d\n",ip[0],ip[1],ip[2],ip[3]);
}

做一做:输入一个十进制数,在屏幕上输出其源码;
               输入一个十进制的负数,在屏幕上输出其补码.




点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 0

    获赞
  • 2

    评论
  • 304

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-12 08:18 , Processed in 0.025622 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部