Java程序设计大赛模拟题.docx

上传人:b****5 文档编号:29894361 上传时间:2023-08-03 格式:DOCX 页数:14 大小:18.58KB
下载 相关 举报
Java程序设计大赛模拟题.docx_第1页
第1页 / 共14页
Java程序设计大赛模拟题.docx_第2页
第2页 / 共14页
Java程序设计大赛模拟题.docx_第3页
第3页 / 共14页
Java程序设计大赛模拟题.docx_第4页
第4页 / 共14页
Java程序设计大赛模拟题.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Java程序设计大赛模拟题.docx

《Java程序设计大赛模拟题.docx》由会员分享,可在线阅读,更多相关《Java程序设计大赛模拟题.docx(14页珍藏版)》请在冰豆网上搜索。

Java程序设计大赛模拟题.docx

Java程序设计大赛模拟题

1.写一个方法,用一个for循环打印九九乘法表

 publicvoidnineNineMultiTable()

 {

 for(inti=1,j=1;j<=9;i++){

 System.out.print(i+"*"+j+"="+i*j+"");

 if(i==j)

 {

 i=0;

 j++;

 System.out.println();

 }

 }

 }

2:

菲波纳奇数列

classp2{

publicstaticvoidmain(Stringargs[]){

inta[],n,i;

n=Integer.parseInt(args[0]);//从命令行接收一个数据,即n

a=newint[n];//为数组分配空间

if(n<=0)

System.out.println("n应该是大于等于1的数");

elseif(n==1)

System.out.println

(1);

else{

a[0]=a[1]=1;

for(i=2;i

a[i]=a[i-1]+a[i-2];

System.out.println(a[n-1]);

}

}

}

3.写一个方法,用二分查找法判断任意整数在任意整数数组里面是否存在,若存在就返回它在数组中的索引位置,不存在返回-1

/**

 *二分查找特定整数在整型数组中的位置(递归)

 *@paramdataset

 *@paramdata

 *@parambeginIndex

 *@paramendIndex

 *@returnindex

 */

 publicintbinarySearch(int[]dataset,intdata,intbeginIndex,intendIndex)

 {

 intmidIndex=(beginIndex+endIndex)/2;

 if(datadataset[endIndex]||beginIndex>endIndex)return-1;

 if(data

 {

 returnbinarySearch(dataset,data,beginIndex,midIndex-1);

 }elseif(data>dataset[midIndex])

 {

 returnbinarySearch(dataset,data,midIndex+1,endIndex);

 }else

 {

 returnmidIndex;

 }

 }

4编写程序P2,实现以下功能:

从键盘依次输入2个相同长度的字符串(长度不超过100),然后检查它们是否包含完全相同的字符,是则在屏幕上输出“Y”,否则输出“N”。

例如:

输入为“ABCC”和“CACB”时输出“Y”;输入为“ABCA”和“CCAB”时输出“N”。

classp4{

staticvoidsort(charc[],intn){//字符数组排序

inti,j;

chart;

for(i=0;i

for(j=i+1;j

if(c[i]>c[j]){

t=c[i];

c[i]=c[j];

c[j]=t;

}

}

staticbooleanstrcmp(chard1[],chard2[],intn1,intn2){//字符串比较

if(n1!

=n2)

returnfalse;

inti;

for(i=0;i

if(d1[i]!

=d2[i])

returnfalse;

returntrue;

}

publicstaticvoidmain(Stringargs[]){

Strings1=newString();

Strings2=newString();

s1=args[0];//从命令行接收数据

s2=args[1];

charc1[]=s1.toCharArray();//字符串转换成字符数组

charc2[]=s2.toCharArray();

sort(c1,s1.length());

sort(c2,s2.length());

if(strcmp(c1,c2,s1.length(),s2.length()))

System.out.println("Y");

else

System.out.println("N");

}

}

5编写程序P3,实现以下功能:

依次输入不超过100的正整数n、m,然后在计算机中模拟这样的过程:

把1到m的m个整数依次排列,首尾相接,从1开始,向前数到第n个数将其删除,再向前数到第n个数将其删除,如此反复进行,直到只剩下一个数为止,在屏幕上输出这个数。

例如:

输入的n、m是3、5,则被删除的数依次是4、2、1、3,最后输出5。

classp5{

publicstaticvoidmain(Stringargs[]){

intn,m,i,j,k;

inta[];

n=Integer.parseInt(args[0]);

m=Integer.parseInt(args[1]);

a=newint[n];

for(i=0;i

a[i]=i+1;

for(i=0,k=-1;i

{

for(j=1;j<=m;)//报数m

{

k++;

if(k==n)//下标n-1的后一个人的下标是0

k=0;

if(a[k]!

=0)//如果该人没有出圈,则报数加1

j++;

}

System.out.print(a[k]+"");

a[k]=0;//某人出圈后该单元值置0

}

}

}

6编写程序P7,实现以下功能:

从键盘输入整数n(1≤n≤9),屏幕输出如下的n行n列方阵(以n=5为例),同行相邻数之间用空格分隔。

1361015

2591419

48131822

712172124

1116202325

提示:

先观察行内相邻数的关系,再观察各行第一个数之间的关系。

classp6{

publicstaticvoidmain(Stringargs[]){

inta[][],n,i,j,k=0,num,bz=0,t=0;

n=Integer.parseInt(args[0]);

a=newint[n][n];

for(i=0,j=0,num=1;num<=n*n;num++)//在二维数组中存放n*n个数

{

a[i][j]=num;

if(i==0&&j==0)//放左上角第一个数

i++;

else

{

if(bz==0)//按斜上方摆数字前,先记录下第0列所在的行

{

k=i;

bz=1;

}

i--;//按斜线方向移动

j++;

if(i<0||j>n-1)//如果超出数组边界

{

i=k+1;//回到第0列继续

if(i==n)//最后一行的处理

{

i=n-1;

t++;//记录最后一行的列位置

j=t;

}

else

j=0;

bz=0;

}

}

}

for(i=0;i

{

for(j=0;j

System.out.print(a[i][j]+"\t");

System.out.println();

}

}

}

 

7.编写一个Prame类,类中封装判断一个数是否是素数的方法和一个求a到b之间的素数和的方法.

写一个Test类,在test类中判断100到200之间的素数和大还是2到160之间的素数和大。

问题补充:

编写一个Prame类,类中封装判断一个数是否是素数的方法?

一个求a到b之间的素数和的方法?

写一个Test类,在test类中判断100到200之间的素数和大还是2到160之间的素数和大?

publicclassTest{

publicstaticvoidmain(String[]args){

intn=addPrame(2,160);

intm=addPrame(100,200);

if(m>n){

System.out.println("M>N");

}elseif(m

System.out.println("M

}else{

System.out.println("M=N");

}

}

privatestaticintaddPrame(intm,intn){//从m到n的素数和

if(m>n){//如果m>n交换mn

inttemp;

temp=m;

m=n;

n=temp;

}

intsum=0;

for(inti=m;i

if(Prame(i)){

sum+=i;

}

}

returnsum;

}

privatestaticbooleanPrame(inti){//是否为素数

booleanflag=true;

intj=(int)(i/2);

for(intk=2;k

if(i%k==0){

flag=false;

break;

}

}

returnflag;

}

}

8、设计4个线程,其中两个线程每次对j增加1,另外两个线程对j每次减少1。

写出程序。

以下程序使用内部类实现线程,对j增减的时候没有考虑顺序问题。

publicclassThreadTest1{

privateintj;

publicstaticvoidmain(Stringargs[]){

ThreadTest1tt=newThreadTest1();

Incinc=tt.newInc();

Decdec=tt.newDec();

for(inti=0;i<2;i++){

Threadt=newThread(inc);

t.start();

t=newThread(dec);

t.start();

}

}

privatesynchronizedvoidinc(){

j++;

System.out.println(Thread.currentThread().getName()+"-inc:

"+j);

}

privatesynchronizedvoiddec(){

j--;

System.out.println(Thread.currentThread().getName()+"-dec:

"+j);

}

classIncimplementsRunnable{

publicvoidrun(){

for(inti=0;i<100;i++){

inc();

}

}

}

classDecimplementsRunnable{

publicvoidrun(){

for(inti=0;i<100;i++){

dec();

}

}

}

}

9.用输入/输出写一个程序,让用户输入一些姓名和电话号码。

每一个姓名和号码将加在文件里。

用户通过点“Done”按钮来告诉系统整个列表已输入完毕。

如果用户输入完整个列表。

程序将创建一个输入文件并显示或打印出来。

格式如:

555-1212,Tom123-456-7890,PeggyL234-5678,Marc234-5678,Ron876-4321,Beth&Brian33.1.42.70,Jean-Marc。

importjava.awt.GridLayout;

importjava.awt.event.ActionEvent;

importjava.awt.event.ActionListener;

importjava.io.BufferedWriter;

importjava.io.File;

importjava.io.FileNotFoundException;

importjava.io.FileOutputStream;

importjava.io.IOException;

importjava.io.OutputStreamWriter;

importjava.util.ArrayList;

importjavax.swing.JButton;

importjavax.swing.JFrame;

importjavax.swing.JLabel;

importjavax.swing.JOptionPane;

importjavax.swing.JPanel;

importjavax.swing.JTextField;

 

publicclassPhoneNumberextendsJFrame{

JButtonjbOk=newJButton("OK");

JButtonjbDone=newJButton("Done");

JButtonjbExit=newJButton("Exit");

JTextFieldjtName=newJTextField(15);

JTextFieldjtNumber=newJTextField(15);

ArrayListalName=newArrayList();

ArrayListalNumber=newArrayList();

publicPhoneNumber(){

setTitle("输入输出演示");

setSize(270,150);

setLocation(400,400);

setLayout(newGridLayout(3,1));

JPanelpUp=newJPanel();

pUp.add(newJLabel("姓名:

",JLabel.LEFT));

pUp.add(jtName);

JPanelpCenter=newJPanel();

pCenter.add(newJLabel("号码:

",JLabel.LEFT));

pCenter.add(jtNumber);

JPanelpDown=newJPanel();

pDown.add(jbOk);

pDown.add(jbDone);

pDown.add(jbExit);

add(pUp);

add(pCenter);

add(pDown);

jbOk.addActionListener(newOk());

jbDone.addActionListener(newDone());

jbExit.addActionListener(newExit());

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

setVisible(true);

}

privateclassOkimplementsActionListener{

publicvoidactionPerformed(ActionEventarg0){

Stringname=jtName.getText();

Stringnumber=jtNumber.getText();

if(name.equals("")||number.equals("")){

JOptionPane.showMessageDialog(null,"信息不完整!

");

}else{

alName.add(name);

alNumber.add(number);

jtName.setText("");

jtNumber.setText("");

}

}

}

privateclassDoneimplementsActionListener{

publicvoidactionPerformed(ActionEventarg0){

if(alName!

=null){

Filef=newFile("c:

\\test.txt");

if(!

f.exists()){

try{

f.createNewFile();

writeData();

}catch(IOExceptione1){

//TODOAuto-generatedcatchblock

e1.printStackTrace();

}

}else{

writeData();

}

}

}

}

publicvoidwriteData(){

try{

BufferedWriterbr=newBufferedWriter(newOutputStreamWriter(newFileOutputStream("c:

\\test.txt",true)));

for(inti=0;i

br.newLine();

br.write(alName.get(i)+","+alNumber.get(i));

br.newLine();

br.flush();

System.out.println(alName.get(i)+","+alNumber.get(i));

}

}catch(FileNotFoundExceptione){

e.printStackTrace();

}catch(IOExceptione){

e.printStackTrace();

}

}

privateclassExitimplementsActionListener{

publicvoidactionPerformed(ActionEventarg0){

dispose();

}

}

publicstaticvoidmain(String[]args){

newPhoneNumber();

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1