C语言问题,为什么两个程序代码结果不一样

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

原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
部分源程序存在文件prog1.c中。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数writeDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>

char xx[50][80];
int maxline=0;/*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
void StrCharJL(void)
{ int i,j;
char c;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);j++)
{ c=xx[i][j]<<4;
if(!(c<=32||c>100)) xx[i][j]+=c;
}
}

上面VOID是正确答案,但我不定义字符型变量的解法为什么错了?下面是第二种解法:

void StrCharJL(void)
{ int i,j;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);j++)
{if((xx[i][j]<<4)<=32 || (xx[i][j]<<4)>100) continue;
else xx[i][j]+=(xx[i][j]<<4);}
}

急盼高手回复呀,谢谢了呀!!!!
CONTINUE 语句没有错,主要是XX[I][J]<<4位的结果在用变量C装的时候和没有变量装的时候为什么会有一个是对的一个是错的原因·!!!
请哪位告诉我,谢谢了!!!!!!!

第1个回答  2007-09-12
continue不能用在条件语句中吧!应该只能在循环语句中使用!
第2个回答  2007-09-12
!(c<=32||c>100)应该等同于c>=32&&c<100
第3个回答  2007-09-12
好像你没有写错
第4个回答  2007-09-26
void StrCharJL(void)
{ int i,j;
for(i=0;i<maxline;i++)
for(j=0;j<strlen(xx[i]);j++)
{if((xx[i][j]<<4)<=32 || (xx[i][j]<<4)>100) continue;
else xx[i][j]+=(xx[i][j]<<4);}
}本回答被网友采纳
相似回答