i=0不就是使得S[0]=0了吗?那岂不是一开始就不会进入for循环?所以答案不是A吗
有以下程序
#include <stdio.h>
main()
{ char s[]="012xy\08s34f4w2";
int i,n=0;
for(i=0;s[i]!=0;i++)
if(s[i]>='0'&&s[i]<='9') n++;
printf("%d\n",n);
}
程序运行后的输出结果是 ______ 。
A. 0
B. 3
C. 7
D. 8
答案:B
解析:字符串s由于中间有一个'\0',所以for循环实际只遍历了012xy。如果这里面的字符是数字,则n++,012是数字,因此n=3。注意:i=0的时候,s【i】是‘0’,是字符零,它的ascll码是48,并不是数字零,所以并不会跳出循环,而‘\0'的ascll码是数字零,这个时候while才会跳出循环,因此选B。