2004 成绩转换
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 265663 Accepted Submission(s): 113720
Problem Description
输入一个百分制的成绩t,将其转换成对应的等级,具体转换规则如下:
90~100为A;
80~89为B;
70~79为C;
60~69为D;
0~59为E;
Input
输入数据有多组,每组占一行,由一个整数组成。
Output
对于每组输入数据,输出一行。如果输入数据不在0~100范围内,请输出一行:“Score is error!”。
Sample Input
56
67
100
123
Sample Output
E
D
A
Score is error!
c++实现:
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<math.h>
using namespace std;
#define PI 3.1415927
int x;
int main()
{
while(cin>>x)
{
if(x<0||x>100)
cout<<"Score is error!"<<endl;
else if(x>=0&&x<=59)
cout<<"E"<<endl;
else if(x>=60&&x<=69)
cout<<"D"<<endl;
else if(x>=70&&x<=79)
cout<<"C"<<endl;
else if(x>=80&&x<=89)
cout<<"B"<<endl;
else
cout<<"A"<<endl;
}
}
Java实现
import java.util.Scanner;
public class Main {
static double PI=3.1415927;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
while(in.hasNextInt())
{
int x=in.nextInt();
if(x<0||x>100)
System.out.println("Score is error!");
else if(x>=0&&x<=59)
System.out.println("E");
else if(x>=60&&x<=69)
System.out.println("D");
else if(x>=70&&x<=79)
System.out.println("C");
else if(x>=80&&x<=89)
System.out.println("B");
else
System.out.println("A");
}
in.close();
}
}
2005 第几天?
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 283949 Accepted Submission(s): 97539
Problem Description
给定一个日期,输出这个日期是该年的第几天。
Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。
Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。
Sample Input
1985/1/20
2006/3/12
Sample Output
20
71
思路:
先用一个数组储存平年时的每个月的天数,用另一个数组做前i个月的天数的和,输入年y,月m,日d之后,直接求出这个月前几个月的总天数+当前d的数值的和,再进行判断是闰年还是平年,当然还要判断当前月份是否大于2,因为2月及二月以前不需要考虑平闰年的影响,如果是闰年且当前月份大于二月,将先前算的和+1就好了,不满足就直接输出(这个思路略有些麻烦,大家将就着看)
c++实现
#include<iostream>
#include<algorithm>
#include<stdio.h>
#include<math.h>
using namespace std;
#define PI 3.1415927
int y,m,d,ans;
int days[15]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int s[15];
int main()
{
for(int i=1;i<=12;i++)
{
s[i]=s[i-1]+days[i];
}
while(scanf("%d/%d/%d",&y,&m,&d)!=EOF)
{
ans=s[m-1]+d;
if(m>2)
{
if(y%400==0||y%4==0&&y%100!=0)
ans+=1;
}
cout<<ans<<endl;
}
}
java实现
import java.util.Scanner;
public class Main {
static double PI=3.1415927;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int a[]= {0,31,28,31,30,31,30,31,31,30,31,30,31};
int s[]=new int[15];
int ans;
for(int i=1;i<=12;i++)
{
s[i]=s[i-1]+a[i];
}
while(in.hasNext())
{
String x=in.next();
String[] z=x.split("/");//将字符串以'/'分离,放进字符串数组里
int y=Integer.parseInt(z[0]);//返回用十进制参数表示的整数值
int m=Integer.parseInt(z[1]);
int d=Integer.parseInt(z[2]);
ans=s[m-1]+d;
if(m>2)
{
if(y%400==0||y%4==0&&y%100!=0)
ans+=1;
}
System.out.println(ans);
}
in.close();
}
}