94.已知数据文件IN.dat中存有300个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数NumCal(),其功能是:求出千位上的数加百位上的数等于十位上的数加个位上的数的个数count,再求出所有满足此条件的四位数的平均值Ave1,以及不满足此条件的四位数的平均值Ave2。最后调用写函数Wdata(),把结果输出到OUT.dat文件中。
例如,7153,7+1=5+3,则该数满足条件计算平均值Ave1,且个数count=count+1。8129,8+1!=2+9,则该数不满足条件计算平均值Ave2。
【答案】
void NumCal()
{ int i, thou, hun, ten, data, n = 0;
for (i=0; i<300; i++)
{ thou = a[i]/1000;
hun = a[i]%1000/100;
ten = a[i]%100/10;
data = a[i]%10;
if (thou+hun == ten+data)
{ count++;
Ave1 += a[i];
}
else
{ n++;
Ave2 += a[i];
}
}
Ave1 /= count;
Ave2 /= n;
}
95.函数ReadDat()实现从文件IN.dat中读取一篇英文文章,存入字符串数组str中。请编写函数encryptChar(),其功能是:按给定的替代关系对数组str中的所有字符进行替代后,仍存入数组str的对应位置上。最后调用函数WriteDat(),把结果str输出到文件OUT.dat中。
替代关系:f(p)=p*13 mod 256(p是数组中某一个字符的ASCII值,f(p)是计算后新字符的ASCII值),如果计算后f(p)值小于等于32或其ASCII值是偶数,则该字符不变,否则将f(p)所对应的字符进行替代。
原始数据文件存放的格式是:每行的宽度均小于80个字符。
【答案】
void encryptChar()
{ int i;
char *pf;
for (i=0; i { pf = str[i]; while (*pf != 0) { if ((*pf*13%256)%2==0 || *pf*13%256<=32) { pf++; continue; } *pf = *pf*13%256; pf++; } } } 96.已知数据文件IN.dat中存有300个四位数,并已调用读函数Rdata()把这些数存入数组a中,请编写函数addNum(),其功能是:求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数count,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序。最后调用写函数Wdata(),把结果输出到OUT.dat文件中。 例如,7153,7+1=5+3,则该数满足条件存入数组b中,且个数count=count+1。8129,8+1!=2+9,则该数不满足条件,不存入数组b中,count变量也不加1。 【答案】 void addNum() { int i, thou, hun, ten, data, j; for (i=0; i<300; i++) { thou = a[i]/1000; hun = a[i]%1000/100; ten = a[i]%100/10; data = a[i]%10; if (thou+hun == data+ten) { 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; } }