读书人

!请高手帮帮忙解读一下程序!

发布时间: 2012-03-11 18:15:39 作者: rapoo

求救!!!请高手帮帮忙解读一下程序!!!!!!!!
我不太同C语言,但这是我的实习作业,老师会提问这程序的
主要的内容是什么?
什么意思?
请高手帮忙解读,给予我中文解析.
还有,顺便说说IsChecked ,const 是什么意思?
for (i=0; i <2097152; ++i) 中的2097152,怎么要这么大的范围?

#include <stdio.h>
static char *WEEK[7]= "Sun. ", "Mon. ", "Tues. ", "Wedn. ", "Thur. ", "Fri. ", "Sat. "};

int IsChecked(const int pSon[])
{int i, j;
for (i=0; i <7; ++i)
{for (j=0; j <7&&pSon[j]!=i; ++j);
if (j == 7) return 0;
}
return 1;
}

void main()
{int t=0, j, person[7];
long i;
printf( "ZHAO, QIAN, SUN, LI, ZHOU, WU, CHEN\n\n ");
for (i=0; i <2097152; ++i)
{for (j=0; j <7; ++j)
{person[j] = (i> > (3*j)) & 7L;
}
if (!(person[0]==2 || person[0]==4))continue;
else if (!(person[1]==1 || person[1]==6))continue;
else if (!(person[2]==3 || person[2]==0))continue;
else if (!(person[3]==5))continue;
else if (!(person[4]==1 || person[4]==4 || person[4]==6))continue;
else if (!(person[5]==2 || person[5]==5))continue;
else if (!(person[6]==3 || person[6]==6 || person[6]==0))continue;
else if (!IsChecked(person)) continue;
for (j=0; j <7; ++j)
{printf( "%s ", WEEK[person[j]]);
}
printf( "\n ");
++t;
}
printf( "\n%d Methods!\n ", t);
getch();
}


最后,真诚感谢高手的指导!谢谢!!!!

[解决办法]
IsChecked是每个人选择的休息日,const是定义一个常量
大范围是为了找出可能的各种情况,如果范围不够就找不到可能的方案,你可以把那个数改小点试试就知道了
[解决办法]
2097152的二进制是10 0000 0000 0000 0000 0000循环只有7次而已。那个for就是个初始化preson数组用的.
int IsChecked(const int pSon[])这里const表示在这个函数里pSon[]的值无法修改,是用来保护参数。

读书人网 >C++

热点推荐