当前位置:文档之家› 2011年1月广东自考JAVA语言程序设计(一)课后习题答案和源代码(第七章)

2011年1月广东自考JAVA语言程序设计(一)课后习题答案和源代码(第七章)

2011年1月广东自考JAVA语言程序设计(一)课后习题答案和源代码(第七章)
2011年1月广东自考JAVA语言程序设计(一)课后习题答案和源代码(第七章)

第七章 (1)

7.1 编写一个应用程序,绘制一个五角星。 (1)

7.2 用Graphics2D绘制一条抛物线,设抛物线方程的系数从图形界面输入。 (3)

7.3 利用Graphics2D的平移,缩放,旋转功能。绘制一个六角星。 (7)

7.4 编写画图程序。 (10)

7.5 输入二次曲线的系数,画出二次曲线 (17)

7.6. 写音乐播放器,只能播放wav,mid格式的。 (24)

第七章

7.1 编写一个应用程序,绘制一个五角星。

程序运行结果:

源文件:Work7_1.java

import java.awt.*;

import javax.swing.*;

/**

*7.1画一个五角星

*@author黎明你好

*/

public class Work7_1

{

public static void main(String args[])

{

JFrame win = new JFrame("第七章,第一题");

win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

win.setBounds(50, 50, 210, 250);

win.add(new FiveStarCanvas(100), BorderLayout.CENTER);

win.setVisible(true);

win.validate();

}

}

画板类源文件: FiveStarCanvas.java

/**

*画板类,在上面画出五角星

*@author黎明你好

*/

class FiveStarCanvas extends Canvas

{

private static final long serialVersionUID = 1L;

/**五角星外接圆的半径*/

private int radius;

/**

*构造方法

*@param r-初始化外接圆半径

*/

public FiveStarCanvas(int r)

{

this.radius = r;

}

public void paint(Graphics g)

{

int ax = radius; int ay = 0;

int bx = (int) (radius * (1 - Math.cos((18 * Math.PI) / 180)));

int cx = (int) (radius * (1 + Math.cos((18 * Math.PI) / 180)));

int dx = (int) (radius * (1 - Math.cos((54 * Math.PI) / 180)));

int ex = (int) (radius * (1 + Math.cos((54 * Math.PI) / 180)));

int by = (int) (radius * (1 - Math.sin((18 * Math.PI) / 180)));

int cy = (int) (radius * (1 - Math.sin((18 * Math.PI) / 180)));

int dy = (int) (radius * (1 + Math.sin((54 * Math.PI) / 180)));

int ey = (int) (radius * (1 + Math.sin((54 * Math.PI) / 180)));

g.setColor(Color.RED);

g.drawLine(dx, dy, ax, ay);

g.drawLine(ax, ay, ex, ey);

g.drawLine(ex, ey, bx, by);

g.drawLine(bx, by, cx, cy);

g.drawLine(cx, cy, dx, dy);

g.setColor(Color.BLUE);

g.drawOval(0, 0, 2 * radius, 2 * radius);

g.drawLine(radius, radius, ax, ay);

g.drawLine(radius, radius, bx, by);

g.drawLine(radius, radius, cx, cy);

g.drawLine(radius, radius, dx, dy);

g.drawLine(radius, radius, ex, ey);

}

}

7.2 用Graphics2D绘制一条抛物线,设抛物线方程的系数从图形界面输入。

程序运行结果:

frame源文件:ParabolaFrame.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

*7.2用Graphics2D画抛物线,抛物线方程的系数从图形界面输入.

*@author黎明你好

*/

public class ParabolaFrame extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;

private ParabolaCanvas canvas;// 画出抛物线的花瓣

private JTextField inputA_text, inputB_text, inputC_text; // 三个文本框,接收方程系数

private JButton confirm_button;// 确定按钮

private JLabel display_label;

private JPanel panel;// 布局面板

private double a, b, c;// 抛物线三个系数

public ParabolaFrame()

{

super("第七章,第二题");

a = 1;

b = 0;

c = 0;

panel = new JPanel();

canvas = new ParabolaCanvas(a, b, c);

inputA_text = new JTextField("" + a, 3);

inputB_text = new JTextField("" + b, 3);

inputC_text = new JTextField("" + c, 3);

confirm_button = new JButton("确定");

display_label = new JLabel();

panel.add(new JLabel("a = "));

panel.add(inputA_text);

panel.add(new JLabel("b = "));

panel.add(inputB_text);

panel.add(new JLabel("c = "));

panel.add(inputC_text);

panel.add(confirm_button);

panel.add(display_label);

confirm_button.addActionListener(this);

inputA_text.addActionListener(this);

inputB_text.addActionListener(this);

inputC_text.addActionListener(this);

setLabel();

this.add(panel, BorderLayout.NORTH);

this.add(canvas, BorderLayout.CENTER);

this.setBounds(50, 50, 800, 600);

this.setVisible(true);

this.validate();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent e)

{

try

{

a = Double.parseDouble(inputA_text.getText());

b = Double.parseDouble(inputB_text.getText());

c = Double.parseDouble(inputC_text.getText());

}

catch( NumberFormatException Ee )

{

a = 0;

b = 0;

c = 0;

}

canvas.set(a, b, c);

canvas.repaint();

setLabel();

}

public void setLabel()

{

String str = "方程:y = ";

str += a == 0 ? "" : (a == 1 ? " x^2 " : a + "x^2 ");

str += b == 0 ? "" : (a == 0 ? (b == 1 ? " x " : b + "x ") : (b == 1 ? "+ x " : "+" + b

+ "x "));

str += c == 0 ? "" : (a == 0 && b == 0 ? c : "+" + c);

display_label.setText(str);

}

public static void main(String args[])

{

new ParabolaFrame();

}

}

画抛物线的画板类:ParabolaCanvas.java

/**

*画板类,在上面画抛物线

*@author黎明你好

*/

class ParabolaCanvas extends Canvas

{

private static final long serialVersionUID = 1L;

double a, b, c;

/**构造方法,抛物线初始状态*/

public ParabolaCanvas(double a, double b, double c)

{

this.a = a;

this.b = b;

this.c = c;

setBackground(new Color(100, 240, 240));

}

/**

*设置抛物线系数

*@param a-二次项系数

*@param b-一次项系数

*@param c-常数项

*/

public void set(double a, double b, double c)

{

this.a = a;

this.b = b;

this.c = c;

}

public void paint(Graphics g)

{

Graphics2D g2D = (Graphics2D) g;

// 画坐标系

g2D.drawLine(0, 300, 600, 300);// 横线

g2D.drawLine(300, 0, 300, 600);// 竖线中心坐标300,300

g2D.drawLine(300, 0, 294, 10);

g2D.drawLine(300, 0, 306, 10);// y轴箭头

g2D.drawLine(600, 300, 590, 294);

g2D.drawLine(600, 300, 590, 306);// x轴箭头

g2D.drawLine(200, 300, 200, 308);

g2D.drawString("- 5", 197, 320);

g2D.drawLine(100, 300, 100, 308);

g2D.drawString("- 10", 97, 320);

g2D.drawLine(400, 300, 400, 308);

g2D.drawString("5", 397, 320);

g2D.drawLine(500, 300, 500, 308);

g2D.drawString("10", 497, 320);

g2D.drawLine(300, 100, 307, 100);

g2D.drawString("10", 310, 103);

g2D.drawLine(300, 200, 307, 200);

g2D.drawString("5", 310, 203);

g2D.drawLine(300, 400, 307, 400);

g2D.drawString("- 5", 310, 403);

g2D.drawLine(300, 500, 307, 500);

g2D.drawString("- 10", 310, 503);

g2D.drawString("0,0", 305, 318);

g2D.drawString("y轴", 310, 15);

g2D.drawString("x轴", 580, 290);

for (int i = 0; i < 600; i += 20)

{

g2D.drawLine(i, 300, i, 303);

g2D.drawLine(300, i, 303, i);

}

// 下面程序为画抛物线

double x0, y0, x1, y1, x2, y2, scale;

x0 = 300;

y0 = 0;

scale = 20.0;

g2D.setColor(Color.RED);

for (x1 = -15; x1 < 15; x1 += 0.001D)

{

y1 = a * x1 * x1 + b * x1 + c;

x2 = x0 + x1 * scale;

y2 = y0 + y1 * scale;

g2D.fillOval((int) x2, 300 - (int) y2, 2, 2);

}

}

}

