c语言编程题,两段代码有何不同

来源:百度知道 编辑:UC知道 时间:2024/06/24 09:04:03
第一段{ int i,j;
int str;
for(i=0;i<maxline;i++)
{ str=strlen(xx[i]);
for(j=0;j<str;j++)
{ if(xx[i][j]>='a' && xx[i][j]<'z' )
xx[i][j]++;
if(xx[i][j]=='z')
xx[i][j]='a';
}
}

}
第二段
{
int i,j; /*定义循环控制变量*/
int str; /*存储字符串的长度*/
for(i=0;i<maxline;i++) /*以行为单位获取字符*/
{
str=strlen(xx[i]); /*求得当前行的字符串的长度*/
for(j=0;j<str;j++)
if(xx[i][j]>='a' && xx[i][j]<='z') /*如果是小写字母*/
if(xx[i][j]=='z')
xx[i][j]='a'; /*如果是小写字母z,则改写成字母a*/
else
xx[i][j]+=1; /*其他的小写字母则改写为该字母的下一个字母*/
}
}

我认为此题两段代码的运行结果有所不同,例如此题输入c,d,g;
第一段执行顺序先判断c是否为小写字母,因为c是,所以执行x[i][j]++,则变为下一个小写字母d,然后判断其是否为小写'z';

第二段则先判断'c'是否为小写'z',如果不是,才执行x[i][j]++

注意x[i][j]++的执行顺序

for语句和IF语句如果没加{}表范围的话,编译器认为范围为只包括下一句

要注意作用域!