该题目时判断一个英文语句有多少个单词的,或者说被空格隔开的英文字符有几个,所以答案是4
s[20]:需要统计的字符串
char ch: 类似存储当前指向的字母位置
int i : 循环时候使用
n= 0: 统计有几个单词
w=0: 用作辅助判断
1:(ch=s[i])!=' \0'这个句子等同于 => ch = [i]; ch!='\0'
这里你需要明白一个东西,就是\0是用于判断字符串是否结束用的,他会默认编译后会添加,所以采用\0判断是否结束
(ch=s[i])!=' \0'的意思就是把s[i]的值赋值给ch,然后判断ch是否是这个语句的结束字符
2:ch==' '是判断ch这个字符是否是空格,如果是空格w=0
main(){
char s[20] = "I am a superman";
int i, n = 0 w = 0;
char ch;
for (i = 0; (ch = s[i]) !='\0'; i++){//将s[i]的值赋值给ch,如果ch不等于‘\0’(如果ch不是句子结束标志,表示句子没结束,继续循环){
if(ch ==' ')w = 0;//判断是否是空格,如果是空格w=0
else if(w == 0){
w = 1; n ++;//如果上一个ch是空格则现在让w = 1,然后n++;
}
}//循环到此结束
print("%d",n)//把结果输出出来
}
(ch=s[i])!=' \0'; 把数组元素s[i]的值赋给ch,然后判断这个值是不是为空。
(ch==' ') 这里面' '中间是个空格,就是判断ch这个字符变量的值是不是个空格(空格的ASCII值是0x20)。
(ch=s[i])!=' \0':\0表示字符串的结尾,表示一直索引到字符串s的结尾
ch==' ' :这里两个单引号中间是空格,表示判断ch是否是空格
ch=s[i])!=' \0';相当于两句 ch= s[i]; ch !='\0';
ch==' ',是判断ch是不是空格。‘’两个单引号是对单字符的操作,键盘上所有可见字符都可以这样引用
ch=s[i])!=' \0';相当于两句 ch= s[i]; ch !='\0';
ch==' ',是判断ch是不是空格。‘’两个单引号是对单字符的操作,键盘上所有可见字符都可以这样引用
当是空格时w=0;如果空格后面还有字符,下一个循环就会走到else那里,n就加1了,可以看作是统计空格的个数。那么空格有3个,为什么多一个呢?
原因是初始化时w就为0,所以第一个循环 s[0]进就进入else分支,n也就加1了。所以最后结果是4.