一个C语言单选题

来源:百度知道 编辑:UC知道 时间:2024/05/30 09:55:04
#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′);
printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
}
A)v0=7,v1=4,v2=7
B)v0=8,v1=4,v2=8
C)v0=11,v1=4,v2=11
D)v0=13,v1=4,v2=12
为什么会选D呢?怎么不是C?有谁能解释一下呀?
不好意思我把输入忘记给加上去了~!~!
从键盘输入 ADescriptor<CR>(<CR>表示回车),

想起一些漫画的命名——《无题》........
你加我也加~~

如下:
既然你选c,我想字符输入你理解肯定没问题。
问题的关键是这个循环是do..while型。先做再判断是否执行循环。
输入回车,getchar()接收,回车('\n')属于default的范围
自然v0,v2要再各自加1.
然后判断循环是否继续....当然不继续咯~~~
这样v0自加了12次,v1自加了4次,v2自加了12次。
犹豫赋初值时v0=1,v1=0,v2=0;
所以v0=13,v1=4,v2=12。
回答完毕!

输入是什么?

case ′u′:case ′U′:v1+=1; 后面加上 break; 大概就能得到你想要的结果。

我昏倒 你们有没有点逻辑啊 看清楚了
在循环之前v0=1,v1=0,v2=0; 看清楚了
而v2=0; v0=1在一个语句里 也就是说 v0;始终比v2多1;
在运行最后v0=1,v1=0,v2=0; 的一般表达式为 v0=1+x,v1=z,v2=x;(z,x为变量)不要被v0=13,v1=4,v2=12的实际值忽悠了;

D

根据题意无法选C

题目不完整!