13.函数Rdata()实现从文件IN.dat中读取一篇英文文章存入到字符串数组string中,请编写ConvertCharD()函数,其功能是:以行为单位把字符串中的所有小写字母改写成该字母的上一个字母,如果是字母a,则改写成字母z。大写字母仍为大写字母,小写字母仍为小写字母,其他字符不变,最后把已处理的字符串仍按行重新存入字符串数组string中。最后调用函数Wdata(),把结果string输出到文件OUT.dat中。
例如,原文:Adb.Bcdza
abck.LLhj
结果:Aca.Bbcyz
zabj.LLgi
原始数据文件存放的格式是:每行的宽度均小于80个字符。
【答案】
void ConvertCharD(void)
{ int i;
char *pf;
for (i=0; i { pf = string[i]; while (*pf) { if (*pf == 'a') *pf = 'z'; else if (*pf>='b' && *pf<='z') *pf -= 1; pf++; } } } 14.请编写函数countValue(),它的功能是:求出1~1000之内能被7或11整除但不能同时被7或11整除的所有整数,将它们放在数组a中,并通过n返回这些数的个数。主函数最后调用函数Wdata()把计算结果输出到OUT.dat中。 【答案】 void countValue(int *a, int *n) { int i; *n = 0; for (i=1; i<=1000; i++) if (i%7==0 && i%11) { *a = i; *n = *n+1; a++; } else if (i%7 && i%11==0) { *a = i; *n = *n+1; a++; } } 15.已知数据文件IN.dat中存有300个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数primeCal(),其功能是:求出这些四位数中素数的个数count,再求出所有满足此条件的四位数的平均值Ave1以及不满足此条件的四位数的平均值Ave2。最后调用写函数Wdata(),把结果count、Ave1、Ave2输出到OUT.dat文件中。 例如,5591是素数,则该数满足条件计算平均值Ave1,且个数count=count+1。9812是非素数,则该数不满足条件计算平均值Ave2。 【答案】 void primeCal() { int i; for (i=0; i<300; i++) if (isP(a[i])) { Ave1 += a[i]; count++; } else { Ave2 += a[i]; } Ave1 = Ave1/count; Ave2 = Ave2/(300-count); }