1、三级信息管理技术机试-221 及答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序 ReadDat()实现从文件 in.dat中读取 100个十六进制数到字符串数组 xx中;再编制函数h16to10(),将 xx中的十六进制数转换成十进制数并把已转换的十进制数仍存放在字符串数组 xx,最后调用函数 WriteDat()把结果输出到 outdat 文件巾。原始数据文件存放的格式是:每行存放 10个数,并用逗号隔开(每个数均大于 0且小于等于 2000)。请勿改动主函数 main()、输出数据函数 writeDAT()的内容。试题源程序#
2、includestdioh#includestdlibh#includestringh#includectypeh#define MAX 10char xxMAX20;void WriteDat(void);int ReadDat(void)FILE*fp;if(fp=fopen(“INDAT,“r“)=NULL)return 1:fclose(fp);return 0;void H16tol0(void)void main()int i;for(i=0;iMAX;i+)memset(xx,0,20);if(ReadDat()printf(“Cant open the data file in
3、dat!007n“);return;H16to10();WriteDat();void WriteDat(void)FILE*fp;int i;fp=fopem(“OUT DAT“,“w“);for(i=0;iMAX;i+)fprintf(fp,“%sn“,xxi);fclose(fp);(分数:100.00)_三级信息管理技术机试-221 答案解析(总分:100.00,做题时间:90 分钟)一、上机题(总题数:1,分数:100.00)1.请编制程序 ReadDat()实现从文件 in.dat中读取 100个十六进制数到字符串数组 xx中;再编制函数h16to10(),将 xx中的十六进制数转
4、换成十进制数并把已转换的十进制数仍存放在字符串数组 xx,最后调用函数 WriteDat()把结果输出到 outdat 文件巾。原始数据文件存放的格式是:每行存放 10个数,并用逗号隔开(每个数均大于 0且小于等于 2000)。请勿改动主函数 main()、输出数据函数 writeDAT()的内容。试题源程序#includestdioh#includestdlibh#includestringh#includectypeh#define MAX 10char xxMAX20;void WriteDat(void);int ReadDat(void)FILE*fp;if(fp=fopen(“IN
5、DAT,“r“)=NULL)return 1:fclose(fp);return 0;void H16tol0(void)void main()int i;for(i=0;iMAX;i+)memset(xx,0,20);if(ReadDat()printf(“Cant open the data file indat!007n“);return;H16to10();WriteDat();void WriteDat(void)FILE*fp;int i;fp=fopem(“OUT DAT“,“w“);for(i=0;iMAX;i+)fprintf(fp,“%sn“,xxi);fclose(fp)
6、;(分数:100.00)_正确答案:(int ReadDat(void)FILE*fp;int i,data;char n20;if(fp=fopen(“INDAT“,“r“)=NULL)return 1;for(i=0;iMAX;i+)fscanf(fp,“%x“,&data);itoa(data,yy,16);strcpy(xxi,yy);fclose(fp);return 0;void H16tol0(void)int i,data;char yy20;for(i=0;iMAX;i+)data:strtol(xxi,NULL,16);itoa(data,yy,10);strcpy(xxi,yy);)解析:解析 本题主要考查的是进制转换问题。要注意本题还要编写 ReadDat()函数,本题算法较为简单,难点在于几个关键的系统函数如何使用,比如scan(fp,“%x”,&data)的作用是从文件指针 fp指向的文件中读取一个十六进制数存放到变量 data中。H16t010(void)实现从十六进制到十进制的转换,strtol()将字符型转换成长整型数,itoa(data,yy,16)将 data数据转换成字符串,并存入 yy所指的内存单元中,第三个参数表示转换成十六进制数。