作业帮 > 综合 > 作业

void main() {int a=0,b=0,d=0;char *s="xcbc3abcd";for(;*s!=`\

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/04/28 15:12:52
void main() {int a=0,b=0,d=0;char *s="xcbc3abcd";for(;*s!=`\0`;s++ )
switch(*s)
{case`a`:a++;break;
case`b`:b++;break;
default:d++;
}
printf("a=%d,b=%d,d=%d\n",a,b,d);
}
这个程序应该是找一个字符串中'a'的个数、'b'的个数、还有剩余字符的个数.
有什么不明白的吗?
再问: 就是不明白那个for(;*s!=`\0`;s++ )
再答: for是一个循环这应该知道吧。 char *s="xcbc3abcd"这是字符串用字符指针表示的方式。引用其中,因为是字符串,所以d最后还有一个'\0',但没有显示出来。 字符指针引用字符串的的元素是这样的:*(s+i) 就相当于s[i]。
再问: 这样子说我明白了,然后执行下面的语句的时候,就是switch(*S) CASE`a`:a++;break; 到这里的时候 我怎么理解它啊?他是不是算在条件为*s里面,情况为a=0的时候开始,执行a++然后就中断
再答: switch case 语句你上网查一下就知道了。 意思就是说: 判断*s,如果*s为字符'a'的话,a(与字符'a‘是两码事儿)自增一。然后跳出这个switch case 语句,继续for循环。如果*s不为字符'a'的话,执行下面的case 'b':b++;break;(以此类推)。