System.out.println(str[i]);
}}}
(3)
importjava.util.Scanner;
publicclassMain{
publicstaticvoidmain(String[]args){
Scannersc=newScanner(System.in);
intyear;
do{
year=sc.nextInt();
}while(year-1900<0||2015-year<0);
intda=sc.nextInt();
booleanflag=false;
intmon=0;
inttemp=0;
if((year%400==0)||(year%4==0)&&(year%100!
=0)){
flag=true;
}
do{
mon++;
switch(mon){
case1:
case3:
case5:
case7:
case8:
case10:
case12:
temp=31;
break;
case4:
case6:
case9:
case11:
temp=30;
break;
case2:
if(flag)
temp=29;
else
temp=28;
break;}
da=da-temp;
}while(da>=0);
System.out.println(mon);
System.out.println(da+temp);}}
下面是历年的试题解析(仅部分):
(1)
importjava.util.Scanner;
/**
*ISBN号码,程序思想不是很难,主要卡在不知道字符和整型数据怎么归为统一类型
*进行比较
*第一种方法是我的使用了数组操作,50分,估计是运行内存的问题,第二种方法是参考答案
*@author
*
*/
publicclassMain{
publicstaticvoidmain(String[]args){
inti=0,j=0,sum=0;
Stringop=null;
Scannerin=newScanner(System.in);
char[]str=newchar[10];
//System.out.println("请输入ISBN码:
");
op=in.next();
for(i=0;i<13;i++){
if(op.charAt(i)=='-')
continue;
str[j++]=op.charAt(i);
}
//for(i=0;i<9;i++)
//{
//System.out.print(str[i]+"");
//}
for(i=1;i<10;i++){
switch(str[i-1]){
case'0':
sum+=0;
break;
case'1':
sum+=i*1;
break;
case'2':
sum+=i*2;
break;
case'3':
sum+=i*3;
break;
case'4':
sum+=i*4;
break;
case'5':
sum+=i*5;
break;
case'6':
sum+=i*6;
break;
case'7':
sum+=i*7;
break;
case'8':
sum+=i*8;
break;
case'9':
sum+=i*9;
break;
default:
break;
}
}
//System.out.println(sum);
//System.out.println(Integer.toString(sum%11));
//System.out.println(Integer.valueOf(str[9]));
//Character.toChars(sum%11);
//System.out.println(Character.toString(str[9]).equals(Integer.toString(sum%11)));
if(sum%11==10)
{
System.out.println(X);
}elseif(Character.toString(str[9]).equals(Integer.toString(sum%11))){
System.out.println("Right");
}else{
System.out.println(op.substring(0,12)+(sum%11));
}
}
}
//第二种方案
importjava.io.BufferedReader;
importjava.io.InputStreamReader;
/**
*中心思想:
*利用Java中的【字符串】和【字符】函数进行操作
*@author
*
*/
publicclassMain{
publicstaticvoidmain(Stringargs[]){
BufferedReaderbin=newBufferedReader(
newInputStreamReader(System.in));
try{
intsum=0;
charcc='0';
Stringisbn_0=bin.readLine();
Stringisbn=isbn_0.replace("-","");
for(inti=0;i<9;i++){
intii=(int)isbn.charAt(i)-48;
sum+=ii*(i+1);
}
sum=sum%11;
if(sum==10)
cc='X';
else
cc=(char)(sum+48);
if(cc==isbn.charAt(9))
System.out.println("Right");
else{
isbn_0=isbn_0.substring(0,12)+cc;
System.out.println(isbn_0);
}
}catch(Exceptione){
e.printStackTrace();
}
}
}
(2)
importjava.util.Scanner;
/**
*两个while循环解决问题?
?
?
*这个问题似乎不是太难,只是没有提前看
*一个循环控制上行,另一个循环控制下行
*分析一边就行
*@author
*
*/
publicclassMain{
publicstaticvoidmain(String[]args){
int[][]a=newint[500][500];
Scannersc=newScanner(System.in);
intn;
n=sc.nextInt();
inti,j;
for(i=0;ifor(j=0;ja[i][j]=sc.nextInt();
}
}
i=0;
j=0;
booleanp=true,k=true;
while(i!
=n-1||j!
=n-1){
while(p){//上行
if(i!
=0&&j!
=n-1){
System.out.print(a[i][j]+"");
i--;
j++;
}elseif(j==n-1){
System.out.print(a[i][j]+"");
i++;
k=true;
p=false;
}elseif(i==0){
System.out.print(a[i][j]+"");
j++;
k=true;
p=false;
}
}
while(k){//下行
if(i!
=n-1&&j!
=0){
System.out.print(a[i][j]+"");
i++;
j--;
}elseif(i==n-1){
System.out.print(a[i][j]+"");
j++;
p=true;
k=false;
}elseif(j==0){
System.out.print(a[i][j]+"");
i++;
p=true;
k=false;
}
}
}
System.out.println(a[i][j]);
}
}
(3)
importjava.util.Scanner;
publicclassMain{
staticclassS{
intx;
inty;
};
publicstaticvoidmain(String[]args){
Ss=newS();
s.x=0;
Scannersc=newScanner(System.in);
s.y=20000;
int[]a=newint[1000];
intn=sc.nextInt();
inti;
for(i=0;ia[i]=sc.nextInt();
}
for(i=0;iintk=1;
for(intj=+1;jif(a[i]==a[j]&&a[j]<20000){
k++;
a[j]=20000;
}
}
if(s.x<=k&&s.y>a[i]){
s.x=k;
s.y=a[i];
}
}
System.out.println(s.y);
}
}
(4)
//importjava.util.Scanner;
///**
//*由于定义变量问题,出现大的堵塞。
。
。
//*还是利用整型数组操作实现
//*第一种方法是错误的,费时间1近1天;原因是题意理解错误!
!
!
//*第二种方法是借鉴网上的,完全解决问题
//*@author
//*
//*/
//publicclassMain{
//
//publicstaticvoidmain(String[]args){
//inti,j,N,M;
//Scannerin=newScanner(System.in);
//
//N=in.nextInt();
//M=in.nextInt();
//int[]nr=newint[4*N];
//int[]mr=newint[2*M];
//for(i=0;i<4*N;i++)
//nr[i]=in.nextInt();
//for(i=0;i<2*M;i++)
//mr[i]=in.nextInt();
//for(i=0;i<2*M;i=i+2){
//booleanflag=false;//由于这个变量定义的不是位置,导致浪费了近4个小时
//for(j=0;j<4*N;j=j+2){
//if((mr[i]==nr[j])&&(mr[i+1]==nr[j+1])){
//flag=true;
//System.out.println(j/4+1);
//break;
//}
//}
//if(!
flag){
//System.out.println("IGNORED");
//}
//}
//}
//}
/**
*第二种方法C++利用结构体
*而java用类体代替,中间也有数组的操作
*/
importjava.util.Scanner;
publicclassMain{
staticclasswindow{
intx1;
inty1;
intx2;
inty2;
intnum;
};
staticclasspoint{
intx1;
inty1;
};
publicstaticvoidmain(String[]args){
window[]win=newwindow[10];
for(inti=0;iwin[i]=newwindow();
}
point[]poin=newpoint[10];
for(inti=0;ipoin[i]=newpoint();
}
intN,M,i,j,n=-1;
Scannersc=newScanner(System.in);
N=sc.nextInt();
M=sc.nextInt();
for(i=0;iwin[i].x1=sc.nextInt();
win[i].y1=sc.nextInt();
win[i].x2=sc.nextInt();
win[i].y2=sc.nextInt();
}
for(j=0;jpoin[j].x1=sc.nextInt();
poin[j].y1=sc.nextInt();
}
for(i=0;iwin[i].num=i+1;
}
for(j=0;jfor(i=N-1;i>=0;i--){
if(poin[j].x1>=win[i].x1&&poin[j].x1<=win[i].x2
&&poin[j].y1>=win[i].y1&&poin[j].y1<=win[i].y2){
n=win[i].num;
windowtemp=win[i];
for(intz=i;zwin[z]=win[z+1];
}
win[N-1]=temp;
break;
}
}
if(i!
=-1){
System.out.println(n);
}else{
System.out.println("IGNORED");
}
}
sc.close();
}
}
(5)
packageMain;
//方法一使用二维数组存储实现,得到10分
importjava.util.Scanner;
publicclassMain{
publicstaticvoidmain(String[]args){
inti,j,m;
Scannerin=newScanner(System.in);
m=in.nextInt();
int[][]st=newint[2][m];
for(j=0;jst[0][j]=in.nextInt();
}
for(j=0;jfor(i=j+1;iif(st[0][j]==st[0][i]){
st[0][i]=0;
++st[1][j];
}
}
for(j=0;jif(st[0][j]!
=0)
System.out.println(st[0][j]+""+(st[1][j]+1));
}
in.close();
}
}
//