帮忙解答一道C语言题……

来源:百度知道 编辑:UC知道 时间:2024/05/22 20:53:53
#include <stdio.h>
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');}
当输入 ADescriptor<CR>(<CR>表示回车)时,求程序运行后v0、v1、v2的值各是多少。
谢谢大家了!!!
^+_+^ 能说详细点吗,谢谢?我只知道v1是4,v0比v2大1,但不知道为什么是13和12。谢了!
FOR luoxuan871225: 我只是要求程序运行后V1、2、3的值,没有要输出它们;或许楼上考虑到的回车就是'\n'吧……我也不太明白……

v0、v1、v2的值各是13,4,12
ADescriptor
A输入执行了v1+=1,此时V1为1,因为没有break,所以default语句总能执行。v0+=1,v0为2,v2+=1,v2为1;
D输入case语句没有,不执行v1+=1,v1仍为1;但default语句总能执行。v0+=1,v0为3,v2+=1,v2为2;



最后得出 13,4,12
注意:回车输入时,default也会执行,因为你是do while,先执行,后判断。

13 4 12

首先有个问题:没printf()怎么输出啊?
其次就是楼上说的那个原因!
不过要指出的是关于getchar()的问题:有switch,getchar()在一起使用时,在switch语句里面要注意的是:对'\n'不能忽略,因为gerchar()包含了'\n',所以有时要考虑这个条件:case'\n':
感觉你这个程序就忽略了这一点!