| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1505 人关注过本帖
标题:[求助]switch的问题
只看楼主 加入收藏
kyan54
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-4-7
收藏
 问题点数:0 回复次数:21 
[求助]switch的问题
22.有以下程序  正确答案为C
main(){
  char k; int I;
  for(i=1;i<3;i++){
    scanf("%c",&k);
    switch(k){
      case '0': printf("another\n");
      case '1': printf("number\n");
    }
  }
}
程序运行时,从键盘输入:01<回车>,程序执行后的输出结果是
A) another number
B) another number
C) another number another
D) number number number


为什么?
我自己照他的样子编了下是another number number
搜索更多相关主题的帖子: switch 
2007-03-22 19:43
mayudong1
Rank: 2
等 级:论坛游民
威 望:1
帖 子:348
专家分:21
注 册:2006-4-18
收藏
得分:0 
case后没有break就把后面的全执行了

2007-03-22 19:56
neverTheSame
Rank: 3Rank: 3
来 自:江西农业大学
等 级:新手上路
威 望:9
帖 子:1511
专家分:0
注 册:2006-11-24
收藏
得分:0 
一步一步看执行顺序就可以知道了.
没有break;会一直往下执行,直到switch()的最后.
LZ可以试一下.

wap酷禾网(http://wap.),提供免费的、优质的、快捷的wap资源下载服务。
2007-03-22 20:30
PcrazyC
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:5652
专家分:0
注 册:2006-10-20
收藏
得分:0 

输入01,由于字符只能接受一个字符,所以此时K为0,由于K=0,而1却储存在缓存之中,所以执行printf("another\n");
又由于没有BREAK,所以继续执行下去而不去判断,所以会继续执行printf("number\n");第一次循环结束,开始第二次循环,
执行scanf("%c",&k);但由于缓存之中还有字符,系统就不会出现提示输入的界面,而直接将缓存中的1传给K,此时K=1;所以执行printf("number\n");最后的结果就是another number number,答案错了

自已去把3改大点,让其循环次数多点,输入多个字符(0101)运行下面这个.
#include <stdio.h>

void main()
{
int i;
char k;
for(i=0;i<5;i++)
{
scanf("%c",&k);
switch(k)
{
case '0':printf("another\t");
case '1':printf("number");
}
printf("\n");
}
printf("aaaa\n");
}

结果只会输出四行,而循环有五次,为什么会这样呢? 原因在此,缓存中还有一个回车符,在第五次循环是将回车符传给K,SWITCH语句中没有语句被执行,但printf("\n");是被执行了的,运行之后,输出的AAAA的前面有一行空着


雁无留踪之意,水无取影之心
2007-03-22 20:39
kyan54
Rank: 1
等 级:新手上路
帖 子:100
专家分:0
注 册:2006-4-7
收藏
得分:0 

谢谢,楼上的..分析的这么透彻~~~


if (只要你感兴趣,有毅力) printf(\"就什么都不是问题~!\");
2007-03-23 08:59
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 

main()
{
  char k;
int i;
  for(i=1;i<3;i++)
{
    scanf("%c",&k);
    switch(k)
{
      case '0': printf("another\n");
      case '1': printf("number\n");
    }
  }
}

我编译时出错,停留在char k;行
  

2007-03-23 20:08
pinglideyu
Rank: 3Rank: 3
来 自:武汉工程大学
等 级:论坛游侠
威 望:1
帖 子:735
专家分:140
注 册:2007-1-7
收藏
得分:0 
楼上的错误,有谁知道呀?
我咋不知道了,郁闷!

~~我的明天我知道~~
2007-03-23 20:19
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 
以下是引用pinglideyu在2007-3-23 20:19:13的发言:
楼上的错误,有谁知道呀?
我咋不知道了,郁闷!

头文件也有了,#include <stdio.h>,但就是没有找到问题的所在

2007-03-23 20:22
liel
Rank: 1
等 级:新手上路
帖 子:115
专家分:0
注 册:2007-1-16
收藏
得分:0 
真郁闷,不知道哪儿错了!!!
错得比较奇怪啊!!!

2007-03-23 20:41
冰天雪
Rank: 1
等 级:新手上路
威 望:1
帖 子:331
专家分:0
注 册:2007-2-27
收藏
得分:0 
以下是引用liel在2007-3-23 20:41:17的发言:
真郁闷,不知道哪儿错了!!!
错得比较奇怪啊!!!

你们的编译也没有通过?

2007-03-23 20:45
快速回复:[求助]switch的问题
数据加载中...
 
   



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

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