一个运用数组的问题,叫开灯问题

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MAXN 1000+10
int a[MAXN];
int main(){
int i,j,n,k,first=1;
memset(a,0,sizeof(a));
scanf("%d%d",&n,&k);
for(i=1;i<=k;i++)
for(j=1;j<=n;j++)
if(j%i==0)a[j]=!a[j];
for(i=1;i<=n;i++)
if(a[i]){if(first)first=0;else printf(" ");printf("%d",i);}
printf("\n");
system("pause");
return 0;

}请问为什么这个程序system(“pause”);这个地方不能进行?另外a[j]=!a[j];
这句话代表什么意思?

system("pause");
语句的左括号错了,是个中文字符
a[j]=!a[j];
语句的意思是 将a[j]的内容求“非”,即如果是真,变为假,如果是假,变为真
作为整型数组来说就是,如果是非零则变为零,如果是零就变为1追问

if(a[i]){if(first)first=0;else printf(" ");printf("%d",i);}
那么请问这句话是什么意思呢?

追答

if(a[i] != 0) // 当a[i] 的内容非零
{ if( first != 0 ) first=0;
else printf(" "); //显示一个空格
print("%d", i); } //显示i 的值

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