7.3 利用Graphics2D的平移,缩放,旋转功能。绘制一个六角星。

程序运行结果:

源文件:Work7_3.java

import java.awt.*;

import java.awt.geom.*;

import javax.swing.*;

/**

*7.3利用Graphics2D的平移,缩放,旋转功能。绘制一个六角星。
*@author黎明你好

*/

public class Work7_3 extends JFrame

{

private static final long serialVersionUID = 1L;

public Work7_3()

{

super("第七章,第三题");

this.add(new SixStarCanvas(80), BorderLayout.CENTER);

this.setBounds(50, 50, 400, 400);

this.setVisible(true);

this.validate();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public static void main(String args[])

{

new Work7_3();

}

}

画六角形的画板类:SixStarCanvas.java

/**

*画板类,在上面画出六角星

*通过先画一个三角形,然后旋转6次,得到六角形

*@author黎明你好

*/

class SixStarCanvas extends Canvas

{

private static final long serialVersionUID = 1L;

/**六角星外接圆的半径*/

private int radius;

/**一个三角形三个顶点的x点坐标集*/

private int xPoints[];

/**一个三角形三个顶点的y点坐标集*/

private int yPoints[];

/**

*构造方法

*@param r-初始化外接圆半径

*/

public SixStarCanvas(int r)

{

this.radius = r;

xPoints = new int[] { r, 2 * r, (int) (3 * r / 2) };

yPoints = new int[] { r, r, (int) (r - Math.sqrt(3) * r / 2) };

}

public void paint(Graphics g)

{

Graphics2D g2D = (Graphics2D) g;

BasicStroke bs = new BasicStroke(1, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_MITER);

g2D.setStroke(bs);

AffineTransform trans = new AffineTransform();

trans.translate(10, 10);// 移动

trans.scale(2, 2);// 放大

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

{

trans.rotate(60.0 * Math.PI / 180, radius, radius);// 旋转

g2D.setTransform(trans);

g2D.drawPolygon(xPoints, yPoints, 3);

}

}

}

7.4 编写画图程序。

程序运行结果:

控制画板的窗口类源文件:PaintFrame.java

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

*7.4编写画图程序。

*控制画板的窗口类

*@author黎明你好

*/

public class PaintFrame extends JFrame implements ItemListener, ActionListener

{

private static final long serialVersionUID = 1L;

/**画板*/

private PaintCanvas canvas;

/**画笔端点装饰,无装饰、圆形装饰、方形装饰*/

private JToggleButton cap_butt, cap_round, cap_square;

/**橡皮*/

private JToggleButton eraser;

/**画笔大小*/

private JComboBox width_box;

/**选择颜色的按钮*/

private JButton selectColor;

/**单选按钮分组*/

private ButtonGroup group;

private JPanel panel;

private String item[];

private int strokeWidth = 1, strokeCap = 0, strokeJoin = BasicStroke.JOIN_BEVEL;

public PaintFrame()

{

super("画图小程序");

canvas = new PaintCanvas();

selectColor = new JButton(" ");

cap_butt = new JToggleButton("标准");

cap_round = new JToggleButton("圆形");

cap_square = new JToggleButton("方形");

eraser = new JToggleButton("橡皮");

panel = new JPanel();

group = new ButtonGroup();

item = new String[20];

for (int i = 0; i < 20; i++)

{

item[i] = "" + (i + 1);

}

width_box = new JComboBox(item);

width_box.setEditable(true);// 组合框可以输入

cap_butt.setSelected(true);// 笔形,标准为开始默认

canvas.setPenColor(Color.BLACK);

selectColor.setBackground(Color.BLACK);// 画笔颜色,开始为黑色

// 添加监控

width_box.addItemListener(this);

width_box.addActionListener(this);

selectColor.addActionListener(this);

cap_butt.addItemListener(this);

cap_round.addItemListener(this);

cap_square.addItemListener(this);

eraser.addItemListener(this);

// 画笔形式单选按钮

group.add(cap_butt);

group.add(cap_round);

group.add(cap_square);

group.add(eraser);

// 添加按钮

panel.setLayout(new FlowLayout());

panel.setBorder(BorderFactory.createTitledBorder("设置区"));

panel.add(new JLabel("笔形:"));

panel.add(cap_butt);

panel.add(cap_round);

panel.add(cap_square);

panel.add(eraser);

panel.add(width_box);

panel.add(new JLabel(" 颜色:"));

panel.add(selectColor);

this.add(panel, BorderLayout.SOUTH);

this.add(canvas, BorderLayout.CENTER);

this.setBounds(100, 50, 850, 550);

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent e)

{

if (e.getSource() == selectColor)

{

Color c = JColorChooser.showDialog(this, "选择颜色", Color.WHITE);// 用来选择字颜色

selectColor.setBackground(c);

canvas.setPenColor(c);

}

else if (e.getSource() == width_box)

{

try

{

strokeWidth =

Integer.parseInt(width_box.getSelectedItem().toString());

}

catch( NumberFormatException e2 )

{

strokeWidth = 1;

}

}

canvas.setStroke(strokeWidth, strokeCap, strokeJoin);// 当在组合框输入画笔宽度时候,设置画笔

}

public void itemStateChanged(ItemEvent e)

{

if (e.getSource() == cap_butt)

{

canvas.setPenColor(Color.black);

strokeCap = BasicStroke.CAP_BUTT;

}

else if (e.getSource() == cap_round)

{

canvas.setPenColor(Color.black);

strokeCap = BasicStroke.CAP_ROUND;

}

else if (e.getSource() == cap_square)

{

canvas.setPenColor(Color.black);

strokeCap = BasicStroke.CAP_SQUARE;

}

else if (e.getSource() == eraser)

{

canvas.setPenColor(Color.white);

canvas.setStroke(strokeWidth, BasicStroke.CAP_SQUARE, BasicStroke.JOIN_BEVEL);

}

else if (e.getSource() == width_box)// 当在组合框里面选择画笔宽度时候,设置画笔宽度

{

try

{

strokeWidth =

Integer.parseInt(width_box.getSelectedItem().toString());

}

catch( NumberFormatException e2 )

{

strokeWidth = 1;

}

}

canvas.setStroke(strokeWidth, strokeCap, strokeJoin);

}

public static void main(String args[])

{

new PaintFrame();

}

}

用来画图的画板类:PaintCanvas

import java.awt.*;

import java.awt.event.*;

import java.awt.image.BufferedImage;

/**

*画板类,在上面作图。

*@author黎明你好

*/

public class PaintCanvas extends Canvas implements MouseMotionListener, MouseListener

{

private static final long serialVersionUID = 1L;

private int x = -1, y = -1;

private int w = 800, h = 600;// 画布大小

private Color penColor;// 画笔颜色

private BufferedImage image;

private Graphics2D g2d;

private BasicStroke bs;// 画笔

public PaintCanvas()

{

bs = new BasicStroke(1, BasicStroke.CAP_BUTT,

BasicStroke.JOIN_BEVEL);

image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);

g2d = image.createGraphics();

penColor = Color.BLACK;

g2d.fillRect(0, 0, w, h);//初始画个白色的矩形

g2d.setColor(penColor);

this.addMouseMotionListener(this);

this.addMouseListener(this);

}

/**

*设置画笔颜色

*@param c-设置成的颜色

*/

public void setPenColor(Color c)

{

penColor = c;

}

/**

*设置画笔

*@param width-BasicStroke的宽度

*@param cap-BasicStroke端点的装饰

*@param join-应用在路径线段交汇处的装饰

*/

public void setStroke(int width, int cap, int join)

{

try

{

bs = new BasicStroke(width, cap, join);

}

catch( IllegalArgumentException ee )

{

bs = null;

}

}

/**鼠标按键在组件上按下时调用。*/

public void mousePressed(MouseEvent e)

{

x = (int) e.getX();

y = (int) e.getY();

this.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR ));// 设置鼠标形状十字光标类型

