zaijzhgh 发表于 2008-8-27 12:22

关于switch的一个问题

代码如下:
#include <stdio.h>
#include<stdlib.h>
int main()
{
    char c;
    int v0=1,v1=0,v2=0;
    do{
      switch(c=getchar())
      {
            case 'a':case 'A':
            case 'e':case 'E':
            case 'i':case 'I':
            case 'o':case 'O':
            case 'u':case 'U':v1+=1;
            default:v0+=1;
            v2+=1;
         }
      }while((c!='\n'));
   printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
   system("pause");
   return 0;
}

输入是:ADescriptor
题目是在网上看到的,最开始的时候我猜想结果是:V0 == V2 == 11, V1 == 4,然而编译后结果是:V0 == 13, V1 == 4, V2== 12,不解...
PS:编译器是dev c++ 4.9, 代表回车

轻水惜寒 发表于 2008-8-27 15:12

刚开始v0=1,v2=0都不相等了吧?而且回车后,还要先DO再判断WHILE吧?

zaijzhgh 发表于 2008-8-27 15:49

嗯,一开始的时候确实V0会比V2大1(but why???).而且V2确实是应该等于12才对.如果可以解释为什么V0始终比V2大1的话,那就没有什么疑问了(不明白为什么最后V0加1了但是V2没有加1).

zaijzhgh 发表于 2008-8-27 15:56

or,sorry,没有看到清楚题目,原来V0=1; ,OK.问题解决...

fengogo 发表于 2008-8-29 17:56

调试啊调试

瓜比仔 发表于 2008-9-11 00:45

不明白为什么V0=13~~~~,请指教

瓜比仔 发表于 2008-9-11 00:46

还有system("pause");是什么意思

苏格拉底柏拉图 发表于 2008-9-11 10:19

注意:没有BREAK语句!

zaijzhgh 发表于 2008-9-11 18:57

嗯,因为没有break语句,所以V0是13(题目是v0==1,当时我没有看清楚题目。汗啊!),system("pause")是调用stdlib头文件中的函数。。。可以在暂停窗口不至于一闪而过。。。

plane123cn 发表于 2008-9-12 23:42

system("pause");是调用系统的命令,即是在cmd或dos中的pause命令~~

chyongchung 发表于 2008-10-30 20:50

总算看明白了

我期待着 发表于 2008-11-1 13:28

看不明白还望指教!
页: [1]
查看完整版本: 关于switch的一个问题