2级C语言考试问题~~~高手进来~~

来源:百度知道 编辑:UC知道 时间:2024/06/23 22:23:07
1、{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);
}
为什么答案是 v0=13,v1=4,v2=12
2、
{int y=10
while (y--);printf("y=%d\n",y);
}
为什么结果是 Y=-1 请解释下过程~~~谢谢啦~
不好意思~第一题落了个条件~:
运行程序时 从键盘输入ADescriptor<CR>~

第一题有什么要解释的,case 没有Break;所以输入aeiou,v1都加1,其它的,v0,v2加1,输入回车时,结束while循环.
第二题while (y--);注意;也代表一个语句,只不过是空的而已,结束当Y=0时结束循环,再--一下就为-1了.

因为case“常量表达式”只是起语句标号作用,《并不是在该处进行条件判断。》所以它会一直的运行下去。
你应该在v1+=1;后加一个break。

while(y--)当括号中的值为0是此时定为假,此时循环不再运行,当括号中的值不为0 时定为真,此时循环运行,当循环运行到y=0时循环不再运行,而当y输出时此时的y又进行了一次y--所以输出的y为-1