编程练习题 没答案版

来源:互联网 发布:游戏锁定fps软件 编辑:程序博客网 时间:2024/06/10 11:46

假设s是一个型如:”cat223dog456nice25ttt98″的串,其特征是数字与字符交错。我们希望知道这个串中有多少个数字段。假设该串必以字符开始。我们给出了如下代码,请完善之:

boolean old_tag = false;  // 表示开始不是数字

boolean tag = false;

int n = 0; // 数字组计数

for(int i=0; i<s.length(); i++){

char c = s.charAt(i);

tag = c>=’0′ && c<=’9′;  // 是否为数字

if(____________) n++;

old_tag = tag;

}

 


如果int[] x = … 已经指向一个整型数组,我们想把数组中的元素翻转(比如:1,2,3,4,5 变成:5,4,3,2,1),写了如下代码,请完善之:

for(int i=0; i<x.length/2; i++){

int t = x[i];

x[i] = ______________;

______________ = t;

}

 


冒泡排序仅仅在相邻两个元素间进行比较和交换。下面的程序实现了对某个整型数组中的元素进行冒泡排序,它在保证逻辑正确的前提下,避免了冗余的比较。请填写缺少的代码。

int[] targetArr  = {3,22,11,5,400,99,20,22,5};

for(int i=0; i<targetArr.length-1; i++)

{

for(int j=0; j<______________; j++)

{

if(targetArr[j]>targetArr[j+1])

{

int tmp = targetArr[j];

targetArr[j] = targetArr[j+1];

targetArr[j+1] = tmp;

}

}

}

 


一百个铜钱买了一百只鸡,其中公鸡一只5钱、母鸡一只3钱,小鸡一钱3只

问一百只鸡中公鸡、母鸡、小鸡各多少?请补充缺少的代码。

for(int cock=0; cock<=100; cock++)

{

for(int hen=0; hen<=100; hen++)

{

int chicken = 100 – cock – hen;

if(chicken % 3 != 0) ________________;

if(_________________________)

System.out.println(“cock=” + cock + “,hen=” + hen + “,chicken=” + chicken);

}

}

 

 

以下程序把一个整数翻转(8765变为:5678),请补充缺少的代码。

int n = 8765;

int m = 0;

while(n>0)

{

m = ________________________;

n = n / 10;

}

System.out.println(m);


 

下列代码取出一个整数的千位数字。请完善以下代码:

int n = 9175023;

int m = ___________________________;

System.out.println(m);

 


下列代码运行结果为:

12345

23456

89

23456789

即把一个串从数字不连续的位置断开。试完善之。

String s = “12345234568923456789”;

String t = “1”;

for(int i=1; i<s.length(); i++)

{

if(s.charAt(i)==s.charAt(i-1)+1)

{

t += s.charAt(i);

}

else

{

System.out.println(t);

_____________________________;

}

}

System.out.println(t);


为了保证网络信息的健康,下列filter方法为聊天室实现了所谓“脏话过滤”功能。其中x存储原文,v中装入了若干禁止使用的词汇。比如“猪头”、“牛X”什么的。Filter方法把脏话替换为“***”,并返回过滤后的串。请完善之。

public static String filter(String x, Vector v)

{

for(int i=0; i<v.size(); i++)

x = __________________________________________;

return x;

}


本程序将网站“www.baidu.com”首页的内容复制保存在文件test.html中。写了如下代码,请完善之:

import java.net.*;

import java.io.*;

class DaSai{

public static void main(String[] args) throws Exception {

URL url=__________________________________;

BufferedReader in =_________________________________;

String inString;

File outfile=new File(“test.html”);

PrintWriter out=new PrintWriter(new FileWriter(outfile));

while ((inString=in.readLine())!=null){

out.println(inString);

}

in.close();

out.close();

}

}

 


该程序完整代码的运行结果如下,请在指定位置添加代码,实现程序功能。

程序运行结果:

(1)当输入abc时,运行结果如下:

abc is too short!

发生字符串太短异常:StringTooShortException

程序执行结束

(2)当输入abcdef,运行结果如下:

