需要准备的材料分别有:电脑、C语言编译器。
1、首先,打开C语言编译器,新建一个初始.cpp文件,例如:test.cpp。
2、在test.cpp文件中,输入C语言代码:int a = 127;printf("%x", a); 。
3、编译器运行test.cpp文件,此时成功将数字用十六进制进行了输出。
#include<stdio.h>
#include<stdlib.h>
int length(char a[]);//因为函数位于main()函数之后,所以当引用这个函数时应该首先进行声明便于之后的引用
int main(void)
{
char a[]={'a','b','c','d','f'};
int i;
int j=47;
printf("%x\n",j);//输出结果为:2f
printf("%X\n",j);//输出结果为:2F
printf("%#x\n",j);//输出结果为:0x2f
printf("%#X\n",j);//输出结果为:0X2F%#X推荐使用
for(i=0;i<length(a);i++)
{
printf("%d\n",a<i>);
}
return 0;
}
int length(char a[])
{
int value;
value=sizeof(a)/sizeof(a[0]);
return value;
}
printf函数使用注意事项
1、域宽
%d:按整型数据的实际长度输出。
如果想输出指定宽度可以指定域宽,%md-->m域宽,打印出来以后,在控制台上,显示m位;
如果我们要打印的数的位数如果超过我们设定m则原样输出;
如果我们要打印的数的位数如果小于我们设定的位数,则补空白,具体如下:
如果m为正数,则左对齐(左侧补空白);
如果m为负数,则右对齐(右侧补空白)。
2、转义字符
如果想输出字符"%",则应该在“格式控制”字符串中用连续两个%表示。
如:printf("%f%%",1.0/3);输出结果:0.333333%。
16进制10到15是用A到F来代替的,所以你需要做个映射
而且你的sljz函数写错了:
void sljz(int a)
{
char map[17]="0123456789ABCDEF";
int c,b;
b=a/16;
if(b!=0)
sljz(b);//这儿ejz(b);
c=a%16;
printf("%c",map[c]);//printf("%d",c);
}
把整数转成字符输出
结果:
另外也可以用%x,%X的方法控制输出,如楼上所说
c语言中的十六进制的标志是0x,下面的例子可以参考:
用 %x 格式输出就是16进制。
#include
int main()
{
int a=0;
printf("0x%08x",a);
}
运行结果:
0x00000000
#include
void ejz(int a);
int main(void)
{
int i;
scanf("%d", &i);
printf("二进制为:");
ejz(i);
printf("\n八进制为:%o\n", i); //用%o输出8进制
printf("十六进制为:%x\n", i); //用%x输出16进制
return 0;
}
void ejz(int a)
{
int c, b;
b = a / 2;
if (b != 0) ejz(b);
c = a % 2;
printf("%d", c);
}