1.就餐问题

某公司由于人多,午餐分为多批次就餐,严格要求每批次就餐时间。并定期抽查就餐情况。请编写程序实现就餐抽查情况。要求实现函数:

void check_lunch(int num, int time,int input[], int output[])

【输入】  int num,就餐总人数

          int time,就餐分批数

          char input[],就餐情况

【输出】  char output[], 违规就餐情况

【返回】  无

说明:对就餐分3批的情况,12人就餐,正确的就餐情况应如下分布[1,2,3,1,2,3,1,2,3,1,2,3],不符合该分布的即是违规,输出时对相应位置0。

例:

1)      输入:num = 12,time = 3,input =[1,2,3,3,1,3,1,1,1,1,2,3]

输出:output = [1,2,3,0,0,3,1,0,0,1,2,3]

 

2)      输入:num = 11,time = 4,intput = [1,2,3,4,2,3,3,4,1,2,3]

输出:output = [1,2,3,4,0,0,3,4,1,2,3]

案例实现:

 1 #include<stdio.h>
 2 int main()
 3 {
 4 void check_lunch(int num,int time,int input[],int output[]);
 5 int num,time,input[1000],output[1000],i;
 6 printf("num:\n");
 7 scanf("%d",&num);
 8 printf("time:\n");
 9 scanf("%d",&time);
10 for(i=0;i<num;i++)
11 scanf("%d",&input[i]);
12 check_lunch(num,time,input,output);
13 for(i=0;i<num;i++)
14 printf("%d ",output[i]);
15 puts("");
16 return 0;
17 }
18 void check_lunch(int num,int time,int input[],int output[])
19 {
20 int i=0,j=0;
21 for(i=0;i<num;++i)
22 {
23 if(input[i]==((i+1)%time) || ((i+1)%time==0 && input[i]==time))//前者判断当出现倍数关系时,后者判断正常情况下
24 output[i]=input[i];
25 else
26 output[i]=0;
27 }
28 }

 

posted on 2013-06-15 22:22  细雨微光  阅读(555)  评论(0编辑  收藏  举报