Problem 1001 看看哪里错了啊 纠结

rj14175228 | 2015-10-10 21:13:36Author
#include <stdio.h> struct name ///结构体储存姓名和性别 { char n[22]; char meal[10]; }name1[109]; int main() { int rs,jr,a1,i,c[110],temp,t1,j,t2; double r1,r2,a[110],b[111],sum[110],t; scanf("%d",&a1); while(a1--) { scanf("%d %d",&rs,&jr); t1=0;t2=0; for(i=0;i<rs;i++) ////输入 { scanf("%s",name1[i].n); scanf("%s",name1[i].meal); scanf("%lf %lf",&a[i],&b[i]); getchar(); } for(i=0;i<rs;i++) ///找出round1和round2中最大的 { if(i==0) { r1=a[0]; r2=b[0]; } if(a[i]>=r1) r1=a[i]; if(b[i]>=r2) r2=b[i]; } for(i=0;i<rs;i++) // 计算出最终得分存在sum里 { sum[i]=a[i]*(300/r1)*0.3+b[i]*(300/r2)*0.7; c[i]=i; } for(i=0;i<rs;i++) for(j=0;j<rs-1;j++) { if(sum[j]<=sum[j+1]) //按大小排序 { t=sum[j+1]; sum[j+1]=sum[j]; sum[j]=t; temp=c[j]; c[j]=c[j+1]; c[j+1]=temp; } } for(i=0;i<jr;i++) //看选的人里有没有女的 if(name1[c[i]].meal[0]=='f') t1=1; for(i=0;i<rs;i++) //看总人里有没有女的 if(name1[i].meal[0]=='f') t2=1; if(t1==0&&t2==1) //如果选的人里没有女的且总人里有女的,就把女生排名最高的那个和选的人里最低的交换 { for(i=jr;i<rs;i++) { if(name1[c[i]].meal[0]=='f') { temp=c[i]; c[i]=c[jr-1]; c[jr-1]=temp; } } } printf("The member list of Shandong team is as follows:\n"); //输出 for(i=0;i<jr;i++) puts(name1[c[i]].n); } return 0; }
rj14175228 | 2015-10-10 21:15:16# 1
。。。。好吧 没法发代码
rj14175228 | 2015-10-10 21:17:34# 2
求人解释!!加扣扣943121332