【正确答案】void StrCharJL (void)
{
int i, j, strl;
for (i=0; i<maxline; i++)
{
strl=strlen (xx [i]); /*求各行的总长度*/
for (j=0; j<strl; j ++)
if(xx[i] [j]<<4 <=32 ||xx[i] [j]<<4 >100);
/*如果左移4位后字符的ASCII值小于等于32或大于100,则原字符保持不变*/
else
xx[i] [j] +=xx[i] [j]<<4; /*否则就把左移后的字符ASCII值加上原
字符的ASCII*/
}
}
【答案解析】[解析] 本题考查的知识点如下:
(1)字符的计算。
(2)左移运算符“<<”的使用。
(3)二维数组的访问。
(4)判断结构中多条件的布尔运算。
本题中,以行为单位处理字符串,首先要求得每行字符串的长度,才可对每一行的字符依次进行处理。字符可参与任何整数运算,实际上是字符的ASCII码参与了运算。所以,可以直接将字符带入计算。这里要使用到左移运算符“<<”。 “<<”是双目运算符,左侧是要移动的数,右侧是移动的位数。左移后字符的ASCII码的值小于等于32或大于100,这两个条件满足一个即可,所以两条件之间用“或”运算。使用循环实现对所有行的处理。