1、计算机三级(数据库技术)上机考试 28 及答案解析(总分:-1.00,做题时间:90 分钟)1.函数 ReadDat()的功能是实现从文件 ENG4.IN 中读取一篇英文文章,存入到字符串数组 xx 中。请编制函数 encryptChar(),按给定的替代关系对数组 xx 中的所有字符进行替代,结果仍存入数组 xx 对应的位置上,最后调用函数 WriteDat()把结果 xx 输出到文件 PS4.DAT 中。 替代关系:f(p)=p*11 mod 256(p是数组 xx 中某一个字符的 ASCII 值,f(p)是计算后新字符的 ASCII 值),如果计算后 f(p)的值小于等于32 或大于 1
2、30,则该字符不变,否则将 f(p)所对应的字符进行替代。 注意:部分源程序已给出。 原始数据文件存放的格式是:每行的宽度均小于 80 个字符。 请勿改动主函数 main()、读函数 ReadDat()和写函数 WriteDat()的内容。 试题程序: #include #include #include #include unsigned char xx5080; int maxline = 0;/* 文章的总行数 */ int ReadDat(void); void WriteDat(void); void encryptChar() main() clrscr(); if(ReadDat
3、() printf(“数据文件 ENG4.IN 不能打开!n007“); return; encryptChar(); WriteDat(); int ReadDat(void) FILE *fp; int i = 0; unsigned char *p; if(fp = fopen(“ENG4.IN“, “r“) =NULL) return 1; while(fgets(xxi, 80, fp) !=NULL) p = strchr(xxi, n ); if(p) *p = 0; i+; maxline = i; fclose(fp); return 0; void WriteDat(void) FILE *fp; int i; fp = fopen(“PS4.DAT“, “w“); for(i = 0; i 130 | *pf*11%256=32)”语句来实现,如果该字符不满足上述条件,就用一个新的字符来替代,新的字符是当前的字符乘以 11 的结果再去与 256 求余数。处理完毕后,指针去取下一个字符。如果该字符满足所给条件,将不做任何操作,指针直接下移,去取下一个字符,对下一个字符进行处理。