g2d.drawLine(x, y, x, y);

this.repaint();

}

/**鼠标按钮在组件上释放时调用。*/

public void mouseReleased(MouseEvent e)

{

this.setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)) ;// 设置鼠标形状默认光标类型

}

/**鼠标按键在组件上按下并拖动时调用*/

public void mouseDragged(MouseEvent e)

{

int x2 = (int) e.getX();

int y2 = (int) e.getY();

if (x != -1 && y != -1)

{

if (penColor != null)

g2d.setColor(penColor);

if (bs != null)

g2d.setStroke(bs);

g2d.drawLine(x, y, x2, y2);

this.repaint();

}

x = x2;

y = y2;

}

public void mouseClicked(MouseEvent e)

{

}

public void mouseEntered(MouseEvent e)

{

}

public void mouseExited(MouseEvent e)

{

}

public void mouseMoved(MouseEvent e)

{

}

public void paint(Graphics g)

{

g.drawImage(image, 0, 0, this); // 将内存中的图像iamge绘制在画布上

}

public void update(Graphics g)

{

paint(g);

}

}

7.5 输入二次曲线的系数,画出二次曲线

程序运行结果:

主窗口源文件:ConicFrame

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

/**

*输入二次曲线的系数以及区间,画出二次曲线

*@author黎明你好

*/

public class ConicFrame extends JFrame implements ActionListener

{

private static final long serialVersionUID = 1L;

private String helpString = "三种基本曲线方程:\n1:椭圆(e<0); 2:双曲线(c<0,e<0); 3:抛物线(a=0或c=0);";

private BorderLayout borderLayout;// JFrame的布局

private JTextField inputA_text, inputB_text, inputC_text,

inputD_text, inputE_text; // 三个文本框,接收方程系数

private JButton confirm_button, clean_button;// 确定按钮

private JPanel control_panel, north_panel;// 放置输入文本框,确定按钮,显示方程label

private DrawConicCanvas canvas;

private double a = 1, b = 1, c = 1, d = 1, e = 1;//二次曲线线三个系数/**

*构造方法

*/

public ConicFrame()

{

super("第七章,第五题,二次曲线");

borderLayout = new BorderLayout(5, 5);

inputA_text = new JTextField("", 3);

inputB_text = new JTextField("", 3);

inputC_text = new JTextField("", 3);

inputD_text = new JTextField("", 3);

inputE_text = new JTextField("", 3);

confirm_button = new JButton("确定");

clean_button = new JButton("清空");

control_panel = new JPanel();

north_panel = new JPanel();

canvas = new DrawConicCanvas();

control_panel.setBackground(Color.PINK);

confirm_button.addActionListener(this);

clean_button.addActionListener(this);

north_panel.setLayout(new GridLayout(2, 1));

control_panel.add(new JLabel("二次曲线方程:a"));

control_panel.add(inputA_text);

control_panel.add(new JLabel("X^2 + b"));

control_panel.add(inputB_text);

control_panel.add(new JLabel("X + c"));

control_panel.add(inputC_text);

control_panel.add(new JLabel("Y^2 + d"));

control_panel.add(inputD_text);

control_panel.add(new JLabel("Y + e"));

control_panel.add(inputE_text);

control_panel.add(new JLabel(" = 0"));

control_panel.add(confirm_button);

control_panel.add(clean_button);

north_panel.add(new JLabel(helpString, JLabel.CENTER));

north_panel.add(control_panel);

this.setLayout(borderLayout);

this.add(north_panel, BorderLayout.NORTH);

this.add(canvas, BorderLayout.CENTER);

this.add(new JLabel(" "), BorderLayout.SOUTH);

this.add(new JLabel(" "), BorderLayout.WEST);

this.add(new JLabel(" "), BorderLayout.EAST);

this.setBounds(50, 50, 800, 600);

this.setVisible(true);

this.validate();

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent args)

{

if (args.getSource() == confirm_button)

{

try

{

a = Double.parseDouble(inputA_text.getText());

b = Double.parseDouble(inputB_text.getText());

c = Double.parseDouble(inputC_text.getText());

d = Double.parseDouble(inputD_text.getText());

e = Double.parseDouble(inputE_text.getText());

}

catch( NumberFormatException Ee )

{

JOptionPane.showMessageDialog(this, "输入非数字字符\n请修改", "错误警告",

JOptionPane.ERROR_MESSAGE);

}

canvas.set(a, b, c, d, e);

canvas.repaint();

}

else if(args.getSource() == clean_button)

{

inputA_text.setText("");

inputB_text.setText("");

inputC_text.setText("");

inputD_text.setText("");

inputE_text.setText("");

}

}

public static void main(String[] args)

{

new ConicFrame();

}

}

面二次曲线的画板类: DrawConicCanvas.java

import java.awt.Canvas;

import java.awt.Color;

import java.awt.Graphics;

import java.awt.Graphics2D;

/**

*画二次曲线的画布类

*@author黎明你好

*/

public class DrawConicCanvas extends Canvas

{

private static final long serialVersionUID = 1L;

/**方程的5个系数,ax^2+bx+cy^2+dy+e=0*/

private double a, b, c, d, e;

/**二次曲线的区间*/

private double min = -15, max = 15;// 如果需要控制区间,可以对这两值进行设置

/**构造方法,二次曲线初始状态*/

public DrawConicCanvas()

{

setBackground(new Color(100, 240, 240));

}

/**

*设置方程系数

*/

public void set(double a, double b, double c, double d, double e) {

this.a = a;

this.b = b;

this.c = c;

this.d = d;

this.e = e;

}

public void paint(Graphics g)

{

Graphics2D g2D = (Graphics2D) g;

// 画坐标系

g2D.drawLine(0, 300, 600, 300);// 横线

g2D.drawLine(300, 0, 300, 600);// 竖线中心坐标300,300

g2D.drawLine(300, 0, 294, 10);

g2D.drawLine(300, 0, 306, 10);// y轴箭头

g2D.drawLine(600, 300, 590, 294);

g2D.drawLine(600, 300, 590, 306);// x轴箭头

g2D.drawLine(200, 300, 200, 308);

g2D.drawString("- 5", 197, 320);

g2D.drawLine(100, 300, 100, 308);

g2D.drawString("- 10", 97, 320);

g2D.drawLine(400, 300, 400, 308);

g2D.drawString("5", 397, 320);

g2D.drawLine(500, 300, 500, 308);

g2D.drawString("10", 497, 320);

g2D.drawLine(300, 100, 307, 100);

g2D.drawString("10", 310, 103);

g2D.drawLine(300, 200, 307, 200);

g2D.drawString("5", 310, 203);

g2D.drawLine(300, 400, 307, 400);

g2D.drawString("- 5", 310, 403);

g2D.drawLine(300, 500, 307, 500);

g2D.drawString("- 10", 310, 503);

g2D.drawString("0,0", 305, 318);

g2D.drawString("y轴", 310, 15);

g2D.drawString("x轴", 580, 290);

for (int i = 0; i < 600; i += 20)

{

g2D.drawLine(i, 300, i, 303);

g2D.drawLine(300, i, 303, i);

}

// 下面程序为画二次曲线

double x0, y0, x1, y1 = 0, x2, y2, scale;

max = 15;

min = -15;

x0 = 300;

y0 = 0;

scale = 20.0;

g2D.setColor(Color.RED);

if (a == 0 && c != 0)// 抛物线,水平

{

if (b > 0)// 确定抛物线x轴的最大值,最小值

{

max = d * d / (4 * b * c) - e / b;

}

if (b < 0)

{

min = d * d / (4 * b * c) - e / b;

}

for (x1 = min; x1 <= max; x1 += 0.001D)

{

y1 = Math.sqrt(d * d / (4 * c * c) - b * x1 / c - e / c) - d / (2 * c);

x2 = x0 + x1 * scale;

y2 = y0 + y1 * scale;

g2D.fillOval((int) x2, 300 - (int) y2, 2, 2);

}

for (x1 = min; x1 <= max; x1 += 0.001D)

{

y1 = -Math.sqrt(d * d / (4 * c * c) - b * x1 / c - e / c) - d / (2 * c);

x2 = x0 + x1 * scale;

y2 = y0 + y1 * scale;

g2D.fillOval((int) x2, 300 - (int) y2, 2, 2);

}

}

else if (a != 0 && c == 0)// 抛物线,垂直

{

for (x1 = -15; x1 <= 15; x1 += 0.001D)

{

y1 = (a * x1 * x1 + b * x1 + e) / d;

x2 = x0 + x1 * scale;

y2 = y0 + y1 * scale;

g2D.fillOval((int) x2, 300 - (int) y2, 2, 2);

}

}

else if (a == 0 && c == 0)// 直线方程

{

if (d != 0)

{

for (x1 = -15; x1 <= 15; x1 += 0.001D)

{

y1 = -(e + b * x1) / d;

x2 = x0 + x1 * scale;

y2 = y0 + y1 * scale;

g2D.fillOval((int) x2, 300 - (int) y2, 2, 2);

}

}

if (b != 0)

{

for (y1 = -15; y1 <= 15; y1 += 0.001D)

{

x1 = -(e + d * y1) / d;

x2 = x0 + x1 * scale;

y2 = y0 + y1 * scale;

g2D.fillOval((int) x2, 300 - (int) y2, 2, 2);

}

}

}

else if (e < 0) // 椭圆,双曲线方程

{

System.out.println("椭圆,双曲线");

double r = Math.sqrt(b * b / (4 * a * a) + d * d / (4 * a * c) - e / a);//横轴的半径

double unmin = 0,unmax = 0;//双曲线的时候点x取不到值得区间径

System.out.println("横轴半径" + r);

if (c > 0)// 椭圆的时候,计算半径,并确定x区间

{

max = r - b/(2*a);

min = -r - b/(2*a) ;

}

else

{

unmin = -r - b/(2*a);

unmax = r - b/(2*a);

}

for (x1 = min; x1 <= max; x1 += 0.001D)

{

if (c < 0 && ( x1 > unmin && x1 < unmax ))// 是双曲线的时候,不画点x取不到值得区间

continue;

y1 = Math.sqrt(b*b / (4 * a * c) + d*d / (4 * c * c) - e / c - a * (x1 + b / (2 * a)) * (x1 + b / (2 * a)) / c) - d / (c * 2);

x2 = x0 + x1 * scale;

y2 = y0 + y1 * scale;

g2D.fillOval((int) x2, 300 - (int) y2, 2, 2);

}

for (x1 = min; x1 <= max; x1 += 0.001D)

{

if (c < 0 && ( x1 > unmin && x1 < unmax ))// 是双曲线的时候,不画点x取不到值得区间

continue;

y1 = -Math.sqrt(b*b / (4 * a * c) + d*d / (4 * c * c) - e / c - a * (x1 + b / (2 * a))* (x1 + b / (2 * a)) / c) - d / (c * 2);

x2 = x0 + x1 * scale;

y2 = y0 + y1 * scale;

g2D.fillOval((int) x2, 300 - (int) y2, 2, 2);

}

}

}

}

