您的位置:首页 > 编程语言

【ACM】P2000、P2001、P2002、P2003、P2004、P2005代码演示

2017-04-27 22:40 435 查看

【p2000问题描述】(输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符):

/**
* ASCII码排序
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 167747    Accepted Submission(s): 67616

Problem Description
输入三个字符后,按各字符的ASCII码从小到大的顺序输出这三个字符。

Input
输入数据有多组,每组占一行,有三个字符组成,之间无空格。

Output
对于每组输入数据,输出一行,字符中间用一个空格分开。

Sample Input

qwe
asd
zxc

Sample Output

e q w
a d s
c x z

Author
lcy

*@author <a"283505495@qq.com">lxd</a>
*@version 1.0 2017-4-27 下午7:53:32
*@fileName P2000.java
*/


代码演示:

package ac;

import java.util.Scanner;

public class P2000 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
String str=sc.nextLine();
/**调用String方法toCharArray() */
char[] chs=str.toCharArray();
sort(chs);
print(chs);
}
}
/**按格式打印出*/
private static void print(char[] chs) {
for(int i=0;i<chs.length;i++){
if(i!=chs.length-1){
System.out.print(chs[i]+" ");
}else{
System.out.print(chs[i]);
}
}
System.out.println();
}
/**用冒泡进行排序*/
private static void sort(char[] chs) {
for(int i=0;i<chs.length;i++){
for(int j=0;j<chs.length-i-1;j++){
if(chs[j]>chs[j+1]){
swap(chs,j,j+1);
}
}
}
}
/**交换两个字符*/
private static void swap(char[] chs, int i, int j) {
char temp;
temp=chs[i];
chs[i]=chs[j];
chs[j]=temp;
}
}


运行结果:



【p2001问题描述】(输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离):

/**
* 计算两点间的距离
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 209283    Accepted Submission(s): 73005

Problem Description
输入两点坐标(X1,Y1),(X2,Y2),计算并输出两点间的距离。

Input
输入数据有多组,每组占一行,由4个实数组成,分别表示x1,y1,x2,y2,数据之间用空格隔开。

Output
对于每组输入数据,输出一行,结果保留两位小数。

Sample Input

0 0 0 1
0 1 1 0

Sample Output

1.00
1.41
*/


代码演示:

package ac;

import java.util.Scanner;

public class P2001 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
/**由题意知:有四个实数,因此用double接受scanner*/
double x1=sc.nextDouble();
double y1=sc.nextDouble();
double x2=sc.nextDouble();
double y2=sc.nextDouble();
/**调用java.util.Math类中的sqrt方法求根号*/
float s= (float) Math.sqrt( (y2-y1)*(y2-y1)+(x2-x1)*(x2-x1) );
/**按照format格式输出--“%.2f”*/
System.out.printf("%.2f", s);
System.out.println();
}
}
}


运行结果:



【p2002问题描述】(根据输入的半径值,计算球的体积):

/**
* 计算球体积
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 157476    Accepted Submission(s): 63138

Problem Description
根据输入的半径值,计算球的体积。

Input
输入数据有多组,每组占一行,每行包括一个实数,表示球的半径。

Output
输出对应的球的体积,对于每组输入数据,输出一行,计算结果保留三位小数。

Sample Input

1
1.5

Sample Output

4.189
14.137

Hint

#define PI 3.1415927

*/


代码演示:

package ac;

import java.util.Scanner;

public class P2002 {
public static void main(String[] args) {
double PI =3.1415927;
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
double r=sc.nextDouble();
//对于double值的计算,使用正确的格式运算--(4.0/3)求出的结果才是double类型
double v=(4.0/3)*PI*r*r*r;
System.out.printf("%.3f",v);
System.out.println();
}
}
}


运行结果:

【p2003问题描述】(求实数的绝对值):

/**
* 求绝对值
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 131345    Accepted Submission(s): 64315

Problem Description
求实数的绝对值。

Input
输入数据有多组,每组占一行,每行包含一个实数。

Output
对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。

Sample Input

123
-234.00

Sample Output

123.00
234.00

Author
*/


代码演示:

package ac;

import java.util.Scanner;

public class P2003 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
double d=sc.nextDouble();
System.out.printf("%.2f",Math.abs(d));
System.out.println();
}
}
}


运行结果:



【p2004问题描述】(输入一个百分制的成绩t,将其转换成对应的等级):

/**
* 成绩转换
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 143388    Accepted Submission(s): 62656

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!

*/


代码演示:

package ac;

import java.util.Scanner;

/**
* 此题具体用到了if() else if( ){ }
*@author <a"283505495@qq.com">lxd</a>
*@version 1.0 2017-4-27 下午8:55:27
*@fileName P2004.java
*/
public class P2004 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
int t=sc.nextInt();
String score=getScore(t);
System.out.println(score);
}
}

private static String getScore(int t) {
if(t>=0 && t<=59){
return "E";
}else if(t<=69){
return "D";
}else if(t<=79){
return "C";
}else if(t<=89){
return "B";
}else if(t<=100){
return "A";
}
return "Score is error!";
}
}


运行结果:



【p2005问题描述】(给定一个日期,输出这个日期是该年的第几天):

/**
* 第几天?
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 147758    Accepted Submission(s): 52994

Problem Description
给定一个日期,输出这个日期是该年的第几天。

Input
输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,
可以向你确保所有的输入数据是合法的。

Output
对于每组输入数据,输出一行,表示该日期是该年的第几天。

Sample Input

1985/1/20
2006/3/12

Sample Output

20
71

Author
lcy

*/


代码演示:

package ac;

import java.util.Scanner;

public class P2005 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
/**收集字符串日期,解析出year\month\day*/
String strData=sc.nextLine();
String[] strs=strData.split("/");
int year=Integer.parseInt(strs[0]);
int month=Integer.parseInt(strs[1]);
int day=Integer.parseInt(strs[2]);
int sum=getAllDays(year, month, day);

System.out.println(sum);
}
}
//判断闰年
private static boolean isLeapYear(int year){
if(year%4==0 && year%100!=0 || year%400==0){
return true;
}
return false;
}
//获得每个月份天数
private static int getMonthofDays(int month,int year){
switch (month) {
/**case格式为"  case 与表达式匹配的值: "*/
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
return 31;
case 4:case 6:case 9: case 11:
return 30;
case 2:
/**如果是闰年则2月份为29天,否则28天*/
return isLeapYear(year)? 29:28;
}
/**如果switch中的表达式没有匹配上,则返回值为0,一般的,
* 此种情况都是默认为0,null,false*/
return 0;
}
//获得所有天数
public static int getAllDays(int year,int month,int day){
int sum=day;
for(int m=1;m<month;m++){
sum=sum+getMonthofDays(m, year);
}
return sum;
}
}


运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: