| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1858 人关注过本帖
标题:[求助]急!小弟做二级遇到难题了!
只看楼主 加入收藏
tetet
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-5-5
结帖率:100%
收藏
 问题点数:0 回复次数:13 
[求助]急!小弟做二级遇到难题了!

#include "stdio.h"
char input[]="SSSWILTECH1\1\11W\1WALLMP1";

main()
{
int i,c;
for(i=2;(c=input[i])!='\0';i++)
{
switch(c)
{
case'a':putchar('i');
continue;
case'1':break;
case 1:while((c=input[++i])!='\1'&&c!='\0');
case 9:putchar('S');
case'E':
case'L':continue;
default:putchar(c);
continue;

}
putchar('');
}
putchar('\n');
getch();
}
答案是SWITCH SWAMP
帮忙分析,讲一下,谢谢了!

搜索更多相关主题的帖子: 难题 
2007-02-04 08:32
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

第一步:c=S的ASCII码,由于在case里面无对应项,所以执行default语句 打印S
第二步:c=W的ASCII码,由于在case里面无对应项,所以执行default语句 打印W
第三步:....................................................... 打印I
第四步:c=L的ASCII码,执行case'L'语句
第五步:c=E的ASCII码,执行case'E'语句,也就是case'L'语句
第 六,七 同一

剩下的也类似


2007-02-04 12:37
lawin
Rank: 1
等 级:新手上路
帖 子:56
专家分:0
注 册:2007-1-29
收藏
得分:0 

for(i=2;(c=input[i])!='\0';i++)是从input数组的第3个字母开始循环,即第3个S开始;
然后循环到H 就进入case 1:while((c=input[++i])!='\1'&&c!='\0');
看了半天没看懂while语句的作用,是不是漏了什么东西。不然不可能会出现后面的S字母的
是不是没有case 9 语句的??如果没有case 9语句答案才是你说的那个

2007-02-04 12:42
fengyl
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2007-2-2
收藏
得分:0 
以下是引用davidloves在2007-2-4 12:37:34的发言:

第一步:c=S的ASCII码,由于在case里面无对应项,所以执行default语句 打印S
第二步:c=W的ASCII码,由于在case里面无对应项,所以执行default语句 打印W
第三步:....................................................... 打印I
第四步:c=L的ASCII码,执行case'L'语句
第五步:c=E的ASCII码,执行case'E'语句,也就是case'L'语句
第 六,七 同一

剩下的也类似

剩下的如何出来的?

(空格)SWAMP???


2007-02-04 13:08
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

刚才没看完...
他那个好象有编译错误


2007-02-04 13:58
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 

改正确后,是这个结果

c[10] = 1,执行break; 然后打印' '.(他这里有错)putchar('');少打一个空格
c[11] = '\1',就直接是1,而不是1的ASCII码,执行case1;while中条件为假,所以执行case 9:putchar('S');
:
:
后面类似


2007-02-04 14:20
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
以下是引用davidloves在2007-2-4 14:20:21的发言:

改正确后,是这个结果

c[10] = 1,执行break; 然后打印' '.(他这里有错)putchar('');少打一个空格
c[11] = '\1',就直接是1,而不是1的ASCII码,执行case1;while中条件为假,所以执行case 9:putchar('S');
:
:
后面类似

他这里的 C[11]里面的'\1'没有被判断 直接被c=input[++i] 略过去了 ,他着里是++i 而不是 i++


羊肉串 葡萄干 哈密瓜!!
2007-02-04 16:06
mp3aaa
Rank: 5Rank: 5
等 级:贵宾
威 望:17
帖 子:2013
专家分:8
注 册:2006-2-15
收藏
得分:0 
以下是引用tetet在2007-2-4 8:32:15的发言:

#include "stdio.h"
char input[]="SSSWILTECH1\1\11W\1WALLMP1";

main()
{
int i,c;
for(i=2;(c=input[i])!='\0';i++)
{
switch(c)
{
case'a':putchar('i');
continue;
case'1':break;
case 1:while((c=input[++i])!='\1'&&c!='\0');
case 9:putchar('S');
case'E':
case'L':continue;
default:putchar(c);
continue;

}
putchar('');
}
putchar('\n');
getch();
}
答案是SWITCH SWAMP
帮忙分析,讲一下,谢谢了!

着个题最阴人的地方就是c=input[++i]


羊肉串 葡萄干 哈密瓜!!
2007-02-04 16:08
tetet
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2005-5-5
收藏
得分:0 
谢谢
谢谢各位帮忙。不过兄弟还是有些乱
题没有错,希望能在详细说一下
2007-02-04 17:23
davidloves
Rank: 1
等 级:新手上路
帖 子:137
专家分:0
注 册:2007-1-6
收藏
得分:0 
以下是引用mp3aaa在2007-2-4 16:06:13的发言:

他这里的 C[11]里面的'\1'没有被判断 直接被c=input[++i] 略过去了 ,他着里是++i 而不是 i++

哪里没判断?我调试的时候执行了这一句的.


2007-02-04 19:40
快速回复:[求助]急!小弟做二级遇到难题了!
数据加载中...
 
   



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

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