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