c语言统计排序问题
要求:按时间段(可以每2小时为一段)对不同类型场地的租用情况进行 排序txt表格:
site就是场地
主程序我是这么写的:
struct yonghu
{
char gender;
int age;
int id;
int amount;
char tss[10];
int starttime;
int endtime;
int site;
int pay;
};
struct paixu1
{
int site1;
int guan2;
};
char tmp[512]; //定义一个临时变量,存储每一行数据
int renshu=0,i=0,j=0;
struct yonghu xinxi[1000];
struct paixu1 xu[10];
FILE *infile;
infile=fopen("yonghuzonghexinxi.txt","r");
if(infile==NULL)
{
printf("\nFailed to open the file");
exit(1);
}
fgets(tmp, sizeof(tmp), infile ); //跳过首行
printf("\nGender Age ID Amount TSS Time site pay\n");
while( fgets( tmp, sizeof(tmp), infile ) )
{
char c_tmp[128];
sscanf( tmp,"%c %d %d %d %s %d-%d %d %d", &(xinxi[renshu].gender), &(xinxi[renshu].age),&(xinxi[renshu].id),&(xinxi[renshu].amount),&xinxi[renshu].tss,&xinxi[renshu].starttime,&xinxi[renshu].endtime,&xinxi[renshu].site,&xinxi[renshu].pay);
printf("%c %d %d %d %s %d-%d \t%d \t%d\n",xinxi[renshu].gender,xinxi[renshu].age,xinxi[renshu].id,xinxi[renshu].amount,xinxi[renshu].tss,xinxi[renshu].starttime,xinxi[renshu].endtime,xinxi[renshu].site,xinxi[renshu].pay);
renshu++;
}
fclose(infile);
printf("\n以下为按每2小时为一段对不同类型场地的租用情况进行排序");
int shijian1=0,shijian2=2,guan2[10],a,b;
for(i=0;i<6;i++)
{
xu[i].guan2=0;
xu[i].site1=i+1;
}
for(shijian1=0,shijian2=2;shijian2<=24;shijian1+=2,shijian2+=2)
{
for(i=0;i<=renshu;i++)
{
if(xinxi[i].endtime<=shijian1||xinxi[i].starttime>=shijian2)
break;
else
switch(xinxi[i].site)
{
case 1:
xu[0].guan2+=1;
break;
case 2:
xu[1].guan2+=1;
break;
case 3:
xu[2].guan2+=1;
break;
case 4:
xu[3].guan2+=1;
break;
case 5:
xu[4].guan2+=1;
break;
case 6:
xu[5].guan2+=1;
break;
}
}
printf("%d",xu[0].guan2);
for(i=0;i<6;i++)
{
for(j=1;j<6;j++)
{
if(xu[i].guan2<xu[j].guan2)
{
a=xu[j].guan2;
b=xu[j].site1;
xu[j].guan2=xu[i].guan2;
xu[j].site1=xu[i].site1;
xu[i].guan2=xu[j].guan2;
xu[i].site1=xu[j].site1;
}
}
}
printf("\n时间段:%d-%d\n",shijian1,shijian2);
for(i=0;i<6;i++)
{
printf("\n第%d场馆使用人数为%d\n",xu[i].site1,xu[i].guan2);
}
}
输出是:
后面的时间段基本都是这样
求哪里错了,帮我修改下