7.6. 写音乐播放器,只能播放wav,mid格式的。

程序运行结果:

音乐播放器源文件:AudioClipFrame.java

import java.awt.*;

import https://www.doczj.com/doc/8118848734.html,.*;

import javax.swing.*;

import java.awt.event.*;

import java.io.*;

import java.applet.*;

import javax.swing.filechooser.FileFilter;

/**

*编写音乐播放器,只能播放wav,mid格式的。

*@author黎明你好

*/

public class AudioClipFrame extends JFrame implements ItemListener, ActionListener

{

private static final long serialVersionUID = 1L;

/**组合框,用于存储音频列表*/

private JComboBox comboBox;

/**添加音频时,选择文件的文件对话框*/

private JFileChooser filedialog;

/**按钮:播放、循环、停止、添加、删除*/

private JButton play_button, loop_button, stop_button, open_button, del_button;

/**显示当前播放音频的label*/

private JLabel message_label;

/**布局用的panel*/

private JPanel list_panel, control_panel;

/**存储添加的音频文件的绝对路径*/

private File fileArray[] = new File[100];

/**播放用的类*/

private AudioClip clip = null;

/**用来存储当前播放文件的文件名*/

private String fileName;

public AudioClipFrame()

{

super("音乐播放器 - 第七章,第六题");

filedialog = new JFileChooser("F:\\钢琴曲\\midi");

filedialog.addChoosableFileFilter(new MyFileFilter("wav"));

filedialog.addChoosableFileFilter(new MyFileFilter("mid"));

list_panel = new JPanel();

control_panel = new JPanel();

comboBox = new JComboBox();

open_button = new JButton("添加");

del_button = new JButton("删除");

play_button = new JButton("播放");

loop_button = new JButton("循环");

stop_button = new JButton("停止");

message_label = new JLabel("请添加音频文件");

message_label.setHorizontalAlignment(JLabel.CENTER);

fileArray[0] = null;

comboBox.addItem("");

comboBox.setEditable(false);

comboBox.addItemListener(this);

open_button.addActionListener(this);

del_button.addActionListener(this);

play_button.addActionListener(this);

stop_button.addActionListener(this);

loop_button.addActionListener(this);

list_panel.setLayout(new BorderLayout());

list_panel.add(comboBox, BorderLayout.CENTER);

list_panel.setBorder(BorderFactory.createTitledBorder("音频列表"));

control_panel.add(open_button);

control_panel.add(del_button);

control_panel.add(play_button);

control_panel.add(stop_button);

control_panel.add(loop_button);

control_panel.setBorder(BorderFactory.createTitledBorder("控制按钮"));

this.setLayout(new BorderLayout(20, 10));

this.add(message_label, BorderLayout.NORTH);

this.add(list_panel, BorderLayout.CENTER);

this.add(control_panel, BorderLayout.SOUTH);

this.setBounds(300, 200, 450, 190);

this.setVisible(true);

this.addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{

System.exit(0);

}

});

this.validate();

}

/**

*设置播放的音频文件

*@param file-音频文件

*/

public void setClipName(File file)

{

if (file != null)

{

try

{

fileName = file.getName();

URL url = file.toURI().toURL();

clip = Applet.newAudioClip(url);

}

catch( MalformedURLException eee )

{

System.out.println("URL错误");

}

}

}

public void itemStateChanged(ItemEvent e)

{

if (e.getSource() == comboBox)

{

int i = comboBox.getSelectedIndex();// 用选中的item序号的对应的文件,设置音频文件

if (i >= 0 && fileArray[i] != null)

{

setClipName(fileArray[i]);

}

}

}

public void actionPerformed(ActionEvent e)