abcdef

程序执行结束

       (3)当输入abcdefghijklmn时,运行结果如下:

abcdefghijklmn is too long!

发生字符串太长异常:StringTooLongException

程序执行结束

程序代码:

import java.io.*;

public class Test{

static void myFunc(String s)

throws StringTooShortException, StringTooLongException

{

if(s.length()>=5 && s.length()<=10)

System.out.println(s);    // 没有异常发生,正常显示字符串信息

else if(s.length()<5)

__________________________________;

else

___________________________________;

}

public static void main(String args[])throws IOException{

InputStreamReader in = new InputStreamReader(System.in);

BufferedReader br = new BufferedReader(in);

String str=br.readLine();

try{  myFunc(str);  }

catch(StringTooShortException e)    // 捕捉字符串太短异常

{ System.out.println(“发生字符串太短异常:”+e); }

catch(StringTooLongException e) // 捕捉字符串太长异常

{ System.out.println(“发生字符串太长异常:”+e);  }

finally     // 程序最后执行位置

{  System.out.println(“程序执行结束”); }

}

}

/////////////////////////////////////////////////////////////////////////

class StringTooShortException extends Exception{    // 自定义字符串太短异常类

public StringTooShortException(String s){

System.out.println(s+” is too short!”);

}

}

class StringTooLongException extends Exception{ // 自定义字符串太短异常类

public StringTooLongException(String s){

System.out.println(s+” is too long!”);

}

}

////////////////////////////////////////////////////////////////////////

 


以下程序运行的结果如下,请根据程序的运行结果在下划线处填写相应代码。

程序的运行结果:

(2.5, 3.5, 4.5)

(2.5, 3.5, 4.5)

给出的程序代码:

class Point{

private double x,y,z;

public Point(double a, double b, double c){

x = a;

y = b;

z = c;

}

public Object clone(){

Object obj =                       ___;

return obj;

}

public String toString(){

String str =                       ____;

return obj;

}

}

public class Test {

public static void main(String[] arg){

Point p = new Point(2.5, 3.5, 4.5);

Point q = (Point)p.clone();

System.out.println(p);

System.out.println(q);

}

}

 


以下程序的运行结果始终如下,请在下划线处添加相应代码。

运行结果:

DDDDDDDD

CCCCCCCC

BBBBBBBB

AAAAAAAA

程序代码:

import java.util.*;

class  A{

String sa ;

A(String str){

sa = str;

}

public String toString(){

return sa;

}

}

public class B {

public static void main(String args[]) {

Set<A> set = new HashSet<A>();

set.add(new A(“AAAAAAAA”));

set.add(new A(“BBBBBBBB”));

set.add(new A(“CCCCCCCC”));

set.add(new A(“DDDDDDDD”));

                        ______;

while(it.hasNext()){

System.out.println(it.next());

}

}

}

 

编写程序将2行3列的数组行列置换复制给3行2列的数组(即数组的转置)。已经写了如下代码,请完善之:

class  y{

public static void main(String[] args) throws Exception {

int a[][]={{1,2,3},{4,5,6}};

int b[][]=new int[3][2];

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

for(int j=0;j<3;j++){

_____________________;

}

}

}

}


显示“DaSai”目录下以”Ex”开头的文件和目录,写了如下代码,请完善之:

import java.io.*;

class JavaFilter implements FilenameFilter{

String jf;

JavaFilter(String s){

jf=s;

}

//实现FilenameFilter接口的accept()方法

public boolean accept(File dir,String name){

return name.startsWith(jf);//name的前缀是否是参数jf

}

}

public class  Ex{

public static void main(String[] args) throws Exception {

File f=new File(“/DaSai”);

//过滤以“Ex”开头的文件和目录,存放到字符串数组s中。

String s[]=____________________________;

for(int i=0;i<s.length;i++){

File ff=new File(s[i]);// 根据s[i]创建File类对象

if(ff.isDirectory())

System.out.println(s[i]+” is a directory”);

else

System.out.println(s[i]+” is a file”);

}

}

}


以下程序打印出0~9的数字,请补充缺少的代码。

