79.下列程序的功能是:利用"Xn+1=cos(Xn)"迭代方法求方程:cos(X)-X=0的一个实根。
迭代步骤为:①取X1初值为0.0;②X0=X1,把X1的值赋给X0;③X1=cos(X0),求出一个新的X1;④若X0-X1的绝对值小于0.000001,执行步骤⑤,否则执行步骤②;⑤所求X1就是方程cos(X)-X=0的一个实根,作为函数值返回。
请编写函数countValue()实现程序的要求,最后调用函数WData(),把结果输出到文件OUT.dat中。
【答案】
float countValue()
{ float X0, X1 = 0.0;
while (1)
{ X0 = X1;
X1 = (float)cos(X0);
if (fabs(X0-X1) < 1e-6)
break;
}
return X1;
}
80.函数Rdata()实现从文件IN.dat中读取一篇英文文章,存入到字符串数组string中;请编写encryptChar()函数,其功能是:按给定的替代关系对数组string中的所有字符进行替代后,仍存入数组string的对应位置上。最后调用函数Wdata(),把结果string输出到文件OUT.dat中。
替代关系:f(p)=p*11 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 = string[i]; while (*pf != 0) { if (((*pf*11 % 256)%2 != 0) || *pf*11 % 256<=32) { pf++; continue; } *pf = *pf*11%256; pf++; } } } 81.现有一个10个人的100行选票数据文件IN.dat,其数据存放的格式是每条记录的长度均为10位,第一位表示第1个人的选中情况,第二位表示第2个人的选中情况,以此类推;内容均为字符0或1,1表示此人被选中,0表示此人未被选中,全选或全不选均为无效的选票。给定函数RData()的功能是把选票数据读入字符串数组original中。请编写函数CountRs()来统计每个人的选票数并把得票数依次存入result[0]到result[9]中,把结果result输出到OUT.dat文件中。 【答案】 void CountRs(void) { int i, j = 0, k; char *str; for (i=0; i<10; i++) result[i] = 0; for (i=0; i<100; i++) { str = original[i]; j = 0; while (*str) { if (*str == '1') j++; str++; } if (j!=0 && j!=10) for (k=0; k<10; k++) result[k] += original[i][k]-'0'; } }