求助C语言中的开灯问题!有n盏灯 编号1~n 第一个人把所有灯点亮 ,第2个人按下所有编号为2的倍

求助C语言中的开灯问题!有n盏灯 编号1~n 第一个人把所有灯点亮 ,第2个人按下所有编号为2的倍数的灯开关,第3人按编号为3的灯(其中关的灯被打开 开的灯被熄灭),求最后哪些灯开着? 。。。这是书上的答案,请问![a]就是等于1吗?还有if(first) first=0那里没看懂,帮我理一下思路吧,万分感谢!

明白你说的意思了
叹号(!)作为单目运算符,是非运算的意思,该运算符操作0则返回1,操作非零数则返回0
也就是说,!0返回1,!1返回0

至于first变量,是用来控制输出的,每个被输出的数字前面都会先输出一个空格,但第一个输出的数字前面不需要输出一个多余的空格

另外多说一句,数组初始化的时候,如果仅需要在定义时同时初始化,可以写成int a[MAXN] = {0};,这样可以将数组内所有元素都初始化为0
如有疑问欢迎继续追问,谢谢 ^_^追问

打错。。是!a[j]就是等于1吗?

追答

刚才把回答更新了一下

叹号(!)作为单目运算符,是非运算的意思,该运算符操作0则返回1,操作非零数则返回0
也就是说,!0返回1,!1返回0

追问

可是非0的话就一定等于1吗?要是规定其他数呢。。。

追答

C语言和C++的编译器均规定非0为1,没明白你问的“要是规定其他数”是什么意思

追问

明白了,多谢^ ^

温馨提示:答案为网友推荐,仅供参考
相似回答