C++ 读不懂下面代码,“\1\11 ”是什么意思?还有在代码中有两个"W",为什么输出只有一个“W”??

int
main( )

{
char str[]="SSSWILTECH1\1\11W\1WALLMP1";

int k; char c;

for(k=2; (c=str[k])!='\0'; k++)

{ switch (c)

{ case 'A' : putchar('a'); continue;

case '1' : break;

case 1 : while((c=str[++k])!='\1'&&c!='\0');

case 9 : putchar('#');

case 'E' :

case 'L' : continue;

default : putchar(c); continue;

}

putchar('*');

}

cout<<endl;

return 0;

}

答案:SWITCH*#WaMP*

\ooo 表示八进制数据
\1表示数字1(不是字符'1'), \11 表示八进制11,即十进制9
因为case 1 : while((c=str[++k])!='\1'&&c!='\0');这一行,
当读到1的时候,循环找到下一个1(实际上就是忽略掉两个1中间的内容)
"\1\11W\1WALLMP1"就相当于"\1\1WALLMP1"了追问

如果忽略掉两个1中间的内容,#如何输出啊,while里面还是不懂啊,不知如何读,可以详细点吗

追答

因为case 1后面没有break,所以会进入到case 9里面。

case 1的指令相当于
case 1 :
while( (c=str[++k])!='\1' && c!='\0') //c等于str[++k],c不等于'\1'并且c不等于'\0'
{
; //空语句,啥也没做
}

温馨提示:内容为网友见解,仅供参考
无其他回答

...\\1\\11 ”是什么意思?还有在代码中有两个"W",为什么输出只有一个...
\\1表示数字1(不是字符'1'), \\11 表示八进制11,即十进制9 因为case 1 : while((c=str[++k])!='\\1'&&c!='\\0');这一行,当读到1的时候,循环找到下一个1(实际上就是忽略掉两个1中间的内容)"\\1\\11W\\1WALLMP1"就相当于"\\1\\1WALLMP1"了 ...

c++埃及分数问题,测试有两个wa,求大神看下代码。。。
给出一个真分数,求用最少的1\/a形式的分数表示出这个真分数,在数量相同的情况下保证最小的分数最大,且每个分数不同。如 19\/45=1\/3 + 1\/12 + 1\/180 二、迭代加深搜索 迭代加深搜索可以看做带深度限制的DFS。首先设置一个搜索深度,然后进行DFS,当目前深度达到限制深度后验证当前方案的合理性...

我总是输出两个值 但我想要一个值 就是有小数点的那个 c++语言
你到底想问什么,让大家帮你解决什么问题

c++如何使控制台中输出的某段文字高亮显示?求代码示例
示例代码如下:include <iostream>#include <Windows.h>#include <stdio.h>#include <stdarg.h>using namespace std;void cprintf(char* str, WORD color, ...) {WORD colorOld;HANDLE handle = ::GetStdHandle(STD_OUTPUT_HANDLE);CONSOLE_SCREEN_BUFFER_INFO csbi;GetConsoleScreenBufferInfo(handl...

写出下面题目的程序代码(C++) 并且输入输出都截个图 谢谢~
int front = 0, rear = 1;w[rear].x = x; w[rear].y = y; board[x][y] = 0;while(front < rear) { front ++;for(int i = 0; i < 4; i ++) { int tx = w[front].x + step[i][0];int ty = w[front].y + step[i][1];if(tx >= 0 && tx < size && ...

C++中文件操作。 如果合并两个TXT文件中的内容,然后输出到第三个空白...
using namespace std;char sa[100][100];int la=0;char sb[100][100];int lb=0;int main(){ int i=0,j=0;freopen("C:\\\\1.txt","r",stdin);while(gets(sa[la]))la++;freopen("C:\\\\2.txt","r",stdin);while(gets(sb[lb]))lb++;freopen("C:\\\\3.txt","w",stdout);w...

求一个C++程序,可以去掉C++头文件和源文件中的注释行。
下面的状态表示:0: 正在分析 1:读到第一个\/ 2:读完第二个\/,"\/\/...3:读到 "\/*...4:读到 "\/*...5:读到第一个"6:读到字符串里的转义符 "...\\ 7:找到注释 0和7是等价的状态,但是可以用7状态做些特别的事情,比如这个时候删除刚找到的注释等。最后的程序如下,输入输出还是...

C++中 if ( w ) 的意思
w是传递的值,从5开始.在if语句中,对于大于0的数,认为是真,所以,if(5),if(4)if(3)if(2)if(1)都是条件成立,可以执行,到if(0)时,条件不成立,退出。

一份C++的代码,有个地方的判定不知怎么写,麻烦帮忙看看
选完之后把这一列的值全赋为0不就完了,下一次即使选到了也没有关系啊,因为如果选到了0 这种选择方案一定不会是最大值,最终肯定会被排除。

C++语言查一下这段代码freopen有错吗?文件里没有输出结果。
freopen的第三个参数是FILE*类型的,也就是说stdin和stdout也是FILE*类型。但是cout是控制台输出函数,不是文件输出函数。因此需要使用fprintf、fwrite等函数将数据写入到文件中。我推荐你有机会的话仔细地阅读有关C++文件输入输出的书籍或者资料,因为你一直在使用C语言的文件读写函数写一个C++程序。

相似回答