C语言:这道题中flag是什么意思?画圈的语句不明白,求详解,谢谢

如题所述

前面一句flag=……中的flag是表示“当前字符是英文字母”。
而后面一句if(flag),从再后面执行的程序(strcpy ......)来看,明显的是删除当前字符的语句,所以只能是当前字符不是英文字母时出现的操作,if语句的含义应该是if(不是英文字符)。
根据c语言对逻辑值的定义,假设当前字符是英文字符,前面是取值flag=1的,这时,不需要删除动作,希望if条件不成立,这就要flag=0。
所以需要对flag进行一次求非运算,flag =!flag 就行了(1变0,0变1)。
你填的flag=-flag,0还是0(逻辑假);1变成-1,还是逻辑真,等于没有变,所以是错误的。
温馨提示:内容为网友见解,仅供参考
第1个回答  2019-04-13
就是一个标志位,用于下面的判断。标志位为真的话就是1如果不是字母,标志位置为-1用于后面的if语句判断后进行删除,这个题不是要把字符串里面的所有字母输出吗,标志位为1的就输出,标志位为-1,也就是假,就不输出。
第2个回答  2019-04-13
flag=not.flag 中,左边的not是个结构变量。所以这表示把结构变量中的元素flag的值附值给变量flag。
第3个回答  2019-04-13
圈中第一行,flag=1,就表示str[i]是英文字母,
经flag=!flag后,flag=1,就表示str[i]不是英文字母,
下面的strcpy(str+i,str+i+1);就是删除了str[i]这个非英文字母。本回答被提问者和网友采纳
第4个回答  2019-04-13
你不能查查英语词典吗?这个单词意思很多,但是在程序上的意义估计又是另一种意思,查查字典吧!
相似回答