fclose(fp);
参考答案:void encryChar()
{ int i;
char*pf;
for(i=0;i<maxline;i++)
{
pf=xx[i]; /*指针pf指向该行首地址*/
while(*pf!=0)
{
if((*pf>= ’A’&& *pf<=’Z’)|| *pf*11%256<=32)
/*如果原字符是大写字母或计算后的值小于等于32*/
{
pf++; /*则此字符不变,取下一个字符*/
continue; /*退出此次循环*/
}
*pf=*pf*11%256; /*如果不满足条件,则用新字符替代原字符*/
pf++; /*取下一个字符*/
}
}
}
解析: 本题考查的知识点如下:
(1)字符对应的ASCH码。
(2)判断结构中多个条件的“或”运算。
(3)退出一次循环。
在C语言中,字符可参与任何整数运算。实际上,是字符的ASCH码参与了运算。所以可以直接用字符代入f(p)的关系式中求出替换字符。若原字符是大写字母或玎p)≤32,则该字符不变。只有当字符大于等于A小于等于z时,才是大写字母,所以这两个条件之间用“与”运算。而字符是大写字母与f(p)≤32之间为或的关系,所以这两个条件之间用“或”运算。若字符不变,则可不必计算替换字符,使用continue退出本次循环,进入下一次循环的条件判断中。因为这里不是直接退出循环结构,所以不能使用break语句。