88.函数Rdata()实现从文件IN.dat中读取一篇英文文章,存入到字符串数组string中;请编写函数encryptChar(),其功能是:按给定的替代关系对数组string中的所有字符进行替代后,仍存入数组string的对应位置上,最后调用函数Wdata(),把结果string输出到OUT.dat文件中。
替代关系:f(p)=p*11 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果原字符是数字字符0~9或计算后f(p)值小于等于32,则该字符不变,否则将f(p)所对应的字符进行替代。
原始数据文件存放的格式是:每行的宽度均小于80个字符。
【答案】
void encryptChar()
{ int i;
char *pf;
for (i=0; i { pf = string[i]; while (*pf != 0) { if ((*pf>='0' && *pf<='9') || *pf*11%256<=32) { pf++; continue; } *pf = *pf*11%256; pf++; } } } 89.已知数据文件IN.dat中存有200个四位数,并已调用读函数RData()把这些数存入数组a中,请编写函数CalVal(),其功能是:若一个四位数的千位数字上的值大于等于百位数字上的值,百位数字上的值大于等于十位数字上的值,以及十位数字上的值大于等于个位数字上的值,并且原四位数是奇数,则统计出满足此条件的个数count并把这些四位数按从小到大的顺序存入数组b中。最后调用写函数WData(),把结果count以及数组b中符合条件的数输出到OUT.dat文件中。 【答案】 void CalVal() { int i, thou, hun, ten, data, j; for (i=0; i { thou = a[i]/1000; hun = a[i]%1000/100; ten = a[i]%100/10; data = a[i]%10; if ((thou>=hun) && (hun>=ten) && (ten>=data) && a[i]%2!=0) { b[count] = a[i]; count++; } } for (i=0; i for (j=i+1; j if (b[i] > b[j]) { data = b[i]; b[i] = b[j]; b[j] = data; } } 90.已知在文件IN.dat中存有100个产品销售记录,每个产品销售记录由产品代码code(字符型4位)、产品名称name(字符型10位)、单价uprice(整型)、数量amount(整型)、金额sum(长整型)5部分组成。其中:金额=单价×数量。函数RData()读取这100个销售记录并存入结构数组sell中。请编写函数AscendSort(),其功能是:按产品代码从小到大进行排列,若产品代码相等,则按金额从大到小进行排列,最终排列结果仍存入结构数组sell中。最后调用函数WData(),把结果输出到OUT.dat文件中。 【答案】 void AscendSort() { int i, j; PRO temp; for (i=0; i<99; i++) for (j=i+1; j<100; j++) if (strcmp(sell[i].code, sell[j].code) > 0) { temp = sell[i]; sell[i] = sell[j]; sell[j] = temp; } else if (strcmp(sell[i].code, sell[j].code) == 0) { if (sell[i].sum < sell[j].sum) { temp = sell[i]; sell[i] = sell[j]; sell[j] = temp; } } }