7.编写函数findStr(),其功能是:统计一个长度为2的子字符串在另一个字符串中出现的次数。例如,假定输入的字符串为"asd asasdfg asd as zx67 asd mklo",子字符串为"as",函数返回值是6。
函数ReadWrite()实现从文件IN.dat中读取两个字符串,并调用函数findStr(),最后,把结果输出到文件OUT.dat中。
【答案】
int findStr(char *str, char *substr)
{ int n;
char *p, *r;
n = 0;
while (*str)
{ p = str;
r = substr;
while (*r)
if (*r == *p)
{ r++;
p++;
}
else
{ break;
}
if (*r == '\0')
n++;
str++;
}
return n;
}
8.请编写函数CountValue(),它的功能是:求n以内(不包括n),同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回。
主函数最后调用函数progReadWrite()从IN.dat文件中读取10组数据,分别得出结果,且把结果输出到文件OUT.dat中。
例如,若n为1000时,函数值应为:s=153.909064。
【答案】
double countValue(int n)
{ double xy = 0.0;
int i;
for (i=1; i if (i%3==0 && i%7==0) xy += i; xy = sqrt((double)xy); return xy; } 9已知在文件IN.dat中存有N个(N<200)实数,函数RData()读取这N个实数并存入数组original中。请编写函数CalValue(),要求实现的功能有:①求出这N个实数的平均值(aver);②分别求出这N个实数的整数部分之和(sumint)以及小数部分之和(sumdec),最后调用函数WData()把所求的结果输出到文件OUT.dat中。 【答案】 void CalValue(void) { int i; double x, sum = 0; for (i=0; i { sumint = sumint+(int)original[i]; x = original[i]-(int)original[i]; sumdec = sumdec+x; sum = sum+original[i]; } aver = sum/MAXNUM; }