读书人

一个简单程序求各位大神指导小弟一上

发布时间: 2013-01-07 10:02:24 作者: rapoo

一个简单程序,求各位大神指导小弟一下
第一个问题:想知道在for循环中switch语句中的break到底是退出switch还是退出了整个for循环!
第二个问题:switch语句中的case 1:和case 9:具体是做什么的?
第三个问题:输出结果到底是什么?并且求各位大神解释一下。
在下不胜感激!
以下是整个程序:
#include<iostream>
using namespace std;
char input[]="SSSWILTECH1\1\11W\1WALLMP1";
void main()
{
int i;
char c;
for(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 9:
cout<<'S';
case 'E':
case 'L':
continue;
default :
cout<<c;
continue;
}
cout<<' ';
}
cout<<endl;
}
[解决办法]
第一个问题:想知道在for循环中switch语句中的break到底是退出switch还是退出了整个for循环!

break switch

第二个问题:switch语句中的case 1:和case 9:具体是做什么的?
while((c=input[++i])!='\1'&&c!='\0');
将i定位到'\1'字符

第三个问题:输出结果到底是什么?并且求各位大神解释一下。

#include<iostream>
using namespace std;
char input[]="SSSWILTECH1\1\11W\1WALLMP1";
int main()
{
int i;
char c;
for(i=2;(c=input[i])!='\0';i++)
{
switch(c)
{
case 'a': //'a'被替换为'i',输出。
cout<<'i';continue;
case '1': //跳出switch 输出一个空格
break;
case 1: //直接跳到下一个'\1'字符处
while((c=input[++i])!='\1'&&c!='\0');
case 9:
cout<<'S';
case 'E': //这个字符被跳过
case 'L': //这个字符被跳过
continue;
default :
cout<<c; //其他情况输出该字符
continue;
}
cout<<' ';
}
cout<<endl;
return 0;
}
//结果 SWITCH SWAMP



[解决办法]
case 1: //直接跳到下一个'\1'字符处      
while((c=input[++i])!='\1'&&c!='\0');
case 9:
cout<<'S'; //字符'\1'和'\9'都替换为'S',输出

[解决办法]
不要迷信书、考题、老师、回帖;
要迷信CPU、编译器、调试器、运行结果。
并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。
任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!

有人说一套做一套,你相信他说的还是相信他做的?
其实严格来说这个世界上古往今来所有人都是说一套做一套,不是吗?

单步调试和设断点调试是程序员必须掌握的技能之一。

[解决办法]
第一个问题:
for循环中switch语句中的break是退出switch。
第二个问题:
#include <iostream>
using namespace std;

char input[]="SSSWILTECH1\1\11W\1WALLMP1";
void main()
{
int i;
char c;
for(i=2;(c=input[i])!='\0';i++) //i=2,从第三个S开始运行


{
switch(c)
{
case 'a':
cout<<'i';continue;//如果c='a',那么就输出字符i,退出此次for循环
case '1':
break;//如果c='1',那么就跳出switch循环语句,也就是说下面的case 1、case 9、case 'E'、case 'L'、default不执行了,直接执行cout <<' '这一句,然后再进行下一次循环
case 1:
while((c=input[++i])!='\1'&&c!='\0');//如果c=1(注意这儿是整数1,其实'\1'就是整数1),那么就执行这个循环语句,循环语句的意思是只要c不是整数1并且也不是整数0,就一直循环下>
去。
case 9:
cout<<'S';//如果c=9(注意这儿也是整数9,其实'\11'就是整数9,8进制),那么就输出字符S
case 'E'://如果c='E',无输出,注意此处无break或者continue,还要执行下去的case语句,其余无continue或者break处同理。
case 'L':
continue;//如果C='L',则退出此次循环,执行下一次循环。
default ://如果不是以上case的情况,就输出这个字符
cout<<c;
continue;//跳出此次for循环,也就是不执行下面的那句cout<<' '
}
cout<<' ';
}
cout<<endl;
}

第三个问题:
输出结果 SWITCH SWAMP

最后补充一下:此题就是考break,continue的作用,总结一下break是退出switch语句,而continue是退出此次循环。还有一个小的知识点就是\1\11是整数1和9,嘿嘿,这个知识点其实就是8进制。

读书人网 >C++

热点推荐