学弟 发表于 2013-10-20 21:38:15

刚学C语言求大神帮忙!

#include <stdio.h>
main()
{
char c;
int v0 = 1,v1 = 0,v2 = 0;
do{
switch(c=getchar())
{
case 'a':case 'A':
case 'e':case 'B':
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);
}
键盘输入ADescriptor<CR>(<CR>表示回车)
结果为什么是v0=13,v1=4,v2=12?我算的答案v0=12,v1=4,v2=11;求大神帮忙!解答越详细越好!

my_angel 发表于 2013-10-20 21:38:16

本帖最后由 my_angel 于 2013-10-20 23:33 编辑

学弟 发表于 2013-10-20 23:24 static/image/common/back.gif
的ASC码是10?循环控制语句里不是‘\n’吗?
   初始值   输入ADescriptor   输入<CR>   终值
v0   1                +11                        +1      13
v1   0                +4                            +0      4
v2    0               +11                        +1       12
建议学学单步调试。。很简单的



JJ张彬华 发表于 2013-10-20 21:49:45

这个是do...while的用,他是先执行一遍括号里的代码,再进行while判断,所以default语句是被执行了13次

my_angel 发表于 2013-10-20 22:42:23

同上。。。

学弟 发表于 2013-10-20 23:04:41

JJ张彬华 发表于 2013-10-20 21:49 static/image/common/back.gif
这个是do...while的用,他是先执行一遍括号里的代码,再进行while判断,所以default语句是被执行了13次

只输入了11个字符,先执行一遍括号里的代码也是12次啊!为什么是13次啊!

学弟 发表于 2013-10-20 23:05:53

my_angel 发表于 2013-10-20 22:42 static/image/common/back.gif
同上。。。

大哥不要同上好吗,可以说仔细点吗?跪谢!

my_angel 发表于 2013-10-20 23:21:26

学弟 发表于 2013-10-20 23:05 static/image/common/back.gif
大哥不要同上好吗,可以说仔细点吗?跪谢!

因为最后一个输入<CR>在判断前也执行了一次循环体。。这么说明白了吗?

学弟 发表于 2013-10-20 23:24:04

my_angel 发表于 2013-10-20 23:21 static/image/common/back.gif
因为最后一个输入在判断前也执行了一次循环体。。这么说明白了吗?

<CR>的ASC码是10?循环控制语句里不是‘\n’吗?

学弟 发表于 2013-10-20 23:31:15

my_angel 发表于 2013-10-20 23:30 static/image/common/back.gif
初始值
v0   1
v1   0


哥这什么意思啊?

my_angel 发表于 2013-10-20 23:36:08

学弟 发表于 2013-10-20 23:31 static/image/common/back.gif
哥这什么意思啊?

看上面。。。

学弟 发表于 2013-10-20 23:38:47

my_angel 发表于 2013-10-20 23:36 static/image/common/back.gif
看上面。。。

明白了!跪谢!

ugghfhggh 发表于 2013-10-20 23:45:55

你搞笑了,v1初始都为1当然要比v2多一次了
页: [1]
查看完整版本: 刚学C语言求大神帮忙!