| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 767 人关注过本帖
标题:[求助]一个小程序的执行结果
取消只看楼主 加入收藏
yuyi
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-4-25
收藏
 问题点数:0 回复次数:2 
[求助]一个小程序的执行结果

本人最近刚学C++,看到书上一个例子,源程序如下:
#include <iostream.h>
char input[]="SSSWILTECH1\1\11W\1WALLMP1";
void main()
{
char c;
for (int i=2;(c=input[i])!='\0';i++)
{
switch(c)
{
case 'a':cout<<'i';continue;
case '1':break;
case 1:while((c=input[++i])!='\1'&&c!='\0');
case 'E':
case 'L':continue;
default:cout<<c;
continue;
}
cout<<' ';
}
cout<<endl;
}
执行结果是 SWITCH WAMP
不知道case 1 后面的语句怎么执行的。
哪位好心人帮忙解释一下,谢了

[此贴子已经被作者于2006-4-26 8:30:11编辑过]

搜索更多相关主题的帖子: 结果 
2006-04-25 22:50
yuyi
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-4-25
收藏
得分:0 
\1是ASCII里面的1
问题是case1 后面的while语句应该是个空语句吧,我理解条件成立的时候是继续向下执行,条件不成立的时候也应该向下执行吧
第一个1的时候产生一个空格,W前面的1应该还产生一个空格,
这样的话执行结果是SWITCH WWAMP吧
H和W之间有两个空格,但是上面程序的执行结果是SWITCH WAMP中间只有一个空格,而且还少一个W
所以while语句的执行有些不明白
2006-04-26 09:29
yuyi
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-4-25
收藏
得分:0 

今天用了一下c++的debug终于弄懂了程序的运行到1\1\11W\1之间的这段
case 1 后面的while语句可以写成
while(c=input[i+1]!='\1'&&c!='\0')
i++;
当执行到第一个\1是执行case1 后面的while语句\1后面是\11所以条件成立执行i++,直到W后面的\1条件为0,则跳出while循环。
这种解释应该是对的,我是从i值判断出来的,大家可以试一试

谢谢三楼mm的提示我一直认为\11是两个字符。

2006-04-26 23:16
快速回复:[求助]一个小程序的执行结果
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015992 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved