字典序问题

问题描述(笔试题,记不太清了只有基本描述):

假设有n个问题, 问题的名字(name),给出参与的人数(X)和答对的人数(Y),难度系数分为三个等级,定义:

0%<=Y/X<=30% 难度为5

30%<=Y/X<60% 难度为4

6%<=Y/X<=100% 难度为3

输入:

n(接下来有n个数据)

name X Y

输出:

对问题进行字典排序 难度系数


样例输入:

3

math 100 90

dl 100 50

English 50 1

样例输出:

dl 4

English 5

math 3

C++代码如下:

[cpp]  view plain  copy
  1. #include<algorithm>  
  2. #include<iostream>  
  3. #include<cstdlib>  
  4. #include<vector>  
  5. #include<cstring>  
  6. using namespace std;  
  7. typedef struct data{  
  8.     char clas[101];  
  9.     int sub;  
  10.     int pas;  
  11.     bool operator<(const data  &b)const {  
  12.         int c=strcmp(clas,b.clas);  
  13.         if(c<0)  
  14.             return true;  
  15.         return false;  
  16.     }   //定义数据结构  
  17. }data,*pdata;  
  18. data all_data[101];  
  19. int xishu(int sub,int pas){  
  20.     double xi=(double)(pas)/(double)(sub);  
  21.     if(0<xi<=0.3)  
  22.         return 5;  
  23.     else if(0.3<=xi<=0.6)  
  24.         return 4;  
  25.     else if(06<xi<=1)  
  26.         return 5;  
  27.       
  28. }     //难度系数计算  
  29.   
  30. int main(){  
  31.     int n;  
  32.     scanf("%d",&n);  
  33.     for(int i=0;i<n;i++){  
  34.         scanf("%s %d %d",all_data[i].clas,  
  35.         &all_data[i].sub,&all_data[i].pas);   
  36.     }  
  37.     sort(all_data,all_data+n); //使用sort函数对问题名字进行排序  
  38.     for(int i=0;i<n;i++){  
  39.         int ans=xishu(all_data[i].sub,all_data[i].pas);  
  40.         printf("%s %d\n",all_data[i].clas,ans);  
  41.     }  
  42.     return 0;  
  43. }  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值