工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2648|回复: 11

关于switch的一个问题

[复制链接]
发表于 2008-8-27 12:22 | 显示全部楼层 |阅读模式
代码如下:

  1. #include <stdio.h>
  2. #include<stdlib.h>
  3. int main()
  4. {
  5.     char c;
  6.     int v0=1,v1=0,v2=0;
  7.     do{
  8.         switch(c=getchar())
  9.         {
  10.             case 'a':case 'A':
  11.             case 'e':case 'E':
  12.             case 'i':case 'I':
  13.             case 'o':case 'O':
  14.             case 'u':case 'U':v1+=1;
  15.             default:v0+=1;
  16.             v2+=1;
  17.          }
  18.         }while((c!='\n'));
  19.    printf("v0=%d,v1=%d,v2=%d\n",v0,v1,v2);
  20.    system("pause");
  21.    return 0;
  22. }

复制代码
输入是:ADescriptor [Enter]
题目是在网上看到的,最开始的时候我猜想结果是:V0 == V2 == 11, V1 == 4,然而编译后结果是:V0 == 13, V1 == 4, V2== 12,不解...
PS:编译器是dev c++ 4.9, [Enter]代表回车
发表于 2008-8-27 15:12 | 显示全部楼层
刚开始v0=1,v2=0都不相等了吧?而且回车后,还要先DO再判断WHILE吧?
回复

使用道具 举报

 楼主| 发表于 2008-8-27 15:49 | 显示全部楼层
嗯,一开始的时候确实V0会比V2大1(but why???).而且V2确实是应该等于12才对.如果可以解释为什么V0始终比V2大1的话,那就没有什么疑问了(不明白为什么最后V0加1了但是V2没有加1).
回复

使用道具 举报

 楼主| 发表于 2008-8-27 15:56 | 显示全部楼层
or,sorry,没有看到清楚题目,原来V0=1; ,OK.问题解决...
回复

使用道具 举报

发表于 2008-8-29 17:56 | 显示全部楼层
  调试啊调试
回复

使用道具 举报

发表于 2008-9-11 00:45 | 显示全部楼层
不明白为什么V0=13~~~~,请指教
回复

使用道具 举报

发表于 2008-9-11 00:46 | 显示全部楼层
还有  system("pause");是什么意思
回复

使用道具 举报

发表于 2008-9-11 10:19 | 显示全部楼层
注意:没有BREAK语句!
回复

使用道具 举报

 楼主| 发表于 2008-9-11 18:57 | 显示全部楼层
嗯,因为没有break语句,所以V0是13(题目是v0==1,当时我没有看清楚题目。汗啊!),system("pause")是调用stdlib头文件中的函数。。。可以在暂停窗口不至于一闪而过。。。
回复

使用道具 举报

发表于 2008-9-12 23:42 | 显示全部楼层
system("pause");是调用系统的命令,即是在cmd或dos中的pause命令~~
回复

使用道具 举报

发表于 2008-10-30 20:50 | 显示全部楼层
总算看明白了
回复

使用道具 举报

发表于 2008-11-1 13:28 | 显示全部楼层
看不明白  还望指教!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2024-6-3 05:36

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表