小明各个时期的考试成绩

描述:给定一组记录n(n<100)小明各个时期的考试成绩,格式为日期+成绩,中间以空格隔开,记录之间分行输入,例如
2009/6/3 80
2009/1/1 56

其中日期输入要求年份1996-2100 月份1-12 日期1-31
现要求以分数为 关键字从大到小对其进行排序,若分数相同则按日期从小到大排序

输入样例
4
2017/1/1 95
2017/6/10 85
2017/3/2 95
2017/1/1 65

输出样例
2017/1/1 95
2017/3/2 95
2017/6/10 85
2017/1/1 65

#include "iostream"
#include "cstring"
#include "algorithm"

#define MAX 100
#define isLeap(x) x%4==0&&x%100!=0||x%400==0  //判断是否是闰年 

using namespace std;

int Day[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
typedef struct{
	char date[100];
	int grade;
}Record;

bool cmp(Record x,Record y){ //定义结构体的比较方法 
	if(x.grade!=y.grade)
		return x.grade > y.grade;
	return x.date < y.date;
}
 
bool isValid(char *str){  //日期是否正确 
	int y,m,d;
	int Feb; 	//二月天数 
	bool valid = true;
	sscanf(str,"%d/%d/%d",&y,&m,&d);  //按照格式读取str的值 
	if(y<1996||y>2100)
		valid=false;
	if(m<1||m>12)
		valid=false;
	if(isLeap(y)&&m==2)  //闰年二月 
		Feb=Day[m]+1;
	else
		Feb=Day[m];
	if(d<1||d>Day[m])
		valid=false;
	return valid;
}
int main(){
	Record res[MAX]; 
	int n;
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>res[i].date>>res[i].grade;
		//根据自定义排序规则排序
	sort(res,res+n,cmp);
	for(int i=0;i<n;i++){
		if(isValid(res[i].date))
			cout<<res[i].date<<" "<<res[i].grade<<endl;
		} 
	return 0;	
}

结构体排序那个没想到,按照格式读取之前也不了解

<think>好的,用户需要一个根据考试成绩输入来发放奖励的Python代码示例。首先,我得确定用户的具体需求。他们可能希望程序能够从键盘读取成绩,然后根据不同的分数段给出相应的奖励。比如,90分以上得一等奖,80到89得二等奖,依此类推。或者可能还有不及格的判断,是否需要给出鼓励的信息? 接下来,我需要考虑如何实现键盘输入。Python中常用的方法是使用input()函数,然后将输入的字符串转换为整数。这里要注意异常处理,因为用户可能输入非数字的内容,比如字母或者符号,这会导致程序崩溃。不过用户可能没有提到错误处理,是否需要包含这个呢?根据问题描述,用户可能只需要一个简单的示例,可能暂时不需要复杂的错误处理,但作为一个可靠的回答,也许应该提一下或者提供一个基本的处理方式。 然后是判断逻辑。使用if-elif-else结构来处理不同的分数区间。每个区间对应不同的奖励等级。比如: - 90分及以上:一等奖 - 80-89:二等奖 - 70-79:三等奖 - 60-69:鼓励奖 - 60以下:再接再厉 需要确保区间划分正确,比如使用>=和<来覆盖所有情况,避免重叠或遗漏。 接下来,代码的结构。首先提示用户输入成绩,然后获取输入,转换为整数,再进行判断,最后输出对应的奖励。例如: score = int(input("请输入考试成绩: ")) 然后根据score的值进行判断。注意,input()返回的是字符串,必须转换为整数才能比较。如果用户输入的不是数字,这里会抛出ValueError异常。但用户可能暂时不需要处理这个,所以代码示例可能先忽略异常处理,或者简单提及。 另外,是否需要循环输入,直到得到有效的成绩?这可能会增加代码复杂度,但用户可能只需要基础示例,所以先不包含循环。 最后,输出相应的奖励信息。每个条件分支使用print语句输出结果。 现在,把这些部分组合起来,确保代码逻辑正确,覆盖所有分数情况。测试几个边界值,比如90、80、70、60,以及负数或者超过100的情况。但根据题目,可能假设输入是合理的分数(0-100),所以代码可能不需要处理超出范围的分数,但用户可能希望有提示。不过问题描述中没有提到,所以可能不处理,或者可以添加一个else分支处理无效分数,比如输入超过100或负数的情况。 总结步骤: 1. 获取用户输入并转换为整数。 2. 使用条件判断确定奖励等级。 3. 输出对应的奖励信息。 现在写出代码,并确保符合用户的要求。可能还需要添加注释说明各部分的功能。例如: # 获取考试成绩输入 score = int(input("请输入考试成绩: ")) # 判断奖励等级 if score >= 90: print("一等奖") elif 80 <= score < 90: print("二等奖") elif 70 <= score < 80: print("三等奖") elif 60 <= score < 70: print("鼓励奖") else: print("再接再厉") 这样应该可以满足用户的基本需求。如果用户需要更详细的错误处理,可以进一步添加try-except块,例如: try: score = int(input("请输入考试成绩: ")) except ValueError: print("输入无效,请输入数字") else: # 判断逻辑 但根据问题描述,用户可能只需要核心功能,所以可能不需要包含这部分,但可以提到可能存在的异常情况。 另外,可能需要考虑分数是否为整数,但问题中的考试成绩通常是整数,所以转换不会有问题。如果是浮点数,可能需要用float()转换,但用户的问题可能假设输入的是整数。 最后,检查代码是否符合Python语法,条件判断是否正确,所有分支都被覆盖。</think>以下是根据考试成绩发放奖励的Python代码实现,包含键盘输入处理和分级判断逻辑: ```python # 获取键盘输入并转换为整数 score = int(input("请输入考试成绩(0-100):")) # 根据成绩区间判断奖励等级 if score >= 90: print("一等奖!获得奖学金2000元") elif 80 <= score < 90: print("二等奖!获得奖学金1000元") elif 70 <= score < 80: print("三等奖!获得奖学金500元") elif 60 <= score < 70: print("鼓励奖!获得纪念品一份") else: print("再接再厉!下学期可获得辅导机会") ``` 代码说明: 1. 使用`input()`函数获取键盘输入,并通过`int()`转换为整数 2. 通过`if-elif-else`条件链判断成绩区间 3. 每个判断条件使用数学不等式表达式(如:$80 \leq score < 90$) 4. 输出对应等级的奖励方案
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值