关于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, 代表回车 刚开始v0=1,v2=0都不相等了吧?而且回车后,还要先DO再判断WHILE吧? 嗯,一开始的时候确实V0会比V2大1(but why???).而且V2确实是应该等于12才对.如果可以解释为什么V0始终比V2大1的话,那就没有什么疑问了(不明白为什么最后V0加1了但是V2没有加1). or,sorry,没有看到清楚题目,原来V0=1; ,OK.问题解决... 调试啊调试 不明白为什么V0=13~~~~,请指教 还有system("pause");是什么意思 注意:没有BREAK语句! 嗯,因为没有break语句,所以V0是13(题目是v0==1,当时我没有看清楚题目。汗啊!),system("pause")是调用stdlib头文件中的函数。。。可以在暂停窗口不至于一闪而过。。。 system("pause");是调用系统的命令,即是在cmd或dos中的pause命令~~ 总算看明白了 看不明白还望指教!
页:
[1]