{

if (e.getSource() == open_button)

{

int result;

filedialog.setDialogTitle("打开文件");

java课后题答案

第1章Java概述 1.编译java application源程序文件将产生相应的字节码文件,这些字节码文件别 的扩展名为、java 2.执行一个java程序fristapp的方法就是运行java fristapp 3.main()方法的返回类型就是void 4.在java代码中,public static void main方法的参数描述正确的就是string args 【】,string【】args 5.内存的回收程序负责释放无用内存√ 6.java体系主要分为java ME,Java SE,JavaEE三大块 第2章Java基础 1.Java语言中,下列标识符错误的就是40name 2.java变量中,以下不属于引用类型的数据类型就是字符型 3.double d=5、3E12 × 4.C 5.A 6.for循环的一般形式为;for(初值;终值;增量),以下对for循环的叙述,正确 的就是初值与增量都就是赋值语句,终值就是条件判断语句 7.当输入下面选项中3值时,将会输出default 8.下面哪种方法能够支持javadoc命令/**…*/ 9.下面声明一个string类型的数组正确的就是string str[] 10.下面定义一个整型数组,不合法的就是int[][]array=new int[][4]; 11.给定代码;。。。。。下面叙述正确的就是输出的结果为:0 12.java语言规定,标示符只能由字母,数字美元符$与下划线租成,并且第一个 字符不能就是数字;java就是区分大小写的。 13.表达式1/2*3的计算结果就是0;设x=2,则表达式(x++)/3的值就是0 14.数组的长度可以用其属性lengt h获得;创建一个数组对象可以使用new关键 字创建 第3章面向对象基础 1.在java中引用对象变量与对象间有什么关系?引用变量就是指向对象的一个指针 2.对象就是面向对象技术的核心所在,在面向对象程序设计中,对象就是累的抽象× 3.构造方法何时被调用?创建对象时 4.A,B,D 5.在java语言中在包p1中包含包p2,类A直接隶属于p1,类B直接隶属于包p2、在类c中 要使用类a的方法与类b的方法b,需要选择import p1、*; import p1、p2,*;

java入门到精通课后练习和答案(1-6章)

1.9练一练 一.填空题 1.运行编译后的class文件,需要输入命令java 2.JVM是指java虚拟器 3.Java程序源文件扩展名为java 二,简答题 1.简述java语言的特点 (1)简洁有效(2)可移植性(3)面向对象(4)解释型(5)适合分布式计算 2.java虚拟器的作用是什么? 答:保证编译后的java代码能够在安装java虚拟器的系统上运行。 2.5练一练 一.填空题 1.java程序是从main()处开始运行的。 2.在java中,多行注释的开始和结束标记分别为/*和*\。 3.声明1个名称“count”的整形变量的语句为int count; 4.Java程序中的标识符可由字母、数字、下划线和美元符号组成,但不能以数字开头,不能保留java保留的关键字。 二、简答题 1.简述设置变量的3种方法。 (1)在声明前设置 (2)在声明后设置 (3)在任何位置声明设置 2.简述提高程序可读性的两种方法。 *添加注释*使用缩进方法编写 3.4练一练 1.Eclipse是IBM花巨资开发的IDE集成开发环境(Intergrated Development Environment)。 2.【源代码】菜单中所包含的命令都是和代码编写相关的,主要用于源代码工作。 3.选择【文件】>【新建】>【项目...】命令,打开【新建项目】对话框。 二.简答题 1.Eclipse提供了哪两种程序调试方式? *java应用程序*调试 2.取消Eclipse启动时出现的设置工作空间的对话框的具体方法是什么? Eclipse启动时在【设置工作空间】的对话框中选中【将此值用作缺省值并且不再询问】复选框。 4.3练一练 1.变量是利用声明的方式,将内存中的某个块保留下来以供程序使用 2.常量就是固定不变的量,一旦被定义,它的值就不能再被改变。 3.当常量用于一个类的成员变量时,必须给常量赋值,否则会出现编译错误。 二.简答题 1.简述变量的命名规则 Java程序中的标识符可由字母、数字、下划线和美元符号组成,但不能以数字开头,不能保留java保留的关键字。 2.按作用范围划分,变量是如何划分的?

java课后答案

java课后答案 第一章 ,.发明java的原因是什么,发明java的主要贡献者是谁, 答:开发java语言的动力源于对独立平台的需要,即用这种语言编写的程序不会因为芯片的变化而发生无法运行或出现运行错误的情况。当时,c语言已无法满足人们的这一愿望,因为c语言总是针对特定的芯片将源程序编译成机器码,该机器码的运行就与特定的芯片指令有关,在其他类型的芯片上可能无法运行或者运行出错。主要贡献者是James Gosling。 2.“java编译器将源文件编译生成的字节码是机器码”,这句话正确吗, 答:不正确,字节码是很接近机器码谢谢了的二进制文件,不能被机器直接识别。 3. java应用程序的主类必须含有怎么样的方法, 4. "java应用程序必须有一个类是public类".这句话正确吗, 答:一个java应用程序必须有一个类含有public static void main(String args[] )方法,称为该应用程序的主类。 5. "java applet程序的主类必须是public类",这句话正确吗, 不正确 "java applet源文件的主类必须是public类",这句话正确吗, 正确 6. 叙述java源文件的命名法则。 答:(1)如果源文件中有多个类,那么只能有一个类是public类。(2)如果有一个类是public类,那么源文件的名字必须和这个类的名字完全相同,扩展名 为.java(3)如果源文件没有public类,那么源文件的名字只要和某个类的名字相同,并且扩展名为.java就可以了。(4)java语言区分大小写。 7. 源文件生成的的字节码运行时加载到内存中吗, 8. 怎样编写加载运行java applet的简单网页,

Java基础入门课后习题及答案

《Java基础入门》课后习题 第1章Java开发入门 一、填空题 1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。 2、Java程序的运行环境简称之为JRE_____。 3、编译Java程序需要使用_javac_____命令。 4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。 5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用 来保存保存Java虚拟机要运行的“.class”文件路径。 二、选择题 1、以下选项中,哪些属于JDK工具?(多选)ABCD A、Java编译器 B、Java运行工具 C、Java文档生成工具 D、Java打包工具 2、Java属于以下哪种语言?C A、机器语言 B、汇编语言 C、高级语言 D、以上都不对 3、下面哪种类型的文件可以在Java虚拟机中运行?D A、.java B、.jre C、.exe D、.class 4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?B A、Java文档制作工具 B、Java解释器 C、Java编译器 D、Java启动器 5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java 命令,需要将环境变量path设置为以下哪个选项?B A.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre;

全国高等教育自学考试高级语言程序设计

全国高等教育自学考试高级语言程序设计 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

2001年10月全国高等教育自学考试高级语言程序设计(一) 试卷 第一部分选择题 一、单项选择题 (本大题共20小题,每小题1分,共20分) 在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。 1. C语言程序编译时,程序中的注释部分【】 A. 参加编译,并会出现在目标程序中 B. 参加编译,但不会出现在目标程序中 C. 不参加编译,但会出现在目标程序中 D. 不参加编译,也不会出现在目标程序中 2. 下列表达式的值为0的是【】 A. 3﹪5 B. 3/ C. 3/5 D. 3<5 3. 正确的C语言用户自定义标识符是【】 A. print B. float C. when?

D. random﹪2 4. 设int a = 3;则表达式a<1&& - - a>1的运算结果和a的值分别是【】 A. 0和2 B. 0和3 C. 1和2 D. 1和3 5. 下列叙述中,正确的是【】 A. 引用带参的宏时,实际参数的类型应与宏定义时的形式参数类型相一致 B. 宏名必须用大写字母表示 C. 宏替换不占用运行时间,只占编译时间 D. 在程序的一行上可以出现多个有效的宏定义 6. 下列保留字中用于构成循环结构的是【】 A. if B. while C. switch D. default 7. 与语句if(a>b)if(c>d)x = 1;else x = 2;等价的是【】 A. if(a>b){if(c>d) x = 1;else x = 2;} B. if(a>b){if(c>d) x = 1;} else x = 2;

JAVA实用教程(第三版)课后习题答案

第一章Java语言概述 2.“java编译器将源文件编译为的字节码文件是机器码”这句话正确吗? 答:不正确 3.java应用程序的主类必须含有怎样的方法? 答:含有main方法 4。“java应用程序必须有一个类是public类”这句话正确吗? 答;不正确,只能有一个public类 5。“java Applet程序的主类必须是public类”这句话正确吗? 答:正确,因为java Applet主类必须是Applet类的子类并且是public 的类 6。请叙述java源程序的命名规则。 答:与public的类同名。 7。源文件生成的字节码文件在运行时都加载到内存中吗? 答:非也,动态随需要运行才加载。 8.面向对象的程序设计语言有那些基本特征? 答:封装;继承;多态性。 9.在Java程序中有多个类文件时,用Java命令应该运行那个类?答:具有main方法的类 第二章基本数据类型和数组 4。下列哪些语句是错的?

Int x=120; Byte b=120; b=x; 答:B=x;错应为b=(byte)x 5。下列哪些语句是错的? 答:y=d;错,应y=(float)d 6。下列两个语句是等价的吗? Char x=97; Char x=…a?; 答:是等价的。 7。下列system.out.printf语句输出结果是什么? Int a=97; Byte b1=(byte)128; Byte b2=(byte)(-129); System.out.printf(“%c,%d,%d”,a,b1,b2); 如果输出语句改为: System.out.printf(“%d,%d,%d”,a,b1,b2); 输出什么? 答:输出a ,-128,127 修改后输出97,-128,127 8.数组是基本数据类型吗?怎样获取数组的长度? 答:不是基本数据类型,是复合数据类型。可以通过:数组名.length

自考高级语言程序设计复习题

2013年海南省衔接课程考试 高级语言程序设计复习题 一、单项选择题(在每小题列出的四个选项中只有一个是符合题目要求的,请将其代码填在题后的括号内。错选或未选均无分。) 1、在以下给出的表达式中,与while E中的E不等价的表达式是()。 A)(!E=0) B)(E>0||E<0) C)(E==0) D)(E!=0) 2、若x和y是代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是()。 A)abs(x-y)<10 B)x-y>-10&&x-y<10 C) @(x-y)<-10||!(y-x)>10 D)(x-y)*(x-y)<100 3、以下能够正确判断char型变量c是否为大写字母的表达式是()。 A) (‘A’<=c)AND (‘Z’>=c) B)(‘A’<=c)& (‘Z’>=c) C)(‘A’<=c) && (‘Z’>=c) D)以上答案都不对 4、下列叙述正确的是()。 A) break语句只能用于switch语句 B)在switch语句中必须使用default C) break语句必须与switch语句中的case配对 D)在switch语句中,不一定使用break语句 5、以下选项中,不能看作一条语句的是()。 A){ ;} B)a=0,b=0,c=0; C) if(a>0); D)if(b==0) m=1;n=2; 6、以下程序段中与语句k=a>b?(b>c?1:0):0)功能等价的是()。 A) if(a>b&&(b>c)) k=1; B) if(((a>b)||(b>c)) k=1; else k=0; else k=0; C)if(a<=b) k=0; D)if(a>b) k=1; else if(b<=c) k=1; else if(b>c) k=1; else k=0; 7、若有以下程序: main() { int y=10; while(y--); printf(“y=%d\n”,y); }

java课后习题及答案

第一章JA V A语言概论 一、选择题 1. 下列不属于java语言特点的是:B A. java能检查程序在变异和运行时的错误 B. java 能运行虚拟机实现跨平台 C. java 自己操纵内存减少了内存出错的可能性 D. java 还实现了真数组,避免了覆盖数据的可能 2. java语言的执行模式是:C A. 全编译型 B. 全解释型 C. 半编译和半解释型 D. 同脚本语言的解释模式 3. 下列关于虚拟机说法错误的是:B A. 虚拟机可以用软件实现 B. 虚拟机部可以用硬件实现 C. 字节码是虚拟机的机器码 D. 虚拟机把代码程序与各操作系统和硬件分开 4. java语言是1995年由()公司发布的A A. Sun B. Microsoft C. Borland D. Fox Software 5. 下列不是虚拟机执行过程特点的是A A. 双线程 B. 多线程 C. 动态链接 D. 异常处理 6. java以JVM为基础,最下层是移植接口,由适配器和()组成B A. 网卡 B. Java os C. Java基本类 D. Java 应用程序和applet小程序 7. java程序的执行过程中用到一套JDK工具,其中javac.exe指A A. java语言编译器 B. java字节码解释器 C. java文档生成器 D. java类分解器 8. java的API结构中,不属于类库主要包括的核心包的是C A. java包 B. javax C. javadoc包 D. org扩展包 9. 每个java的编译单元可包含多个类或界面,但是每个编译单元最多只能有()类或者界面是公共的A

《Java程序设计》课后习题参考答案

习题1参考答案 1.Java语言的特点有哪些? 答:参考1.1.2 防止直接访问数据变量看起来有些奇怪,但它实际上却对使用类的程序质量有极大的好处。既然数据的单个项是不可访问的,那么惟一的办法就是通过方法来读或写。因此,如果要求类成员内部的一致性,就应该通过类本身的方法来处理。 这种数据隐藏技术就是面向对象的重要特性——封装。它将类的外部界面与类功能的实现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,通过访问接口实现对数据的操作。即使实现细节发生了改变,还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作,这使代码维护更简单。 2.简述封装的优点。 答:封装是一个简单而有效的思想,优点有:(1)模块化,对内成为一个结构完整、可进行自我管理、自我平衡、高度集中的整体。(2)信息隐蔽,对外则是一个功能明确、接口单一、可在各种适合的环境下都能独立工作的有机单元。 面向对象的程序设计实现了对象的封装,使得用户不必关心诸如对象的行为是如何实现的这样一些细节。通过对对象的封装,实现了模块化和信息隐藏,有利于程序的可移植性和安全性,同时也有利于对复杂对象的管理。类的封装性使得代码的可重用性大为提高,这样的有机单元特别适合构建大型标准化的软件系统,具有很高的开发效率。 3.Java的基本工具有哪些? (1)javac 编译器 (2)java 解释器 (3)jdb Java 语言调试器 (4)javadoc API文档管理器 (5)javah 头文件生成器 (6)appletviewer 小应用程序浏览器 (7)javap 类文件反汇编器 4.Java开发环境是如何配置的? 答:对于Windows 2000以上版本的操作系统,可以打开[控制面板]窗口,双击其中的[系统]图标,在[系统特性]窗口中单击[高级]选项卡,进而单击[环境变量]按钮。在出现的[环境变量]窗口中,在[系统变量]框中选择[Path]项,单击[编辑]按钮,在弹出的[编辑系统变量]窗口的[变量值]框后加上上面两条语句。 习题2参考答案 1.Java语言包含哪些数据类型? 答:包含基本数据类型和复合数据类型。基本类型包括整数类型、浮点数类型、布尔类型。复合类型包括类类型(Class Type)、接口类型(Interface Type)与数组类型(Array Type)。 2.Java有多少关键字? 答:abstract, continue, for, new, switch,boolean, default, goto*, null, synchronized,break, do, if, package, this,byte, double, implements, private, threadsafe,byvalve*, else, import, protected, throw,case, extends, instanceof, public, transient,catch, false, int, return, true,char, final,

java练习题答案

第1章java语言概述习题 一、填空题 1、面向对象程序的主要特征:继承,__封装___,___多态 _____。 2、java中的继承机制之所以能够降低程序的复杂性,提高程序的效率,主要是 因为它使代码可以__重用或复用___. 3、java语言中,为将源代码翻译成 __字节码__文件时产生的错误称为编译错误, 而将程序在运行中产生的错误称为运行错误。 4、javac是java语言中的编译器,基本语法是:javac[选项] __文件名__,java 是java语言中的解释执行器,基本语法是:java[选项]___类名___. 5、java语言的主要贡献者是谁James gosling 二、[ 三、单选题 1、编译Java Application 源程序文件将产生相应的字节码文件,这些字节码文 件的扩展名为( B)。 A、java B、.class C、html D、.exe 2、main方法是Java Application程序执行的入口点,关于main方法的方法首 部, 以下(B)项是合法的。 A、public static void main() B、public static void main(String args[]) C、public static int main(String[] arg) ) D、public void main(String arg[]) 三、判断 1、Java语言具有较好的安全性和可移植性及与平台无关等特性。√ 2、Java语言的源程序不是编译型的,而是编译解释型的。√ 四、问答题 1、编写、运行java程序需要经过哪些主要步骤 答:1.编写源文件,扩展名必须是.java 2.编写java源程序,使用java编译器编写源文件,得到字节码文件 ~ 3.运行java程序,使用javaSE平台只不过的java解释器来解释执行字 节码文件。 2、阅读下列java源代码文件,并回答问题 public class Speak{ void speakHello(){ "I'm glad to meet you"); } } … class Xiti8{

2020年10月全国高级语言程序设计(一)自考试题及答案解析.docx

??????????????????????精品自学考料推荐?????????????????? 全国 2018 年 10 月高等教育自学考试 高级语言程序设计(一)试题 课程代码: 00342 一、单项选择题(本大题共20 小题,每小题 1 分,共 20 分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括 号内。错选、多选或未选均无分。 1.下列不正确的转义字符是() . A. ′ ′ B. ′ ″ C. ′ \086′ D. ′ \0′ 2.下列运算符中,优先级最高的是() A. [] B.++ C.% D.&& 是 C 语言保留字的是 () 3.下列标识符中,不. A. char B. while C. min D. default 4.下列数据中,不.是 C 语言常量的是 () A. ′ \n′ B. ″ a″ C. e-2 D. 012 5.若定义了 int a; char b; float c ;,则表达式a*b-c 的类型是 () A. float B. int C. char D. double 6.若定义了 int a, x,y;,则下列语句中不.正确的是 () A. x=3 ,y=5 ; B. ++x ; C. x=y+=x*30 ; D. a=y+x=30 ; 7.调用函数时,若实参是一个数组名,则向函数对应的形参传送的是() A. 数组的长度 B.数组的首地址 C. 数组第一个元素的值 D. 整个数组元素的值 8.在 C 语言中,函数返回值的类型是由() A. 定义的函数类型决定 B.return 语句中表达式的类型决定 C.调用该函数的主调函数类型决定 D. 调用该函数时系统状态决定 9.若定义了 int b [][ 3]={ 1,2, 3,4, 5, 6, 7};,则 b 数组第一维的长度是 () A. 2 B. 3 C. 4 D.无确定值 1

《Java基础入门》课后章节习题及答案(完整版)

《Java基础入门》课后章节习题及答案(完整版)《Java基础入门》课后习题 第1章Java开发入门 一、填空题 1、Java的三大体系分别是_JavaSE_____、_JavaEE_____、_JavaME_____。 2、Java程序的运行环境简称之为JRE_____。 3、编译Java程序需要使用_javac_____命令。 4、javac.exe和java.exe两个可执行程序存放在JDK安装目录的bin______目录下。 5、path______环境变量用来存储Java的编译和运行工具所在的路径,而_classpath_____环境变量则用 来保存保存Java虚拟机要运行的“.class”文件路径。 二、选择题 1、以下选项中,哪些属于JDK工具?(多选)ABCD A、Java编译器 B、Java运行工具 C、Java文档生成工具 D、Java打包工具 2、Java属于以下哪种语言?C A、机器语言 B、汇编语言

C、高级语言 D、以上都不对 3、下面哪种类型的文件可以在Java虚拟机中运行?D A、.java B、.jre C、.exe D、.class 4、安装好JDK后,在其bin目录下有许多exe可执行文件,其中java.exe命令的作用是以下哪一种?B A、Java文档制作工具 B、Java解释器 C、Java编译器 D、Java启动器 5、如果jdk的安装路径为:d:\jdk,若想在命令窗口中任何当前路径下,都可以直接使用javac和java 命令,需要将环境变量path设置为以下哪个选项?B A.d:\jdk; B.d :\jdk\bin; C.d:\jre\bin; D.d:\jre; 三、问答题 1、简述Java的特点。 面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、简述JRE与JDK的区别。

java语言程序设计课后习题答案解析

习题2 3.使用“= =”对相同内容的字符串进行比较,看会产生什么样的结果。 答:首先创建一个字符串变量有两种方式:String str = new String("abc"); String str = "abc"; 使用“= =”会因为创建的形式不同而产生不同的结果: String str1 = "abc"; String str2 = "abc"; System.out.println(str1= =str2); //true String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1= =str2); //false String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1= =str2); //false 因此自符串如果是对内容进行比较,使用equals方法比较可靠。 String str1 = "abc"; String str2 = "abc"; System.out.println(str1= =str2); //true String str1 = new String("abc"); String str2 = "abc"; System.out.println(str1.equals(str2)); //true String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1.equals(str2)); //true 5.编写一个程序,把变量n的初始值设置为1678,然后利用除法运算和取余运算把变量的每位数字都提出来并打印,输出结果为:n=1678。n的每位数字是1,6,7,8。若n为任意值呢? 法一: public class Exercise5{ public static void main(String[] args){ int n=1678; int unit; int decimal; int hundred; int thousand; int count; thousand=n/1000; count=n%1000; hundred=count/100; count=count%100; decimal=count/10; count=count%10; unit=count; System.out.println("1678包含的数 字分别是: "+thousand+','+hundred+','+decimal+', '+unit); } } //如果n为任意值 import java.io.*; public class Exercise51{ public static void main(String[] args) throws IOException{ System.out.print("请输入一个整数:"); InputStreamReader isStream=new InputStreamReader(System.in); BufferedReader bfReader=new BufferedReader(isStream); String input=bfReader.readLine(); int length=input.length()-1; int n=new

高级语言程序设计自考模拟10

[模拟] 高级语言程序设计自考模拟10 单项选择题在每小题列出的四个备选项中只有一个是符合题目要求的。 第1题: 下列不属于面向机器语言的是( ) A.符号语言 B.二进制语言 C.汇编语言 D.C语言 参考答案:D 答案解析: 第2题: 设int b=2;表达式(b<<2)/(b>>1)的值是( ) A.2 B.4 C.6 D.8 参考答案:D 答案解析: 左移位运算移一位相当于乘2,右移位运算右移一位相当于除2。 第3题: 设置变量定义为:int a=0x53;int b=6;,求表达式~a|b的值(假定现有计算机字长为16)( ) A.82 B.-82 C.72 D.-72 参考答案:B 答案解析: 因计算机字长为16.故a的二制表示是0000000001010011,b的二进制表示是0000000000000110。运算符"~"自右向左结合,运算符"|"是自左向右结合;且运算符"~"的优先级高于运算符"|"的优先级,则进行计算的顺序是"(~a)|b"。最终计算结果是1111111101010010(十进制值为-82)。 第4题:

为了判定两个字符串是否相等应当使用( ) A.if(s1==s2) B.if(s1=s2) C.if(strcmp(s1,s2)==0) D.if(strcmp(s1,s2)=0) 参考答案:C 答案解析: 第5题: 设char c[5]={'a','b','\0','C','\0');则printf("%s",c);的输出是( ) A.'a''b' B.ab C.abc D."ab\0c" 参考答案:B 答案解析: 第6题: 以下程序的运行结果是( ) #include<stdio.h>main() { int a[]={1,2,3,4,5,6,7,8,9,10,11,12};int *p=&a[5],*q=NULL;printf("%d%d\n",*p,*q);} A.运行后报错 B.6 0 C.6 12 D.5 5 参考答案:A 答案解析: #include<stdio.h> main() { int a[]={1,2.3.4,5,6,7,8,9,10,11,12}; int*p=&a[5],*q=NULL; printf("%d%d\n",*P,*q);/*被置空的指针不能参与"*"运算*/ } 第7题: 当执行以下程序段时( ) do{y--;}while(--y) printf("%d\n",y--); A.循环体将执行一次 B.循环体将执行两次 C.循环体将执行无限次 D.系统将提示有语法错误

Java程序的设计课后复习题参考答案

高等院校计算机基础教育规划教材《Java 程序设计》课后习题参考答案 ――大学 习题1参考答案 1.Java语言的特点有哪些? 答:参考1.1.2 防止直接访问数据变量看起来有些奇怪,但它实际上却对使用类的程序质量有极大的好处。既然数据的单个项是不可访问的,那么惟一的办法就是通过方法来读或写。因此,如果要求类成员部的一致性,就应该通过类本身的方法来处理。 这种数据隐藏技术就是面向对象的重要特性——封装。它将类的外部界面与类功能的实现区分开来,隐藏实现细节,(通过公共方法)保留有限的对外接口,迫使用户使用外部界面,通过访问接口实现对数据的操作。即使实现细节发生了改变,还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作,这使代码维护更简单。 2.简述封装的优点。 答:封装是一个简单而有效的思想,优点有:(1)模块化,对成为一个结构完整、可进行自我管理、自我平衡、高度集中的整体。(2)信息隐蔽,对外则是一个功能明确、接口单一、可在各种适合的环境下都能独立工作的有机单元。 面向对象的程序设计实现了对象的封装,使得用户不必关心诸如对象的行为是如何实现的这样一些细节。通过对对象的封装,实现了模块化和信息隐藏,有利于程序的可移植性和安全性,同时也有利于对复杂对象的管理。类的封装性使得代码的可重用性大为提高,这样的有机单元特别适合构建大型标准化的软件系统,具有很高的开发效率。 3.Java的基本工具有哪些? (1)javac 编译器 (2)java 解释器 (3)jdb Java 语言调试器 (4)javadoc API文档管理器 (5)javah 头文件生成器 (6)appletviewer 小应用程序浏览器 (7)javap 类文件反汇编器 4.Java开发环境是如何配置的? 答:对于Windows 2000以上版本的操作系统,可以打开[控制面板]窗口,双击其中的[系统]图标,在[系统特性]窗口中单击[高级]选项卡,进而单击[环境变量]按钮。在出现的[环境变量]窗口中,在[系统变量]框中选择[Path]项,单击[编辑]按钮,在弹出的[编辑系统变量]窗口的[变量值]框后加上上面两条语句。

清华大学出版社 Java课后答案

第1章: 参考答案: 习题集: 一、填空题 1.多态 2.java.exe 3.jdb.exe 4.标准字节码 5.java 6.独立于平台 二、选择题 1.B 2.A 3.B 4.A 5.A 6.C 7.C 8.D 9.C 第2章: 参考答案: 实验指导: 2.5.1.第一处需要的代码:yourGuess>realNumber 第二处需要的代码:yourGuess=input.nextInt(); 第三处需要的代码:yourGuess

《Java基础入门》_课后习题答案解析__1~

第1章 Java开发入门 一、填空题 1、Java EE、Java SE、Java ME 2、JRE 3、javac 4、bin 5、path、classpath 二、选择题 1、ABCD 2、C 3、D 4、B 5、B 三、简答题 1、面向对象、跨平台性、健壮性、安全性、可移植性、多线程性、动态性等。 2、JRE(Java Runtime Environment,Java运行时环境),它相当于操作系统部分,提供了Java程 序运行时所需要的基本条件和许多Java基础类,例如,IO类、GUI控件类、网络类等。JRE是提供给普通用户使用的,如果你只想运行别人开发好的Java程序,那么,你的计算机上必须且只需安装JRE。 JDK(Java Development Kit,Java开发工具包),它包含编译工具、解释工具、文档制作工具、打包工具多种与开发相关的工具,是提供给Java开发人员使用的。初学者学习和使用Java语言时,首先必须下载和安装JDK。JDK中已经包含了JRE部分,初学者安装JDK后不必再去下载和安装JRE了。 四、编程题 public class HelloWorld { public static void main(String[] args) { System.out.println("这是第一个Java程序!"); } } 第2章 Java编程基础 一、填空题 1、 class 2、 true和false 3、单行注释、多行注释、文档注释 4、基本数据类型、引用数据类型 5、 1、2、4、8 6、 & && | || 7、 0 8、 5 9、 34 10、56 二、判断题 1、错 2、对 3、错 4、对 5、错

00342高级语言程序设计自考机考答案

高级语言程序设计(一)(00342) 一、选择题(共75小题,每题2分,共150分) 1-5 BBCDB 6-10 CBAAC 11-15 DACBC 16-20 BACAA 21-25 CCCBB 26-30 DACDD 31-35 CDCDC 36-40 DBADD 41-45 CACCD 46-50 BBCBB 51-55ABCDC 56-60BCBAA 61-65DCDCD 66-70CDBAA 71-75DBADD 二、判断题(共25小题,每题2分,共50分) 1-5 ????6-10 ????11-15 ????16-20 ????21-25 ???? 三、名词解释题(共25小题,每题4分,共100分) 1、答:所谓函数的调用,是指一个函数(调用函数)暂时中断本函数的运行,转而执行另一个函数(被调用函数)的过程。 2、答:计算机能直接识别和接受的二进制代码。 3、答:由.OBJ文件转化而成的.EXE文件,即计算机可以识别、执行的程序。 4、答:即一组计算机能识别和执行的指令。 5、答:在程序中要指定用到哪些数据以及这些数据的类型和数据的组织性形式,就是数据结构。 6、答:用一个符号代表一个常量,称为符号常量。 7、答:在计算机高级语言中,用来对变量、符号变量名、函数、数组、类型等命名的有效字符序列统称为标识符。 8、答:用关系运算符将两个数值或数值表达式连接起来的式子,称关系表达式。 9、答:在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。 10、答:函数的首行(即函数首部)称为函数原型。 11、答:即要求计算机进行操作的步骤,可以用言语描述,也可以用流程图描述。 12、答:将已设计好的算法用计算机语言来表示,即根据已经细化的算法正确写出计算机程序。 13、答:如果一个变量在某个文件或函数范围内是有效的,就称该范围为该变量的作用域。 14、答:如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址),称为这个函数的指针。 15、答:一个数组,若其元素均为指针类型数据,称为指针数组。 16、答:所谓类型,就是对数据分配存储单元的安排,包括存储单元的长度(所占多少字节)

