《第12类 二进制数问题.docx》由会员分享,可在线阅读,更多相关《第12类 二进制数问题.docx(9页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第12类二进制数问题第79套上机考试试题数据文件INI. DAT和IN2. DAT中分别存有100个两位十进制数,并且 已调用读函数readDat ()把这两个文件中的数存入数组a和b中,请考生编制一 个函数jsVal (),实现的功能是依次对数组a和b中的数按条件重新组成一个新 数并依次存入数组C中,再对数组C中的数按从小大的挨次进行排序,最终调用 输出函数writeDat ()把结果C输出到文件out. dat中。组成新数的条件:假如 数组a和b中相同下标位置的数必需符合一个是偶数,另一个是奇数,那么数组a 中的数按二进制数左移八位后再加上数组b对应位置上的数,把这样组成的新数 依次存入数
2、组C中。例如:a:1233241521b:3235171518c:61615394排序后 c:53946161注意:局部源程序存在test.c文件中,程序中已定义:a100x b100和c100请勿改动数据文件IN 1.DAT和IN2.DAT中的任何数据、主函数main。、读函数readDat。和写函数writeDat。的内容。#include #define MAX 100 /定义宏变量max,其值等于100unsigned int a MAX r bMAX z cMAX; 定义无符号整型一维数组 a MAX, bMAXz c(MAX int ent = 0; 存放符合条件数的个数56789
3、101112131415161718192021222324252627282930313233343536373839404142void writeDat (); 输出函数的说明语句void jsVal()/把数据文件IN 1.DAT和IN2.DAT中的100个两位十进制数分别存入数组a和b中*/ void readDat()(int i;FILE *fp;/*以只读的方式翻开文件inl.dat ,并使文件指针fp指向这个文件*/ fp = fopen(ninl.datnz nrn);/*从文件inl.dat中读取一个整数存入数组元素ai)中*/for(i = 0; i MAX; i+)
4、fscanf(fpr “d”, &ai);f Close ( fp); 关闭文件 ini .dat/*以只读的方式翻开文件in2.dat ,并使文件指针fp指向这个文件*/fp = fopen(nin2.datMz r);/从文件in2.dat中读取一个整数存入数组元素bi中*/for(i = 0; i MAX; i+) fscanf(fpr “d, &bi);fclose (fp);关闭文件 in2.dat)void main()(int i;for(i = 0; i MAX; i+)ci = 0;readDat();jsVal ();for(i = 0; i 0; i+) printf(%
5、dnnr ci);writeDat();)/ *把结果数组c输出到文件out.dat中* /void writeDat()(FILE *fp;int i;fp = fopen (nout.datMr MwH); 以只写的方式翻开文件。ut.dat,并使文件fp指向这个文件/,循环变量i从0开始,每次加1,把数组元素ci写入文件。ut.dat中,直到i大于或等于max或者i小于等于。时,大于 。时退出循环*/for(i = 0; i 0; i+) fprintf(fpz ”dn”, ci);fclose (fp); 关闭文件out.dat)第80套上机考试试题数据文件INI. DAT和IN2.
6、DAT中分别存有100个两位十进制数,并且 已调用读函数readDat ()把这两个文件中的数存入数组a和b中,请考生编制一 个函数jsVal (),实现的功能是依次对数组a和b中的数按条件重新组成一个新 数并依次存入数组C中,再对数组C中的数按从小到大的挨次进行排序,最终调 用输出函数writeDat。把结果C输出到文件out. dat中。组成新数的条件:假 如数组a和b中相同下标位置的数均是奇数,那么数组a中十位数字为新数的千位 数字,个位数字仍为新数的个位数字,数组b中的十位数字为新数的百位数字,个位数字为新数的十位数字,这样组成的新数并存入数组C中。例如:a: 1231b: 3245c
7、: 3451241517 271275211518151155排序后 c: 1155 1275 3451注意:局部源程序存在test.c文件中。程序中已定义:a100、b100和叩00。请勿改动数据文件INLDAT和IN2,DAT中的任何数据、主函数main()、读函数readDat()和写函数writeDat()的内容。12345618#include #define MAX 100int aMAX, bMAXz cMAX;int ent = 0; /*存放符合条件数的个数*/ void jsVal09101112131415161718192021222324252627282930313
8、2333435363738394041)/*把数据文件INLDAT和IN2.DAT中的100个两位十进制数存入数组a和b中*/ void readDat()int i;FILE *fp;fp = fopen(ninl.datn, nrn);for(i = 0; i MAX; i+) fscanf(fp, d, &ai);fclose(fp);fp = fopen(win2.datnr Mrn);for(i = 0; i MAX; i+) fscanf (fpr ”为d, &bi);fclose(fp);void main()int i; void writeDat();for(i = 0; i
9、 MAX; i+)ci = 0;readDat();jsVal ();for(i = 0; i 0; i+) printf C,%dn,r ci);writeDat();)/ 把结果数组c输出到文件。mdat中* / void writeDat()FILE *fp;int i;fp = fopen(nout.datM, nwn);for(i = 0; i 0; i+) fprintf(fpz %dn, ci);fclose(fp);第81套上机考试试题函数ReadDat ()实现从文件in. dat中读取一篇英文文章存入到无符号字符 串数组XX中,请编制函数StrCharJL(),其i函数的功
10、能是:以行为单位把字 符串中的全部字符的ASCH值左移4位二进制位,低位补0,假如左移后,其值 小于等于32或大于100,那么原字符保持不变,留在原字符串对应的位置上,否 那么就把左移后的值再加上原字符的ASCII值,得到新的值仍存入原字符串对应的 位置上,之后把已处理的字符串仍按行重新存入无符号字符串数组XX中。最终 main()函数调用函数WriteDat ()把结果XX输出到文件out. dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和 空格。留意:局部源程序存放在test, c文件中。请勿改动主函数main() 读函数ReadDat ()和输出函数Write
11、Dat ()的内容。12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849#include #include unsigned char xx 50 80;int maxline = 0; /*文章的总行数/ int ReadDat(void);void WriteDat(void); void StrCharJL(void) (void main() (if(ReadDat() (printf (数据文件in.dat不能翻开! n007n); return;StrCha
12、rJL();WriteDat();)/*从文件in.dat中读取一篇英文文章存入到无符号字符串数组xx中*/ int ReadDat(void) (FILE *fp;int i = 0;char *p;if(fp=fopen(nin.datn,nrM)=NULL) return 1;while (fgets(xxir 80r fp) != NULL) (p = strchr (xxi, 1 n1); if (p) *p = 0;) maxline = i; fclose(fp); return 0;/*把结果xx输出到文件out.dat中*/ void WriteDat(void) (FILE
13、 *fp;int i;fp = fopen(out.dat, Mwn);for(i = 0; i maxline; i+) (printf(%sn, xxi);fprintf(fpr M%snw, xxi);fclose(fp);第82套上机考试试题函数ReadDatO实现从文件in. dat中读取一篇英文文章存入到字符串数组XX中;请编制函数CharConvAO,其函数的功能是:以该文章中的行为单位把字 符串中的最终一个字符的ASCII值右移4位二进制位,高位补0后加倒数其次个 字符的ASCII值,得到最终一个新的值,倒数其次个字符的ASCII值右移4位二 进制位,高位补0后加倒数第三个字符
14、的ASCH值,得到倒数其次个新的值,以 此类推始终处理到其次个字符。留意:第一个新的值与上述处理不同,第一个字 符的ASCII值加原最终一个字符的ASCII值,得到第一个新的值。得到的新值分 别存放在原字符串对应的位置上,之后把已处理的结果仍按行重新存入数组中 XX最终XmainO函数调用函数WriteDat ()把结果XX输出到文件out. dat中。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和 空格,并也按字符处理。留意:局部源程序存放在test. g文件中。请勿改动主函数main ()、读数据函数ReadDat ()和输出数据函数WriteDat () 的内容。#i
15、nclude #include char xx5080;4567891011int maxline = 0;int ReadDat(void); void WriteDat(void); void CharConvA(void) ()void main()12 ; (131415161718192021222324252627282930313233343536373839if(ReadDat()(printf (数据文件in.dat不能翻开! n007M); return;)CharConvA ();WriteDat();/*从文件in.dat中读取一篇英文文章存入到字符串数组xx中*/in
16、t ReadDat(void)(FILE *fp;int i = 0;char *p;if (fp=fopen (Min.datnr nr,r) =NULL) return 1;while(fgets (xxiz 80f fp) != NULL)(p = strchr(xxiz 1n1);if(p) *p = 0;i+; .maxline = i;fclose(fp);return 0;)/*把结果xx输出到文件out.dat中*/void WriteDat(void)4041424344FILE *fp;int i;fp = fopen (f,out .datnr w”);for (i =
17、0; i maxline; i+)4546474849printf(M%snnf xxi);fprintf (fp, sn”,xx i);)fclose(fp);第83套上机考试试题函数ReadDat ()实现从文件in. dat中读取一篇英文文章存入到字符串数组XX中,请编制函数StrChaHRO,其函数的功能是t以该文章中的行为单位把字1234567:8910111213141516171819202122232425262728293031符串中的全部字符的二进制ASCH值右移4位,高位补0,然后把右移后的字符 ASCII值再加上原字符的ASCII值,得到新的值仍存入原字符串对应的位置上
18、, 之后把已处理的结果仍按行重新存入数组XX中。最终main。函数调用函数 WriteOat ()把结果XX输出到文件out. dat中。例如:“Z”对应的ASCH值为7AH,二进制值为onnoio,右移4位后为00000111, 加上原来 2的ASCII值01111010得到10000001结果。原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和 空格,并也按字符处理。留意:局部源程序存放在test. C文件中。请勿改动主函数main。、读函数ReadDat ()和输出函数WriteDat ()的内容。include #include char xx5080;int maxl
19、ine = 0; /*文章的总行数/ int ReadDat(void);void WriteDat(void); void StrCharJR(void) |void main()(if(ReadDat() printf (数据文件in.dat不能翻开! n007n); return;)StrCharJR();WriteDat();/*从文件in.dat中读取一篇英文文章存入到字符串数组xx中/ int ReadDat(void) (FILE *fp;int i = 0;schar *p;if ( (fp=fopen (in .dat”,r) NULL) return 1;while(fgets(xxir 80z fp) 1= NULL) (p = strchr(xxi, 1n);if (p) *p = 0;323334353637383940414243444546474849)maxline = i;fclose (fp);return 0;/*把结果xx输出到文件out.dai中*/void WriteDat(void)(FILE *fp;int i;fp = fopen(nout.datnz nwn);for(i = 0; i maxline; i+) (printf(M%snnr xxi);fprintf(fp, %sn, xxi); fclose(fp);
限制150内