利用c语言的格式输入格式输出,直接进行进制转换。
%X 对应大写字母的十六进制
%d 对应输出十进制
%o 对应输出八进制
1.进制转换
程序提示用户输入三个字符,每个字符取值范围是0-9,A-F。然后程序会把这三个字符转化为相应的十六进制整数,并分别以十六进制,十进制,八进制输出。
输入信息:
输入只有一行,即三个字符。
输出信息:
三个整数,中间用空格隔开。
样例输入:
1 | FFF |
样例输出:
1 | FFF 4095 7777 |
代码如下:
1 | #include <stdio.h> |
2.二进制移位练习
求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。不同进制的表示符号为(0,1,…,9,a,b,…,f)或者(0,1,…,9,A,B,…,F)。
输入信息:
一个正整数a。
输出信息:
a从右端开始的4至7位的10进制表示。请注意行尾输出换行。
样例输入:
1 | 217 |
样例输出:
1 | 13 |
思路:输入一个十进制数,转换为二进制并存储在数组中,取数组的四到七位,转换为十进制.
注意:取数组的4-7位,取3-6位恰好也会输出13,一直WA50%。
代码如下:
1 | #include <stdio.h> |
3.三进制小数
你的任务呢,是将一个有理数转换成三进制小数。“什么是三进制小数呢?”你一定会问,这很明白,就是以三为基(二进制数以2为基,而十进制数则以10为基)的小数。
输入信息:
有理数的值都是在0与1之间的,每个有理数都由一个分子和一个分母表示,分子与分母之间隔着一个斜杠。有理数的个数不会超过1000个。
输出信息:
输出格式见样本输出,它是以小数点开头的具有10位精度的3进制数。
样例输入:
1 | 1/3 |
样例输出:
1 | .1000000000 |
思路:用字符数组接收,将每个字符转换为整型,从最后一个数字开始逐步除二取余,存储在新数组中,再将整个数除二存储。
代码如下:
1 | #include <stdio.h> |