Java程序设计基础习题答案

Java程序设计基础课后习题参考答案 第2章 1、关于Java Application 的入口方法main()的检验: main()方法的参数名就是否可以改变? main()方法的参数个数就是否可以改变? 该方法名就是否可以改变? 参考答案:(1)main()方法的参数名可以改变。(2)main()方法的参数个数不可以改变。(3)该方法名不可以改变。 2、当一个程序没有main()方法时,能编译不?如果能编译,能运行不? 参考答案:当一个程序没有main()方法就是,就是可以编译通过的,但就是不能给运行,因为找不到一个主函数入口。 3、下列语句能否编译通过? byte i = 127; byte j = 128; long l1 = 999999; long l2 = 9999999999; 参考答案:byte i 与long l1可以编译通过。而byte j 与long l2 超出自身数据类型范围,所以编译失败。 4、下列语句能否编译通过? float f1 = 3、5; float f2 = 3、5f; 参考答案:java中浮点型的数据在不声明的情况下都就是double型的,如果要表示一个数据就是float型的,必须在数据后面加上“F”或“f”;因此,float f1 无法编译通过。 5、验证int 与char,int与double等类型就是否可以相互转换。 参考答案:(1)char类型可以转换为int 类型的,但就是int类型无法转换为char类型的;(2)int 可以转换为double类型的,但就是double类型无法转换为int 类型的。 6、计算下列表达式,注意观察运算符优先级规则。若有表达式就是非法表达式,则指出不合法之处且进行解释。 (1) 4+5 == 6*2 (2) (4=5)/6 (3) 9%2*7/3>17 (4) (4+5)<=6/3 (5) 4+5%3!=7-2 (6) 4+5/6>=10%2 参考答案:表达式(2)为不合法表达式,只能将值赋值给一个变量,因此其中(4=5)将5赋值给4就是不合法的。 7、下列()就是合法的Java标识符。 (1) Counter1 (2) $index, (3) name-7 (4) _byte (5) larray (6) 2i

