#include<stdio.h> int main() { int v1=0,v2=0; char ch; while((ch=getchar())!='#') switch(ch) { case

输入hello# v1 和v2 的值为多少
#include<stdio.h>
int main()
{
int v1=0,v2=0;
char ch;
while((ch=getchar())!='#')
switch(ch)
{
case 'a':
case 'h':
default: v1++;
case 'o':v2++;
}
printf("%d,%d",v1,v2);
return 0;
}
请说明怎么推算的 急急急急!!!!!!

第1个回答  2011-05-26
输入hello# 后,v1=4 和v2=5
hello# 中有字符‘o',跳过 default: v1++;
因此v1少加一次追问

v2为什么等于5不等于1

追答

hello,共5个字符,switch执行5次。
switch(ch)
{
case 'a':
case 'h':
default: v1++;
case 'o':v2++;
}
内部没有一个 break ;均是按顺序向下执行,不跳出。 只有字符‘o'特殊,直接跳过之前的语句,所以v1少加1. 字符为‘h'时,顺序往下执行,v1=1,v2=1. 之后的字符类似

本回答被提问者采纳
第2个回答  2011-05-26
注意case default 都没有break。 所以如果进入逻辑则会一直向下指向。
第3个回答  2023-04-14
#include<stdio.h>

int main()

{

int v1=0,v2=0;char ch;

while ((ch=getchar())!='#')

switch(ch)

{

case 'd':

case 't':

default: v1++;

case 'a':v2++;

}

printf("%d,%d\n",v1,v2);

return 0;

}
第4个回答  2018-10-19
答案是4 5
第5个回答  2011-05-26
4 5
相似回答