C语言 长语句转换问题

函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJL(),其函数的功能是:以行为单位把字符串中的所有字符的A... 函数ReadDat()实现从文件IN.DAT中读取一篇英文文章存入到字符串数组xx中,请编制函数StrCharJL(),其函数的功能是:以行为单位把字符串中的所有字符的ASCII值左移4位,如果左移后,其字符的ASCII值小于等于32或大于100,则原字符保持不变,否则就把左移后的字符ASCII值再加上原字符ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数writeDat()把结果xx输出到文件OUT7.DAT中。

正确的答案是
void StrCharJL(void)
{
int i, j, str;
char ch;
for (i=0; i<maxline; i++)
{
str = strlen(xx[i]);
for (j=0; j<str; j++)
{
ch = xx[i][j]<<4;
if (ch>32 && ch<=100)
xx[i][j] += ch;
}
}
}

我把
ch = xx[i][j]<<4;
if (ch>32 && ch<=100)
xx[i][j] += ch;
这里换成

if ((xx[i][j]<<4)>32 && (xx[i][j]<<4)<=100)
xx[i][j] =xx[i][j]+ (xx[i][j]<<4);

可是运行结果是错的
请问为什么呢
到底是哪里出错了?
谢谢大家了
展开
 我来答
霏夜琉瞳
2010-09-17 · 超过12用户采纳过TA的回答
知道答主
回答量:49
采纳率:0%
帮助的人:39.4万
展开全部
xx[i][j] =xx[i][j]+ (xx[i][j]<<4);
这句里xx[i][j]值变了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式