java课后练习题答案

一、选择题 1、在创建某类的对象时应该(C ) A、先声明对象,然后才能使用对象 B、先声明对象,为对象分配内存空间,然后才能使用对象 C、先声明对象,为对象分配内存空间,对对象初始化,然后才能使用对象 D、以上述说法都对 2、以下说法中对Java中定义的父类与子类的关系描述正确是的(C ) A、一个子类可以有多个父类,一个父类也可以有多个子类 B、一个子类可以有多个父类,但一个父类只可以有一个子类 C、一个子类可以有一个父类,但一个父类可以有多个子类 D、上述说法都不对 3、给定如下Java 程序片断: class A { public A() { System.out.print ("Java"); }} class B extends A { public B() { System.out.print (" Welcome"); } public static void main(String[] args) { B b=new B(); } }上述程序将( B) A、不能通过编译 B、通过编译,输出为: Java Welcome C、通过编译,输出为: Welcome D、通过编译,输出为: Java 4、给定以下程序段,如下: int i=0,j=-1; switch(i) { case 0:j=1; case 2:j=2; default:j=5; } System.out.print("j="+j); 编译运行,正确的是(D) A、j=-1 B、j=1 C、j=2 D、j=5 5、下面关于Java构造函数的描述正确的是(D ) A、类必须有显式定义构造函数 B、它的返回类型是void C、它和类有相同的名称,但它不能带任何参数 D、以上描述都是错误的 6、在Java编程中,用来执行Java类文件的命令是(B ) A、javac B、java C、appletviewer D、以上都不对 7、如下程序片段,体现了Java的( B) 概念 public void aMethod(String s) {........} public void aMethod(int i) {........}

相关主题
文本预览
相关文档 最新文档