Java程序设计大赛模拟题.docx
- 文档编号:17717092
- 上传时间:2023-08-03
- 格式:DOCX
- 页数:14
- 大小:18.58KB
Java程序设计大赛模拟题.docx
《Java程序设计大赛模拟题.docx》由会员分享,可在线阅读,更多相关《Java程序设计大赛模拟题.docx(14页珍藏版)》请在冰点文库上搜索。
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(data 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); ArrayList ArrayList 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(); } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 大赛 模拟