首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2013-01-07 
一个简单程序,求各位大神指导小弟一下第一个问题:想知道在for循环中switch语句中的break到底是退出switch

一个简单程序,求各位大神指导小弟一下
第一个问题:想知道在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进制。

热点排行