一道简单的c语言题,大家帮忙看一下~会追分的!

#include <stdio.h>
main()
{ int i,r;
char s1[80]="bus";
char s2[80]="book";
for(i=r=0;s1[i]!='\0'&&s2[i]!='\0';i++)
if(s1[i]==s2[i]) i++;
else { r=s1[i]-s2[i]; break; }
printf("%d",r);
}
怎么理解呢?

此程序是判断两个字符是否相等,不相等则输出第一个不同字符之间的ASCII差值。相等就执行两次i++(你的if语句有一个i++,不知道是否是笔误),继续向右进行判断,但是是间隔了一个,如果还相等,重复执行两次i++,直到有字符数组中的字符是"\0”,此时,输出r,值仍然是0
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-02-07
注意哦:
#include <stdio.h>
main()
{ int i,r;
char s1[80]="bus";
char s2[80]="book";
for(i=r=0;s1[i]!='\0'&&s2[i]!='\0';i++)
if(s1[i]==s2[i]) i++;//这里的i++与for循环里的i++,i加了两次,所以啊...你知道的
else { r=s1[i]-s2[i]; break; }
printf("%d",r);
}本回答被提问者采纳
第2个回答  2012-02-07
就是一步一步的看呀~
首先i=r=0的时候,s1[0]=s2[0],i++;
其次i=r=2的时候,s1[2] != s2[2],r = 's'-'o' = 115 - 111 = 4;115,111 是's','o'对应的ASCII码值,然后跳出循环~
最后输出r = 4!
第3个回答  2012-02-07
此程序是判断两个字符是否相等,相等则输出0,不相等则输出第一个不同字符之间的ASCII差值。
第4个回答  2012-02-07
应该是只判断奇数位的字符第一次不相等时就输出ASCII码的差值。
相似回答