出圈问题及进制转换
- 格式:doc
- 大小:31.50 KB
- 文档页数:7
进制转换-进制转换简介在高速发展的现代社会,计算机浩浩荡荡地成为了人们生活中不可缺少的一部分,帮助人们解决通信,联络,互动等各方面的问题。
今天我就给大家讲讲与计算机有关的“进制转换”问题。
我们以(25.625)(十)为例讲解一下进制之间的转化问题说明:小数部份的转化计算机二级是不考的,有兴趣的人可以看一看1. 十-----> 二(25.625)(十)整数部分:25/2=12 (1)12/2=6 06/2=3 03/2=1 (1)1/2=0 (1)然后我们将余数按从下往上的顺序书写就是:11001,那么这个11001就是十进制25的二进制形式小数部分:0.625*2=1.250.25 *2=0.50.5 *2=1.0然后我们将整数部分按从上往下的顺序书写就是:101,那么这个101就是十进制0.625的二进制形式所以:(25.625)(十)=(11001.101)(二)2. 二----> 十(11001.101)(二)整数部分:下面的出现的2(x)表示的是2的x次方的意思1*2(4)+1*2(3)+0*2(2)+0*2(1)+1*2(0)=25小数部分:1*2(-1)+0*2(-2)+1*2(-3)=0.625所以:(11001.101)(二)=(25.625)(十)3. 十----> 八(25.625)(十)整数部分:25/8=3 (1)3/8 =0 (3)然后我们将余数按从下往上的顺序书写就是:31,那么这个31就是十进制25的八进制形式小数部分:0.625*8=5然后我们将整数部分按从上往下的顺序书写就是:5,那么这个5就是十进制0.625的八进制形式所以:(25.625)(十)=(31.5)(八)4. 八----> 十(31.5)(八)整数部分:3*8(1)+1*8(0)=25小数部分:5*8(-1)=0.625所以(31.5)(八)=(25.625)(十)5. 十----> 十六(25.625)(十)整数部分:25/16=1 (9)1/16 =0 (1)然后我们将余数按从下往上的顺序书写就是:19,那么这个19就是十进制25的十六进制形式小数部分:0.625*16=10(即十六进制的A或a)然后我们将整数部分按从上往下的顺序书写就是:A,那么这个A就是十进制0.625的十六进制形式所以:(25.625)(十)=(19.A)(十六)6. 十六----> 十(19.A)(十六)整数部分:1*16(1)+9*16(0)=25小数部分:10*16(-1)=0.625所以(19.A)(十六)=(25.625)(十)如何将带小数的二进制与八进制、十六进制数之间的转化问题我们以(11001.101)(二)为例讲解一下进制之间的转化问题说明:小数部份的转化计算机二级是不考的,有兴趣的人可以看一看1. 二----> 八(11001.101)(二)整数部分:从后往前每三位一组,缺位处有0填补,然后按十进制方法进行转化,则有:001=1011=3然后我们将结果按从下往上的顺序书写就是:31,那么这个31就是二进制11001的八进制形式小数部分:从前往后每三位一组,缺位处有0填补,然后按十进制方法进行转化,则有:101=5然后我们将结果部分按从上往下的顺序书写就是:5,那么这个5就是二进制0.625的八进制形式所以:(11001.101)(二)=(31.5)(八)2. 八----> 二(31.5)(八)整数部分:从后往前每一位按十进制转化方式转化为三位二进制数,缺位处用0补充则有:1---->1---->0013---->101然后我们将结果按从下往上的顺序书写就是:11001,那么这个11001就是八进制31的二进制形式说明,关于十进制的转化方式我这里就不再说了,上一篇文章我已经讲解了!小数部分:从前往后每一位按十进制转化方式转化为三位二进制数,缺位处用0补充则有:5---->101然后我们将结果按从下往上的顺序书写就是:101,那么这个101就是八进制5的二进制形式所以:(31.5)(八)=(11001.101)(二)3. 十六----> 二(19.A)(十六)整数部分:从后往前每位按十进制转换成四位二进制数,缺位处用0补充则有:9---->10011---->0001(相当于1)则结果为00011001或者11001小数部分:从前往后每位按十进制转换成四位二进制数,缺位处用0补充则有:A(即10)---->1010所以:(19.A)(十六)=(11001.1010)(二)=(11001.101)(二)4. 二----> 十六(11001.101)(二)整数部分:从后往前每四位按十进制转化方式转化为一位数,缺位处用0补充则有:1001---->90001---->1则结果为19小数部分:从前往后每四位按十进制转化方式转化为一位数,缺位处用0补充则有:1010---->10---->A则结果为A所以:(11001.101)(二)=(19.A)(十六)最近有些朋友提了这样的问题“0.8的十六进制是多少?”我想在我的空间里已经有了详细的讲解,为什么他还要问这样的问题那于是我就动手算了一下,发现0.8、0.6、0.2... ...一些数字在进制之间的转化过程中确实存在麻烦。
数学进制转换的方法我折腾了好久数学进制转换这事儿,总算找到点门道。
就说十进制转二进制吧,我一开始也是瞎摸索。
刚开始我就用最笨的办法,不断去除以2。
比如说10这个十进制数,10除以2等于5余0,5除以2等于2余1,2除以2等于1余0,1除以2等于0余1,然后从下往上把余数排起来,就得到1010,这就是10的二进制了。
但是这个方法数大的时候就好烦啊,我曾经算个100多的十进制数转二进制,那草稿纸都写了一片,还容易算错,因为一不注意就搞混余数或者计算顺序了。
后来我发现还有一种简便点的方法,就是看这个十进制数里面有多少个2的幂次方。
比如说13吧,2的0次方是1,2的1次方是2,2的2次方是4,2的3次方是8,那13可以写成8 + 4 + 1 ,也就是2的3次方加2的2次方加2的0次方,对应二进制位就是1101。
这个方法一开始我也老是算错幂次方啥的,老是忘记一些幂次方。
但是练多几次后就顺手多了。
二进制转十进制呢,那就是每个数位的值乘以2的对应幂次方再相加。
还是拿1010来说吧,最右边第一位乘以2的0次方,第二位乘以2的1次方,以此类推。
就是0乘以2的0次方加上1乘以2的1次方加上0乘以2的2次方加上1乘以2的3次方,算出来就是10了。
我也是老忘记幂次方该从0开始,还是从1开始,就这个老犯错,后面我就每次都先把数位对应幂次方都标出来,再计算,这样就不容易出错了。
八进制和十六进制的转换其实和二进制的原理差不多的。
八进制转十进制就是每个数位乘以8的幂次方再相加。
十六进制有点特殊,因为有数字加字母来表示10到15,转换的时候也按这个乘以16的幂次方再相加。
至于十进制转八进制或者十六进制,其实也可以仿照转二进制的方法,不断除以8或者16取余数就好了。
不过八进制转换的时候除以8可能有时候除不整,就要小心计算了,我就有几次算错,就是计算除法不细心的原因。
另外十六进制因为有字母比较特殊,所以计算的时候更要专注,我就经常把字母代表的数值弄错。
关于进制数的问题及技巧一.二进制数转换为十进制数。
二进制数第0位的权值是2的0次方,第1位的权值是2的1次方…….,所以,设有一个二进制数:01100100转换成十进制。
01100100(从左向右数第0位是0,第一位是0,第二位是1,第三位是1,第四位是0,第五位是1,第六位是1,第七位是0)第0位:0乘2的0次方=0第1位:0乘2的1次方=0第2位:1乘2的2次方=4第3位:0乘2的3次方=0第4位:0乘2的4次方=0第5位:1乘2的5次方=32第6位:1乘2的6次方=64第7位:0乘2的7次方=0将所有的积加起来:0+0+4+0+0+32+64+0=100结果为100。
二.八进制数转换为十进制数。
八进制就是逢8进1,八进制数采用0~7这八数来表示一个数,八进制数第0位的权值为8的0次方,第一位的权值是8的1次方,第二位的权值是8的2次方……,所以设有一个:1507转为十进制为:第0位:7乘8的0次方=7第1位:0乘8的1次方=0第2位:5乘8的2次方=320第3位:1乘8的3次方=512将所有的积加起来:7+0+320+512=839说明:(位,第一是0,第二是5,第三位是1)三.八进制数的表达方法。
C.C++语言中,如何表达一个八进制数呢?如果这个数是876,我们可以知道他不是八进制数,因为八进制数中不可能出现7以上的阿拉伯数字,但是如果是123,567,等,那么它是八进制数还是十制数。
都有可能。
所以,C,C++规定,一个数如果指明它是八进制数,必须在它前面加上字母O,123是十进制数,但是O123是八进制数。
千万记住,用八进制数表达时,一定要记得在它前面加上字母O,否则计算机会全当成十进制数。
(但是在转义符中却不用,你不必去深入研究,)。
四.十六进制数转换成十进制数各个进制数的范围如下:2进制:0,18进制:0,1,2,3,4,5,,6,710进制:0,1,2,3,4,5,6,7,8,916进制:0,1,2,,3,4,5,6,7,8,9,A,B,C,D,E,F(A代表10,B代表11,C代表12,D代表13,E代表14,F代表15)十六进制数的第0位的权值为16的0次方,第1位的权值为16的1次方,第2位的权值为16的2次方......所以。
进制转换问题1. 问题概述进制转换是计算机科学中常见的概念。
它指的是将一个数字从一种进制表示转换为另一种进制表示的过程。
本文将介绍常见的进制转换问题及解决方法。
2. 二进制转十进制二进制是计算机中最基本的进制表示形式。
在二进制中,每一位只能取0或1。
而十进制是我们平时最常用的进制,其每一位可以取0至9之间的任意数字。
将二进制转换为十进制的方法如下:- 将二进制数从右至左,按照每一位的权重为2的幂次递增进行计算。
- 将二进制数每一位与对应的权重相乘后相加,即可得到十进制数的结果。
例如,将二进制数1101转换为十进制:1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 133. 其他进制转换除了二进制转换为十进制,常见的进制转换还包括:十进制转二进制将十进制数转换为二进制数的方法是:将十进制数除以2,将余数作为二进制数的最低位,继续将商除以2,将余数作为下一位,直到商为0为止。
十进制转八进制将十进制数转换为八进制数的方法是:将十进制数除以8,将余数作为八进制数的最低位,继续将商除以8,将余数作为下一位,直到商为0为止。
十进制转十六进制将十进制数转换为十六进制数的方法是:将十进制数除以16,将余数作为十六进制数的最低位,继续将商除以16,将余数作为下一位,直到商为0为止。
十六进制数中,10至15分别用字母A至F表示。
4. 例子下面通过实际例子演示进制转换的过程:例子1:将二进制数转换为十进制:1 * 2^5 + 0 * 2^4 + 1 * 2^3 + 1 * 2^2 + 0 * 2^1 + 1 * 2^0 = 45例子2:将十进制数52转换为二进制:52 / 2 = 26 余026 / 2 = 13 余013 / 2 = 6 余16 / 2 = 3 余03 / 2 = 1 余11 /2 = 0 余1将余数按照从下至上的顺序组合,得到二进制数。
5. 总结进制转换是计算机科学中的重要概念。
进制转换规则一、求余法。
适用范围:十进制转换为→二进制、八进制、十六进制。
要将十进制转换为多少进制,那么就对几求余。
例如:①、23转换为二进制,就是不停的对2求余数(第一次用本数对2求余,从第二次开始都用上一次的商除以2,直到商的值为0为止)。
23除以2的商为11 余数为111除以2的商为5 余数为15除以2的商为2 余数为12除以2的商为1 余数为01除以2的商为0 余数为1将余数从下到上写就可以得到23的二进制为10111;②、23转换为八进制,就是不停的对8求余(第一次用本数对8求余,从第二次开始都用上一次的商除以8,直到商的值为0为止。
)23除以8的商为2 余数为72除以8的商为0 余数为2同理将余数从下到上写可以得到23的八进制数位27③、27转换为十六进制,就是不停的对16求余(第一次用本数对16求余,从第二次开始都用上一次的商除以16,直到商的值为0为止。
)27除以16的商为1 余数为111除以16的商为0 余数为1同理将余数从下到上写可以得到27的十六进制数位1B(11在十六进制数中用字母B表示)。
二、乘方。
N制数的右边第一位为N的0次方,前一位为N的1次方,依次类推。
例如:2进制的右边第一位就为2的0次方,前一位2的1次方,依次类推。
适用范围:将二进制、八进制、十六进制转换为十进制。
例如:①、将27O转换为十进制。
右边第一位表示8的0次方,该位上的数位7,就表示有7个8的0次方。
右边第二位表示8的1次方,该位上的数位2,就表示有2个8的1次方。
所以这个八进制数就等于7个8的0次方与2个8的1次方之和即为:7×81082⨯+=7+16=23,所以八进制的23O转换为十进制就为23。
(数字后有字母O表示八进制。
)②、将1BH转换为十进制。
右边第一位表示16的0次方,该位上的数位B,就表示有B,十六进制B表示11即是说有11个8的0次方。
右边第二位表示16的1次方,该位上的数位1,就表示有1个16的1次方。
进制间的相互转化总结+例题进制转换:1. ⼗六进制与⼆进制相互转化 ⼗六进制的每⼀位占⼆进制中的四位,因此需要先定义⼗六进制从0~F的⼆进制值,即:string a[16] = {"0000", "0001", "0010", "0011", "0100", "0101", "0110","0111", "1000", "1001", "1010", "1011", "1100", "1101", "1110", "1111"};下标即⼗六进制数,再将每⼀个对应的⼆进制字符串拼起来就可以了。
如下例:2. ⼋进制与⼆进制相互转化 ⼆进制中的每三位对应⼋进制中的⼀位,因此也需要先对⼋进制中0~7定义其⼆进制值,即:string a[8] = {"000","001","010","011","100","101","110","111"};这样其下标就是⼋进制的值。
也可以⽤map定义,这样就可以直接根据字符串的值得到每⼀位⼋进制的值,再拼凑起来就可以了。
map<string,int> mp;mp["000"] = '0', mp["001"] = '1', mp["010"] = '2', mp["011"] = '3',mp["100"] = '4', mp["101"] = '5', mp["110"] = '6', mp["111"] = '7';3.⼆进制转⼗六进制 和⼆进制转⼋进制⼀样,只不过这⾥是每四位取⼀个⼗六进制,再拼起来就⾏了。
信息的编码再问学生计算机存储信息是不是都采用了二进制数?二进制也存在缺点,二进制都用0和1, 而且位数太多, 不易理解, 也易出错。
为描述方便常用八、十进制,十六进制数表示二进制数在微机中,一般在数字的后面,用特定字母表示该数的进制。
十进制:日常生活中最常见的是十进制数,用十个不同的符号来表示:0、1、2、3、4、5、6、7、8、9。
基为:10运算规则:逢十进一,借一当十在十进制数的后面加大写字母D以示区别。
二进制:二进制数只有两个代码“0”和“1”,所有的数据都由它们的组合来实现。
基为:2运算规则:“逢二进一,借一当二”的原则。
在八进制数据后加英文字母“B”八进制:使用的符号:0、1、2、3、4、5、6、7;运算规则:逢八进一;基为:8在八进制数据后加英文字母“O”,十六进制:使用的符号:采用0~9和A、B、C、D、E、F六个英文字母一起共十六个代码。
运算规则:逢十六进一基为:16在十六进制数据后加英文字母“H”以示分别。
那么二进制数与八进制、十进制,十六进制数是怎么转换的呢?3、协作提高:用讲解法对二进制数与十进制数、十六进制数之间相互的转换的原理及方法(将二进制数字表示的位权值与十进制数字表示的位权值加以对比),叫几位学生到黑板上来做,其它同学在下面草稿纸上做。
观察在黑板上做的同学的对错情况,要知道错,错在那里。
由N进制数转换成十进制数的基本做法是,把N进制数首先写成加权系数展开式,然后按十进制加法规则求和。
这种做法称为"按权相加"法。
各数制的权如:十进制中,各位的权为10n-1二进制中,各位的权为2n-1十六进制中,各位的权为16n-1八进制中,各位的权为8n-11)、二进制转换为十进制各数制中整数部分不同位的权为“基的n-1次方(n为数值所在的位数,n的最小值取1)”,小数部分不同位的权值为“基的-n次方,从左向右,每移一位,幂次减1”。
二进制数的基数为2例(10110.011)2=()D作法:1×24+0×23+1×22+1×21+0×20+0×2-1 +1×2-2+1×2-3 =(22.375)D八进制转换为十进制与二进制方法相同,只是八进制的基数为8 (1011)8 = 1×83+0×82+1×81+1×80 = (521)10十六进制转换为十进制二进制方法相同,只是十六进制的基数为16 (1011)16 = 1×163+0×162+1×161+1×160 = (4113)102. 十进制转换成N进制:整数部分(除基取余法)不断除以N直到商为0,再把各次的余数倒排;小数部分(乘基取整法)不断乘以N 直到小数部分为0,再把各次的整数顺排。
十进制转换成其他进制的原理宝子,今天咱来唠唠十进制转换成其他进制这个超有趣的事儿。
咱先来说说十进制,这可是咱日常生活里最常用的进制啦。
为啥呢?因为咱人类啊,正好有十根手指头呀。
你看,数数的时候,从1数到10,满十就进一位,多方便。
十进制里有0 - 9这十个数字,数字的大小呢,是由每个数位上的数字乘以10的相应幂次然后加起来得到的。
比如说123,就是1×100 + 2×10 + 3×1啦。
那要是把十进制转换成二进制呢?二进制可就只有0和1两个数字,就像计算机世界里的小精灵,特别单纯。
为啥计算机喜欢二进制呢?因为计算机里的电路啊,只有开和关两种状态,正好可以用0和1来表示。
把十进制转二进制的原理就像是在玩一个分堆的游戏。
比如说十进制的13,我们不断地除以2,取余数。
13除以2得6余1,6再除以2得3余0,3除以2得1余1,1除以2得0余1。
然后把这些余数从下往上排列,就得到1101啦,这就是13的二进制表示。
就好像把13这个数按照2的倍数不断拆分,最后剩下的那些小零件就是二进制里的数字。
再来说说八进制。
八进制有0 - 7这八个数字。
把十进制转成八进制呢,就像是把十进制的数按照8的倍数来分堆。
比如十进制的50,50除以8得6余2,6除以8得0余6。
然后把余数从下往上排,就是62,这就是50的八进制表示。
感觉就像是把十进制的数放到8个一组的小盒子里,最后剩下的数就是八进制的表示啦。
还有十六进制呢,十六进制有点小特别,它有0 - 9这十个数字,还有A - F这六个字母来表示10 - 15。
把十进制转十六进制也是类似的道理。
比如说十进制的255,255除以16得15余15,在十六进制里15用F表示,所以255的十六进制就是FF。
就好像把十进制的数放到16个一组的大盒子里,最后剩下的数或者字母组合起来就是十六进制的表示啦。
宝子,你看,十进制转其他进制是不是很像一场数字的变形记呀?就好像十进制这个数字在不同的规则下,换上了不同的“衣服”,变成了二进制、八进制或者十六进制。
出圈问题及进制转换.txt如果有来生,要做一棵树,站成永恒,没有悲伤的姿势。
一半在土里安详,一半在风里飞扬,一半洒落阴凉,一半沐浴阳光,非常沉默非常骄傲,从不依靠从不寻找。
34题设有n个人围坐一圈并按顺时针方向从1到n编号,从第s个人开始进行1到m的报数,报数到第个m人,此人出圈,再从他的下一个人重新开始1到m的报数,如此进行下去直到所有的人都出圈为止。
现要求按出圈次序,每10人一组,给出这n个人的顺序表。
请考生编制函数Josegh()实现此功能并调用函数WriteDat()把结果p输出到文件OUT.DAT中。
设n=100,c=1,m=10.(1)将1到n个人的序号存入一维数组p中;(2)若第i个人报数后出圈,则将p[i]置于数组的倒数第i个位置上,而原来第i+1个至倒数第i个元素依次向前移动一个位置;(3)重复第(2)步直至圈中只剩下p[1]为止。
部分源程序已给出。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include <stdio.h>#define N 100#define S 1#define M 10int p[100],n,s,m;void WriteDat(void);void Josegh(void){}void main(){m=M;n=N;s=S;Josegh();WriteDat();}void WriteDat(void){int i;FILE *fp;fp=fopen("out.dat" ," w" );for(i=N-1;i>=0;i--){printf(" %4d" ,p[i]);fprintf(fp," %4d" ,p[i]);if(i % 10==0){printf("\n" );fprintf(fp, "\n" );}}fclose(fp);}--------------------------------------------------------------------------------/* 注:题中第一个for()循环是先对数组p赋初值。
在第二个for()中用i来控制没出圈的总人数,s1=(s1+m-1)%i的作用是找出报数后出圈人的下标,其中对i求余的作用是使报数按圈进行(即报到尾后又从头报),该算法在很多题目中都用到。
由于求余的作用当报数正好到最后一个时s1为0,故而要进行if(s1==0)的判断。
内嵌的for()循环是将出圈以后的人依次往前移。
*/void Josegh(void){int i,j,s1,w;s1=s;for(i=1;i<=n;i++)p[i-1]=i;for(i=n;i>=2;i--){s1=(s1+m-1)%i;if(s1==0)s1=i;w=p[s1-1];for(j=s1;j<i;j++)p[j-1]=p[j];p[i-1]=w;}}38、请编制函数readdat()实现从文件in.dat中读取100个十六进制数到字符串数组xx中;再编制函数h16to2(),将xx中的十六进制数转换成二进制数并把已转换的二进制数仍存放在字符串数组xx,最后调用函数writedat()把结果输出到out.dat文件中。
原始数据文件存放的格式是:每行存放10个数,并用逗号隔开。
(每个数均大于0且小于等于2000)部分源程序已给出。
请勿改动主函数main()和输出数据函数writedat()的内容。
#include <stdio.h>#include <stdlib.h>#include <string.h>#include<ctype.h>#define MAX 100char xx[MAX][20];void WriteDat(void) ;int ReadDat(void){FILE *fp ;if((fp=fopen("in.dat","r"))==NULL) return 1;fclose(fp) ;return 0 ;}void H16to2(void){}void main(){int i ;for(i=0;i<MAX;i++) memset(xx,0,20);if(ReadDat()){printf("Can't open the data file in.dat!\007\n") ; return;}H16to2();WriteDat();}void WriteDat(void){FILE *fp;int i;fp=fopen("out.dat", "w") ;for(i=0;i<MAX;i++) fprintf(fp,"%s\n",xx[i]);fclose(fp) ;}--------------------------------------------------------------------------------/*注:注意该题要编写readdat()函数,其中函数itoa(data,yy,16)的作用是将整数data转换成十六进制型式的字符串存入yy中,若要转成二进制型式的字符串则用itoa(data ,yy,2)。
函数strtol(xx[i],NULL,16)的作用是将字符型转换成整型。
*/int ReadDat(void){FILE *fp ;int i,data;char yy[20];if((fp=fopen("in.dat","r"))==NULL) return 1;for(i=0;i<100;i++){fscanf(fp,"%x,",&data);itoa(data,yy,16);strcpy(xx[i],yy);}fclose(fp) ;return 0 ;}void H16to2(void){int i,data;char yy[20];for(i=0;i<100;i++){data=strtol(xx[i],NULL,16);itoa(data,yy,2);strcpy(xx[i],yy);}}62、请编制函数READDAT()实现从文件IN.DAT中读取100个十六进制数到字符串数组xx 中;再编制函数H16TO8(),将xx中的十六进制数转换成八进制数并把已转换的八进制数仍存放在字符串数组XX中,最后调用函数WRITEDAT()把结果输出到OUT.DAT文件中.原始数据文件存放的格式是:每行存放10个数,并用逗号隔开(每个数均大于0且小于等于2000).#include <stdio.h>#include <stdlib.h>#include <string.h>#include<ctype.h>#define MAX 100char xx[MAX][20];void WriteDat(void) ;int ReadDat(void){FILE *fp ;int i,data;char yy[20];if((fp=fopen("in.dat","r"))==NULL) return 1;for(i=0;i<100;i++){fscanf(fp,"%x,",&data);itoa(data,yy,16);strcpy(xx[i],yy);}fclose(fp) ;return 0 ;}void H16to8(void){int i,data;char yy[20];for(i=0;i<100;i++){data=strtol(xx[i],NULL,16);itoa(data,yy,8);strcpy(xx[i],yy);}}void main(){int i ;for(i=0;i<MAX;i++) memset(xx[i],0,20);if(ReadDat()){printf("Can't open the data file in.dat!\007\n") ; return;}H16to8();WriteDat();}void WriteDat(void){FILE *fp;int i;fp=fopen("out.dat", "w") ;for(i=0;i<MAX;i++) fprintf(fp,"%s\n",xx[i]);fclose(fp) ;}/* 注:本题中用到函数itoa()来实现从整型变成字符型。
*/ int ReadDat(void){FILE *fp ;int i,data;char yy[20];if((fp=fopen("in.dat","r"))==NULL) return 1;for(i=0;i<100;i++){fscanf(fp,"%x,",&data);itoa(data,yy,16);strcpy(xx[i],yy);}fclose(fp) ;return 0 ;}void H16to8(void){int i,data;char yy[20];for(i=0;i<100;i++){data=strtol(xx[i],NULL,16);itoa(data,yy,8);strcpy(xx[i],yy);} }。