1.3.5

#include<iostream>
using namespace std;
struct student{
	char name[10];//存放学生名字
	int sum;//解决的问题数
	int time;//耗费的总时间
	int solved[13];
};
int main(){
	int n,m,i,x,j;
	cin>>n>>m;
	char b[10];
	student a[1000];
	int k=0;
	while(cin>>b){
		strcpy_s(a[k].name,b);
		a[k].sum=0,a[k].time=0;
		for(i=0;i<n;i++){//输入数据
			cin>>a[k].solved[i];//存放分数
			if(a[k].solved[i]>0){
				a[k].time+=a[k].solved[i];
				a[k].sum++;
			}
			//这时候数字肯定输入完了,轮到(了
			if(getchar()=='('){//没想到这样就解决了这个问题
			    cin>>x;
			    a[k].time+=x*m;
			    getchar();//把右括号吸收掉
			}
		}
		k++;
	}	
	for(i=0;i<k;i++){//冒泡排序,要求全部满足,优先性
		for(j=0;j<k-i-1;j++){//最大or最小的排最后
			student t;//中间变量
			if(a[j].sum<a[j+1].sum){//题数多在前
				t=a[j],a[j]=a[j+1],a[j+1]=t;
			}else if(a[j].sum==a[j+1].sum){//如果做题数不一样,则比较时间分
			    if(a[j].time>a[j+1].time){//时间分少在前面
			    	t=a[j],a[j]=a[j+1];a[j+1]=t;
				}else if(a[j].time==a[j+1].time){//如果时间分还一样就看姓氏字典序,小的在前面
				    if(a[j].name>a[j+1].name){
				    	t=a[j],a[j]=a[j+1],a[j+1]=a[j];
					}
			    }
		    }
	    }
    }
    for(i=0;i<k;i++){
    	printf("%-10s %2d %4d\n",a[i].name,a[i].sum,a[i].time);
	}
	system("pause");
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值