天气: 舒适
心情: 平静
刚开始的内容虽然很简单,但是也可以提高大家的基础技能,希望大家可以认真的学习。
进制转换:
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]);
}
做一做:输入一个十进制数,在屏幕上输出其源码;
输入一个十进制的负数,在屏幕上输出其补码.