炫意html5
最早CSS3和HTML5移动技术网站之一

关于说反话,我的代码有点问题

include <stdio.h>

include <string.h>

static int i=0;
int main(){
char str[80][80];
int j;
while(scanf(“%s”,str[i++])!=EOF){
}
for(j=i-1;j>0;j–){
printf(“%s”,str[j]);
printf(” “);
}
printf(“%s\n”,str[0]);
printf(“%d”,i);
return 0;
}

如果把
while(scanf(“%s”,str[i++])!=EOF){
}
改为
while(scanf(“%s”,str[i])!=EOF){
i++;
}
结果就正确了

一直不太明白,还请指教~

回答

当你的这个循环
while(scanf(“%s”,str[i++])!=EOF){
}
里的 实际上参与判断的是i ,不是i++后的值 ,也就是当i =3的时候,不再执行循环体里面的代码,而i 却++了1次,输出的就是4
下面的
while(scanf(“%s”,str[i])!=EOF){
i++;
}
这种写法,当i=3的时候,条件不成立,i++不会被执行,输出的是3。

可以把上面的那个循环改成
while(scanf(“%s”,str[++i])!=EOF){
}
这样结果也是对的了

炫意HTML5 » 关于说反话,我的代码有点问题

Java基础教程Android基础教程