| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1150 人关注过本帖
标题:一道C语言题。希望各位高手赐教!!谢谢!
只看楼主 加入收藏
god0105
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-9-22
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:12 
一道C语言题。希望各位高手赐教!!谢谢!
char *s="0123214";int v1=0,v2=0,v3=0;while(*s){  switch(*s)    {   default:v3++;        case '1':v1++;break;        case '2':v2++;    }    s++;}printf("%d,%d,%d\n",v1,v2,v3);A)5,2,3        B)2,2,3C)5,5,3        D)1,0,1这题怎么解。我的理解是*s取的是"0123214"的首个字符"0",按这样的理解直接跳出while循环,就没答案了。我不大明白。希望各位高手大侠帮忙解答一下!!谢谢!
搜索更多相关主题的帖子: C语言 
2009-09-22 21:12
fenzhi4297
Rank: 2
等 级:论坛游民
帖 子:34
专家分:13
注 册:2009-8-31
收藏
得分:0 
char *s="0123214";  *s取的是"0123214"的首个字符"0", 这样理解貌似是错的了......
2009-09-22 21:42
m456m654
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:783
专家分:2806
注 册:2009-9-17
收藏
得分:15 
你的理解*s取的是"0123214"的首个字符"0",应该没有错误。但是我是这么认为的:
你定义的*s中存放的是char型的数据,所以你的*s的首元素是字符‘0’;而while()的括号里判断循环条件的时候是根据其ASCII代码判断的。‘0’的ASCII码值是048,为非零,所以为真,所以循环执行。一直到*s对应的元素为‘\0’,即字符串取完时,while()括号里为真正的零,循环结束。
个人观点奥。
2009-09-22 22:10
CrystalFan
Rank: 8Rank: 8
来 自:江苏南京
等 级:蝙蝠侠
帖 子:187
专家分:802
注 册:2009-7-30
收藏
得分:0 
三楼完全正确
2009-09-22 22:22
atom_09
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:92
专家分:141
注 册:2009-8-24
收藏
得分:0 
答案为A
2009-09-23 09:40
chenaiyuxue
Rank: 5Rank: 5
来 自:山东滨州
等 级:职业侠客
帖 子:334
专家分:370
注 册:2008-5-20
收藏
得分:0 
三楼正确。这道题目的意思就是统计字符串s中1,2和其他字符的个数,所以答案应该为B

你是雪,我是尘埃,相遇是意外;你坠落,在我胸怀,流进我血脉。
2009-09-23 10:09
寒风中的细雨
Rank: 17Rank: 17Rank: 17Rank: 17Rank: 17
等 级:贵宾
威 望:66
帖 子:1710
专家分:8645
注 册:2009-9-15
收藏
得分:5 
在switch语句中的选择中要注意对应项case的位置,如果是在所有的case项后面加上break并且可以找的到的情况下,对于switch里面的所有语句不管是case还是default的语序随意的都可以,即没有先后。但是,当
       switch(3)
        {   
        default:v3++;  
        case 2:v2++;      
        case 1:v1++;break;        
            
        }得到的结果和
    switch(2)
    {   
        case 2:v2++;  
        default:v3++;      
        case 1:v1++;break;
    }
    的结果是一样的。
所以在有的时候讲对于switch的{  }中的语句的顺序是任意的,但是这是有隐含条件的。
2009-09-23 11:11
flyingcloude
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:6
帖 子:598
专家分:1512
注 册:2008-1-13
收藏
得分:0 
以下是引用m456m654在2009-9-22 22:10的发言:

你的理解*s取的是"0123214"的首个字符"0",应该没有错误。但是我是这么认为的:
你定义的*s中存放的是char型的数据,所以你的*s的首元素是字符‘0’;而while()的括号里判断循环条件的时候是根据其ASCII代码判断的。 ...
正解

你能学会你想学会的任何东西,这不是你能不能学会的问题,而是你想不想学的问题
2009-09-23 11:18
god0105
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-9-22
收藏
得分:0 
回复 3楼 m456m654
一言惊醒梦中人!!终于弄明白了~呵呵!
2009-09-26 10:07
god0105
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2009-9-22
收藏
得分:0 
回复 7楼 寒风中的细雨
谢谢提醒!!很受用!!
2009-09-26 10:08
快速回复:一道C语言题。希望各位高手赐教!!谢谢!
数据加载中...
 
   



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

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