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);
可是运行结果是错的
请问为什么呢
到底是哪里出错了?
谢谢大家了 展开
正确的答案是
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);
可是运行结果是错的
请问为什么呢
到底是哪里出错了?
谢谢大家了 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询