求用c语言数据结构的知识解答一下,或者用什么结构做
//.cpp : <span class="hljs-symbol">Defines</span> the entry point for the console application.
//
#include <span class="hljs-string">"string.h"</span>
#include <stdio.h>
char *<span class="hljs-symbol">WEEK</span>[<span class="hljs-number">7</span>] = { <span class="hljs-string">"星期天"</span>, <span class="hljs-string">"星期一"</span>, <span class="hljs-string">"星期二"</span>, <span class="hljs-string">"星期三"</span>, <span class="hljs-string">"星期四"</span>, <span class="hljs-string">"星期五"</span>, <span class="hljs-string">"星期六"</span> };
struct demand
{
char name[<span class="hljs-number">5</span>];
int day[<span class="hljs-number">7</span>];
} man[<span class="hljs-number">7</span>];
int main()
{
int <span class="hljs-symbol">IsChecked</span>(int p[]);
int t = <span class="hljs-number">0</span>, j, ren[<span class="hljs-number">7</span>];
long i, k;
printf(<span class="hljs-string">"****************保安值班系统****************\n"</span>);
printf(<span class="hljs-string">"请各位分别输入各自合适的休假日\n"</span>);
printf(<span class="hljs-string">"如赵保安选择星期二和星期三,就输入2 3 然后回车\n"</span>);
printf(<span class="hljs-string">"数字0 1 2 3 4 5 6分别代表\n星期天 星期一 星期二 星期三 星期四 星期五 星期六\n"</span>);
printf(<span class="hljs-string">"注意要输入星期天请输入数字0 \n"</span>);
for (i = <span class="hljs-number">0</span>; i<<span class="hljs-number">7</span>; i++)
{
printf(<span class="hljs-string">"请第%d个人输入\n"</span>, i + <span class="hljs-number">1</span>);
for (k = <span class="hljs-number">0</span>; k<<span class="hljs-number">7</span>; k++)
{
//scanf(<span class="hljs-string">"%d"</span>,&man[i].day[k]);
char c;
scanf(<span class="hljs-string">"%c"</span>, &c);
if (c == <span class="hljs-string">'\n'</span>)
{
break;//读取到换行符,即回车,退出循环。
}
else if (c >= <span class="hljs-number">48</span> && c <= <span class="hljs-number">57</span>)
{
man[i].day[k] = (int)(c - <span class="hljs-string">'0'</span>);
//printf(<span class="hljs-string">"%d %c\n"</span>, k, c);
}
else if (c == <span class="hljs-string">' '</span>)
{
k--;
}
}
// printf(<span class="hljs-string">"你输入的day是:"</span>);
// for(k=<span class="hljs-number">0</span>;k<<span class="hljs-number">7</span>;k++)
// {
// printf(<span class="hljs-string">"%d "</span>,man[i].day[k]);
// }
// printf(<span class="hljs-string">"\n"</span>);
printf(<span class="hljs-string">"你输入的day是:"</span>);
for (int m = <span class="hljs-number">0</span>; m < k; m++)
{
printf(<span class="hljs-string">"%d "</span>, man[i].day[m]);
}
for (int m = k; m < <span class="hljs-number">7</span>; ++m)
{
man[i].day[m] = <span class="hljs-number">8</span>;
printf(<span class="hljs-string">"%d "</span>, man[i].day[m]);
}
printf(<span class="hljs-string">"\n"</span>);
}
printf(<span class="hljs-string">"**********************************************"</span>);
printf(<span class="hljs-string">"\n* 赵, 钱, 孙, 李, 周 , 吴, 陈 , *\n"</span>);
printf(<span class="hljs-string">"*--------------------------------------------*\n"</span>);
printf(<span class="hljs-string">""</span>);
for (i = <span class="hljs-number">0</span>; i < <span class="hljs-number">2097152</span>; ++i)
{
for (j = <span class="hljs-number">0</span>; j<<span class="hljs-number">7</span>; ++j)
{
ren[j] = (i >> (<span class="hljs-number">3</span> * j)) & <span class="hljs-number">7</span>; /<span class="hljs-comment">/*通过这个循环,穷尽0-7在数组中所有的排列组合方式*/</span>/
}
if (!(ren[<span class="hljs-number">0</span>] == man[<span class="hljs-number">0</span>].day[<span class="hljs-number">0</span>] || ren[<span class="hljs-number">0</span>] == man[<span class="hljs-number">0</span>].day[<span class="hljs-number">1</span>] || ren[<span class="hljs-number">0</span>] == man[<span class="hljs-number">0</span>].day[<span class="hljs-number">2</span>] || ren[<span class="hljs-number">0</span>] == man[<span class="hljs-number">0</span>].day[<span class="hljs-number">3</span>] || ren[<span class="hljs-number">0</span>] == man[<span class="hljs-number">0</span>].day[<span class="hljs-number">4</span>] || ren[<span class="hljs-number">0</span>] == man[<span class="hljs-number">0</span>].day[<span class="hljs-number">5</span>] || ren[<span class="hljs-number">0</span>] == man[<span class="hljs-number">0</span>].day[<span class="hljs-number">6</span>]))
continue;/<span class="hljs-comment">/*如果赵保安不是休周二或周四,就不用循环了。*/</span>/
else if (!(ren[<span class="hljs-number">1</span>] == man[<span class="hljs-number">1</span>].day[<span class="hljs-number">0</span>] || ren[<span class="hljs-number">1</span>] == man[<span class="hljs-number">1</span>].day[<span class="hljs-number">1</span>] || ren[<span class="hljs-number">1</span>] == man[<span class="hljs-number">1</span>].day[<span class="hljs-number">2</span>] || ren[<span class="hljs-number">1</span>] == man[<span class="hljs-number">1</span>].day[<span class="hljs-number">3</span>] || ren[<span class="hljs-number">1</span>] == man[<span class="hljs-number">1</span>].day[<span class="hljs-number">4</span>] || ren[<span class="hljs-number">1</span>] == man[<span class="hljs-number">1</span>].day[<span class="hljs-number">5</span>] || ren[<span class="hljs-number">1</span>] == man[<span class="hljs-number">1</span>].day[<span class="hljs-number">6</span>]))
continue; /<span class="hljs-comment">/*如果钱保安不是休周一或周六,就不用循环了。*/</span>/
else if (!(ren[<span class="hljs-number">2</span>] == man[<span class="hljs-number">2</span>].day[<span class="hljs-number">0</span>] || ren[<span class="hljs-number">2</span>] == man[<span class="hljs-number">2</span>].day[<span class="hljs-number">1</span>] || ren[<span class="hljs-number">2</span>] == man[<span class="hljs-number">2</span>].day[<span class="hljs-number">2</span>] || ren[<span class="hljs-number">2</span>] == man[<span class="hljs-number">2</span>].day[<span class="hljs-number">3</span>] || ren[<span class="hljs-number">2</span>] == man[<span class="hljs-number">2</span>].day[<span class="hljs-number">4</span>] || ren[<span class="hljs-number">2</span>] == man[<span class="hljs-number">2</span>].day[<span class="hljs-number">5</span>] || ren[<span class="hljs-number">2</span>] == man[<span class="hljs-number">2</span>].day[<span class="hljs-number">6</span>]))
continue; /<span class="hljs-comment">/*如果孙保安不是休周三或周日,就不用循环了。*/</span>/
else if (!(ren[<span class="hljs-number">3</span>] == man[<span class="hljs-number">3</span>].day[<span class="hljs-number">0</span>] || ren[<span class="hljs-number">3</span>] == man[<span class="hljs-number">3</span>].day[<span class="hljs-number">1</span>] || ren[<span class="hljs-number">3</span>] == man[<span class="hljs-number">3</span>].day[<span class="hljs-number">2</span>] || ren[<span class="hljs-number">3</span>] == man[<span class="hljs-number">3</span>].day[<span class="hljs-number">3</span>] || ren[<span class="hljs-number">3</span>] == man[<span class="hljs-number">3</span>].day[<span class="hljs-number">4</span>] || ren[<span class="hljs-number">3</span>] == man[<span class="hljs-number">3</span>].day[<span class="hljs-number">5</span>] || ren[<span class="hljs-number">3</span>] == man[<span class="hljs-number">3</span>].day[<span class="hljs-number">6</span>]))
continue; /<span class="hljs-comment">/*如果李保安不是休周五,就不用循环了。*/</span>/
else if (!(ren[<span class="hljs-number">4</span>] == man[<span class="hljs-number">4</span>].day[<span class="hljs-number">0</span>] || ren[<span class="hljs-number">4</span>] == man[<span class="hljs-number">4</span>].day[<span class="hljs-number">1</span>] || ren[<span class="hljs-number">4</span>] == man[<span class="hljs-number">4</span>].day[<span class="hljs-number">2</span>] || ren[<span class="hljs-number">4</span>] == man[<span class="hljs-number">4</span>].day[<span class="hljs-number">3</span>] || ren[<span class="hljs-number">4</span>] == man[<span class="hljs-number">4</span>].day[<span class="hljs-number">4</span>] || ren[<span class="hljs-number">4</span>] == man[<span class="hljs-number">4</span>].day[<span class="hljs-number">5</span>] || ren[<span class="hljs-number">4</span>] == man[<span class="hljs-number">4</span>].day[<span class="hljs-number">6</span>]))
continue; /<span class="hljs-comment">/*如果周保安不是休周一或周四或周六,就不用循环了。*/</span>/
else if (!(ren[<span class="hljs-number">5</span>] == man[<span class="hljs-number">5</span>].day[<span class="hljs-number">0</span>] || ren[<span class="hljs-number">5</span>] == man[<span class="hljs-number">5</span>].day[<span class="hljs-number">1</span>] || ren[<span class="hljs-number">5</span>] == man[<span class="hljs-number">5</span>].day[<span class="hljs-number">2</span>] || ren[<span class="hljs-number">5</span>] == man[<span class="hljs-number">5</span>].day[<span class="hljs-number">3</span>] || ren[<span class="hljs-number">5</span>] == man[<span class="hljs-number">5</span>].day[<span class="hljs-number">4</span>] || ren[<span class="hljs-number">5</span>] == man[<span class="hljs-number">5</span>].day[<span class="hljs-number">5</span>] || ren[<span class="hljs-number">5</span>] == man[<span class="hljs-number">5</span>].day[<span class="hljs-number">6</span>]))
continue; /<span class="hljs-comment">/*如果吴保安不是休周二或周五,就不用循环了。*/</span>/
else if (!(ren[<span class="hljs-number">6</span>] == man[<span class="hljs-number">6</span>].day[<span class="hljs-number">0</span>] || ren[<span class="hljs-number">6</span>] == man[<span class="hljs-number">6</span>].day[<span class="hljs-number">1</span>] || ren[<span class="hljs-number">6</span>] == man[<span class="hljs-number">6</span>].day[<span class="hljs-number">2</span>] || ren[<span class="hljs-number">6</span>] == man[<span class="hljs-number">6</span>].day[<span class="hljs-number">3</span>] || ren[<span class="hljs-number">6</span>] == man[<span class="hljs-number">6</span>].day[<span class="hljs-number">4</span>] || ren[<span class="hljs-number">6</span>] == man[<span class="hljs-number">6</span>].day[<span class="hljs-number">5</span>] || ren[<span class="hljs-number">6</span>] == man[<span class="hljs-number">6</span>].day[<span class="hljs-number">6</span>]))
continue; /<span class="hljs-comment">/*如果陈保安不是休周三或周六或周日,就不用循环了。*/</span>/
else if (!<span class="hljs-symbol">IsChecked</span>(ren))
continue; /<span class="hljs-comment">/*至此,所有的保安可按他们的愿望休假,但是此时的方案可能有两个人同休一天的*/</span>/
/<span class="hljs-comment">/*情况发生,因此用这个函数排除,如果0-6这七个数字(一周七天)任何一个包含在数组中则此次匹配失败。*/</span>/
for (j = <span class="hljs-number">0</span>; j<<span class="hljs-number">7</span>; ++j)
{
printf(<span class="hljs-string">"%s "</span>, <span class="hljs-symbol">WEEK</span>[ren[j]]);
}
printf(<span class="hljs-string">" *"</span>);
printf(<span class="hljs-string">"\n"</span>); /<span class="hljs-comment">/*输出成功匹配方案*/</span>/
++t; /<span class="hljs-comment">/*记录成功匹配个数*/</span>/
}
printf(<span class="hljs-string">"*--------------------------------------------*"</span>);
printf(<span class="hljs-string">"\n* %d 种 情 况! *"</span>, t); /<span class="hljs-comment">/*输出成功匹配方案个数*/</span>/
printf(<span class="hljs-string">"\n**********************************************"</span>);
getchar();
return <span class="hljs-number">0</span>;
}
int <span class="hljs-symbol">IsChecked</span>(int p[])
{
int i, j;
for (i = <span class="hljs-number">0</span>; i<<span class="hljs-number">7</span>; ++i)
{
for (j = <span class="hljs-number">0</span>; j<<span class="hljs-number">7</span> && p[j] != i; ++j); <span class="hljs-comment">/*从0到6循环,如果数组中缺少0-6的任何一位数字,则返回0,如果0-6都有,则返回。*/</span>
if (j == <span class="hljs-number">7</span>)
return <span class="hljs-number">0</span>;
}
return <span class="hljs-number">1</span>; /<span class="hljs-comment">/*这个函数的作用是确保0-6这7个数字均包含在该数组中*/</span>/
}