public class MyTest

{

public static void f(int begin, int end)

{

__________________;

System.out.println(begin);

f(begin+1, end);

}

public static void main(String[] args)

{

f(0,9);

}

}


在A B C D E F 六人中随机抽取3人中奖,要求中奖人不能重复。请完善以下代码:

public class MyTest

{

public static void main(String[] args)

{

Vector a = new Vector();

for(char i=’A'; i<=’F'; i++)  a.add(“” + i);

for(int k=0; k<3; k++)

{

int d = ____________________________;

System.out.println(a.remove(d));

}

}

}

 

 

不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。下面的代码演示了如何把键盘输入的3进制数字转换为十进制。试完善之。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String s = br.readLine();

int n = 0;

for(int i=0; i<s.length(); i++)

{

char c = s.charAt(i);

if(c<‘0′ || c > ‘2’) throw new RuntimeException(“Format error”);

n = ______________________;

}

System.out.println(n);

 


许多人都曾经玩过“拍七”游戏。规则是:大家依次从1开始顺序数数,数到含有7或7的倍数的要拍手或其它规定的方式表示越过(比如:7,14,17等都不能数出),下一人继续数下面的数字。违反规则者受罚。下面的程序模拟这个过程,拍7的情况输出“*”,请完善之。

for(int i=1; i<100; i++)

{

if(i % 7 == 0)

printf(“*n”);

else if(___________________)

printf(“*n”);

else

printf(“%dn”, i);

}

 


 

java中,所有的字符都用unicode编码格式表示,占用2个字节。但当需要把一个字符流化到外设(比如写出到磁盘,通过网络传输等)时,就会涉及到编码方式。如果流化与反流化的编码方式不同,就会产生俗称的“乱码”现象。下列代码从磁盘读入一个用GBK编码的文本文件a.txt,写出为一个用utf-8编码的文件:b.txt,即实现了编码方式转换。请补充缺失的代码。

BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(“a.txt”),”GBK”));

BufferedWriter bw = _________________________________________;

for(;;)

{

String  s = br.readLine();

if(s==null) break;

bw.write(s);

bw.newLine();

bw.flush();

}

 

不同进制的数值间的转换是软件开发中很可能会遇到的常规问题。下面的代码演示了如何把键盘输入的3进制数字转换为十进制。试完善之。

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String s = br.readLine();

int n = 0;

for(int i=0; i<s.length(); i++)

{

char c = s.charAt(i);

if(c<‘0′ || c > ‘2’) throw new RuntimeException(“Format error”);

n = ______________________;

}

System.out.println(n);

 


有n个孩子站成一圈,从第一个孩子开始顺时针方向报数,报到3的人出列,下一个人继续从1报数,直到最后剩下一个孩子为止。问剩下第几个孩子。下面的程序以10个孩子为例,模拟了这个过程,请完善之(提示:报数的过程被与之逻辑等价的更容易操作的过程所代替)。

Vector a = new Vector();

for(int i=1; i<=10; i++)

{

a.add(“第” + i + “个孩子”);

}

for(;;)

{

if(a.size()==1) break;

for(int k=0; k<2; k++)

________________;

a.remove(0);

}

System.out.println(a);

 


(a+b)的n次幂的展开式中各项的系数很有规律,对于n=2,3,4时分别是:1 2 1, 1 3 3 1,1 4 6 4 1。这些系数构成了著名的杨辉三角形:

                 1

               1   1

              1  2  1

            1  3   3   1

          1  4   6   4   1

        1  5  10  10   5   1

 

下列的程序给出了计算第m层的第n个系数的计算方法,试完善之(m,n都从0算起)。

public static int f(int m, int n)

{

if(m==0) return 1;

if(n==0 || n==m) return 1;

return __________________________;

}

 


如果要把两个整型变量a、b的值交换,一般要采用一个中间变量做过渡,但也可以在不借助任何其它变量的情况下完成。试填写缺失的代码。

a = a ^ b;

b = _________;

a = _________;

 

答案:

a ^ b

a ^ b

0 0
原创粉丝点击