好的,在开始之前,还是先唠叨一下叙叙旧好吧
我还是希望各位耐心看完,并有所收获(别忘来个赞啊,多多支持蟹蟹)
P5744 【深基7.习9】培训
题目描述
某培训机构的学员有如下信息:
- 姓名(字符串)
- 年龄(周岁,整数)
- 去年 NOIP 成绩(整数,且保证是 5 的倍数)
经过为期一年的培训,所有同学的成绩都有所提高,提升了 20%(当然 NOIP 满分是 600 分,不能超过这个得分)。
输入学员信息,请设计一个结构体储存这些学生信息,并设计一个函数模拟培训过程,其参数是这样的结构体类型,返回同样的结构体类型,并输出学员信息。
输入格式
第一行输入一个正整数 n,表示学员个数。
第二行开始往下 n 行。每行首先是一个字符串表示学员姓名,再是一个整数表示学员年龄,再是一个整数为去年 NOIP 成绩。
输出格式
输出 n 行,每行首先输出一个字符串表示学生姓名,再往后两个整数,表示经过一年的培训后学员的年龄和他们今年的 NOIP 成绩。以空格隔开。
输入输出样例
输入 #1
3 kkksc03 24 0 chen_zhe 14 400 nzhtl1477 18 590
输出 #1
kkksc03 25 0 chen_zhe 15 480 nzhtl1477 19 600
说句题外话(kkk好可怜)
好的,这道题,既简单又复杂,怎么说呢,他的这个样例,不是说全部输入完了以后才出结果
而是在循环体里面循环一遍输出一次结果,这属实是把我坑的不能不能的,这题很水,也证实了一点:
结构体是个好东西!
写完以后感觉轻松好多,真事儿,呵呵
咱们在代码里见
通关代码:(纯本人手打,非洛谷题解)
#include<iostream>
#include<cstdio>
using namespace std;//开空间
struct xueyuan{//创建结构体
string name;//字符串名
int age,score;//年龄与分数
}a[100000];//结构体数组
int main(){
int n;
cin>>n;//输入组数
for(int i=1;i<=n;i++){//在循环中输入数据
cin>>a[i].name>>a[i].age>>a[i].score;
a[i].age+=1,a[i].score=a[i].score*1.2;//年龄+1 分数*1.2 名字不变
if (a[i].score>600) a[i].score=600;//判断分数是否超过600,如果超了就等于600
cout<<a[i].name<<" "<<a[i].age<<" "<<a[i].score<<endl;//输出
}
return 0;
}
这个代码里的注释很详细了,另外,结构体数组可以不用开的很大,只要符合题目的数据要求就可以
如果有朋友觉得我写的这个代码很乱不容易懂,那么,您可以看介个
code:(洛谷题解)
#include<cstdio>
int n,a,b;
char s[101];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
scanf("%s",s);//输入
scanf("%d%d",&a,&b);//输入
printf("%s",s);//名字不变
printf(" %d ",a+1);//输出年龄+1
b=b*1.2;//成绩自乘1.2
if(b>600) printf("600\n");//判断是否大于600并输出
else printf("%d\n",b);//小于600直接输出
}
return 0;
}
这是洛谷上的一篇不用结构体的题解,看起来好理解一点,代码注释本人添加,已经很详细,不过多讲解,有疑问欢迎评论区留言!
接下来我们看第二题题解
P5716 【深基3.例9】月份天数
题目描述
输入年份和月份,输出这一年的这一月有多少天。需要考虑闰年。
输入格式
输入两个正整数,分别表示年份 y 和月数 m,以空格隔开。
输出格式
输出一行一个正整数,表示这个月有多少天。
输入输出样例
输入 #1
1926 8
输出 #1
31
输入 #2
2000 2
输出 #2
29
这道题,额很简单,纯纯的码力题,唯一的一个难点在于平闰年的判断,在此,本人给大家科普一下:
1、普通闰年:公历年份是4的倍数的,一般是闰年。(如2004年就是闰年);
2、世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是世纪闰年,2000年是世纪闰年)。
1582年以前的惯例:四年一闰;如果公元A年的A(正数)能被4整除,那么它就是闰年;如果公元前B年的B(正数)除以4余1,那么它也是闰年。
现在知道题目数据为什么要求1582年以后的闰年了
那么题也就很简单了,本人属实很懒,懒得去动脑子,同时也是想看一看洛谷评测机用if是不是AC不了,但还是AC了,于是下面贴出本人代码
通关代码:(纯本人手打,非洛谷题解)
#include<iostream>
using namespace std;
int main(){
int a,b,c;
cin>>a>>b;//输入年与月
if(a%100!=0&&a%4==0||a%100==0&&a%400==0){//判断如果是闰年
if(b==1){//1月
cout<<31<<endl;
}else if(b==2){//2月
cout<<29<<endl;
}else if(b==3){//...
cout<<31<<endl;
}else if(b==4){
cout<<30<<endl;
}else if(b==5){
cout<<31<<endl;
}else if(b==6){
cout<<30<<endl;
}else if(b==7){
cout<<31<<endl;
}else if(b==8){
cout<<31<<endl;
}else if(b==9){
cout<<30<<endl;
}else if(b==10){
cout<<31<<endl;
}else if(b==11){
cout<<30<<endl;
}else if(b==12){
cout<<31<<endl;
}
}else{//如果不是闰年
if(b==1){//一月
cout<<31<<endl;
}else if(b==2){//二月
cout<<28<<endl;
}else if(b==3){//...
cout<<31<<endl;
}else if(b==4){
cout<<30<<endl;
}else if(b==5){
cout<<31<<endl;
}else if(b==6){
cout<<30<<endl;
}else if(b==7){
cout<<31<<endl;
}else if(b==8){
cout<<31<<endl;
}else if(b==9){
cout<<30<<endl;
}else if(b==10){
cout<<31<<endl;
}else if(b==11){
cout<<30<<endl;
}else if(b==12){
cout<<31<<endl;
}
}
return 0;
}
属实没有什么难度,那么再来一篇洛谷滴
Code:(洛谷题解)
#include<bits/stdc++.h> //文件头
using namespace std;
int year,month; //定义年和月
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义月份对应天数数组
int main()
{
cin>>year>>month; //输入年和月
if((year%4==0&&year%100!=0)||n%400==0)a[2]=29; //判断闰年
cout<<a[month]; //直接输出
return 0; //养成好习惯
}
注释为编译者所加也很详细希望大家有所了解
最后(啊啃啃)
来个赞吧QWQ~~~