一题C语言 大家帮一下 谁会?????????

来源:百度知道 编辑:UC知道 时间:2024/05/09 16:53:34
#include 〈 stdio.h 〉
void main ()
{ int i=0,n;
char S [10]="298h01";
n=0;
for (i=0; S[i] !='\0'; i++)
if( s[i] < =’9’&& s[i]> ='0' ) n=n*10+(s[i]-‘0’); else break;
printf("%d\n",n);

可不可以帮忙解释一下啊 先谢谢各位了

答案是298.
对循环进行分析,第一次i=0,即S[0]='2',if条件成立
n=n*10+(s[0]-'0') ,因定义n=0,则第一次循环结果n=2
进入下次循环
第二次i=1,即S[1]='9',if条件成立 因第一次循环n已经重新付值为2,即n=n*10+(s[1]-'0'), n=29 进入下次循环
第三次i=8,即S[2]='8',if条件成立 n同上即n=29,
n=n*10+(s[2]-'0'),n=298
第4次 i=4,s[4]='h'if条件不成立 执行else break;
即结束整个循环,最后换行输出n=298