| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 401 人关注过本帖
标题:请教一个很简单的问题
只看楼主 加入收藏
yirenwenhao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-21
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:3 
请教一个很简单的问题
#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
这段程序是不是查找数组的中的数字?
switch的作用是什么? 我是一个新手,看了半天都看不懂结果a b c d 的值是怎样得到的?
2009-08-01 16:07
soler
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:181
专家分:1077
注 册:2005-7-16
收藏
得分:10 
自己调试一下就知道问题出现在哪里了啊。
case '1':a++;
case '3':c++;
case '2':b++;
这几个语句后面都缺少break;的吧。
先去好好看看书,关于switch的。。。
2009-08-01 16:17
AND_Y
Rank: 2
等 级:论坛游民
帖 子:18
专家分:45
注 册:2009-7-31
收藏
得分:10 
#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);
}
你自己运行一下,看是不是你想要的结果,是不是和你想的一样
2009-08-01 19:00
yirenwenhao
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2009-7-21
收藏
得分:0 
回复 3楼 AND_Y
谢谢 你这么详细的讲解  我看懂了
非常感谢你 !
2009-09-20 21:56
快速回复:请教一个很简单的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018728 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved