#include<stdio.h>
void main()
{
char *s="12134211";
int a=0,b=0,c=0,d=0;
int k;
for(k=0;s[k];k++)
switch(s[k])
{
default:d++;
case '1':a++;
case '3':c++;
case '2':b++;
}
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
}
运行的结果是
a=5 b=8 c=6 d=1
这是一个在字符串中找相应的数字的程序;它的a代表1的个数,b代表2 的个数,c代表3 的个数,剩下的就是d,其实也就四个数,剩下不就是d了;要看到 明白一点,建议把程序改成这样
#include<stdio.h>
void main()
{
char *s="12134211";
int a=0,b=0,c=0,d=0;
int k;
for(k=0;s[k];k++)
switch(s[k])
{
case '4':d++;
case '1':a++;
case '3':c++;
case '2':b++;
}
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
}
switch语句可以不要default的,switch后面的s[k],就是字符s[k];就是用case 后面的接的' 1','2',等和它去比对,要是对了,就执行那个case后面的语句,建议在后面加个break;程序变成这样,
#include<stdio.h>
void main()
{
char *s="12134211";
int a=0,b=0,c=0,d=0;
int k;
for(k=0;s[k];k++)
switch(s[k])
{
case '1':a++;break;
case '3':c++;break;
case '2':b++;break;
case '4':d++;break;
}
printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);
}
你自己运行一下,看是不是你想要的结果,是不是和你想的一样