2011年1月广东自考JAVA语言程序设计(一)课后习题答案和源代码(第七章)
- 格式:doc
- 大小:324.00 KB
- 文档页数:22
java语言程序设计课后习题答案第一章:计算机、程序和JAVA概述1、2、1什么是硬件和软件?答:硬件指计算机中可见的物理部分;而软件提供不可见的指令,这些指令控制硬件并使硬件完成特定的任务。
1、2、2列举计算机的5个主要硬件组件。
答:中央处理器(CPU);内存(主存);存储设备(磁盘、光盘);输入设备(鼠标、键盘);输出设备(显示器、打印机);通信设备(调制解调器、网卡)。
1、2、3编写“CPU”代表什么含义?测量CPU速度的单位是什么?答:CPU(Central Proceing Unit)中央处理单元,包括控制单元和算术、逻辑单元;单位是HZ,现在通常以MHZ,GHZ数量级衡量。
1、2、4什么是比特?什么是字节?答:bit是计算机物理设备中存储的最小单位;8个bit为1个byte。
1、2、5内存是用来做什么的?RAM代表什么?为什么内存成为RAM?答:内存用来存储程序和数据;RAM(Random-Acce Memory)-可随机访问存储介质;因为内存可以按任意顺序存取字节所以被称为RAM(按功能划分)。
1、2、6用于测量内存大小的单位是什么?用于测量磁盘大小的单位是什么?答:GB,TB1、2、7内存和永久存储设备的主要不同是什么?答:内存是易失性存储介质(断电即失),存储容量小,传输速度快;永久存储设备为非易失性存储介质(断电可留),存储容量大,传输速度慢。
1、3、1CPU能理解什么语言。
机器语言。
1、3、2什么是汇编语言?什么是汇编器?汇编语言能用短的描述性单词来表示每一条机器语言指令,是一种低级语言。
汇编器可以将汇编语言转换成机器语言。
1、3、3什么是高级编程语言?什么是源程序?很像英语,易于学习和使用的编程语言称为高级编程语言。
使用高级编程语言编写的程序称为源程序。
1、3、4什么是解释器?什么是编译器?解释器会逐条读取源代码中的语言,并立刻翻译成机器代码或者虚拟机器代码,然后立刻运行。
第七章 (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.javaimport java.awt.*;import javax.swing.*;/***7.1画一个五角星<BR>*@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绘制一条抛物线,设抛物线方程的系数从图形界面输入。
第四章 (1)4.9 声明MyDate类 (1)4.10 求前n个质数 (5)4.11 编写实现从两个字符串中找出最长的相同字符列的代码。
(6)4.12 整理字符串 (7)4.13 编写用数组实现大整数的类,提供大整数的加、减、乘等运算。
(8)第四章4.9 声明MyDate类,功能:增加1天,增减1月和增加1年的方法;输出MyDate 对象日期的方法;求两个MyDate对象日期差的方法。
并提供能用当前日期初始化MyDate类对象的构造方法。
import java.util.Calendar;/***日历类*@author黎明你好*/public class MyDate{public static long YEAR_MSEL = 1000*60*60*24*365L;public static long MONTH_MSEL = 1000*60*60*24*30L;public static long DATE_MSEL = 1000*60*60*24L;public static long HOUR_MSEL = 1000*60*60L;public static long MINUTE_MSEL = 1000*60L;private int year;private int month;private int date;private int hour;private int minute;private int second;private Calendar calendar;/***构造方法使用当前时间日期初始化对象*/public MyDate(){calendar = Calendar.getInstance();year = calendar.get(Calendar.YEAR);month = calendar.get(Calendar.MONTH) + 1;date = calendar.get(Calendar.DAY_OF_MONTH);hour = calendar.get(Calendar.HOUR_OF_DAY);minute = calendar.get(Calendar.MINUTE);second = calendar.get(Calendar.SECOND);}/***构造方法使用指定年、月、日初始化对象*/public MyDate(int year, int month, int date){set(year, month, date);}/***构造方法使用指定年、月、日、时、分、秒初始化对象*/public MyDate(int year, int month, int date, int hourOfDay, int minute, int second){set(year, month, date, hourOfDay, minute, second);}/***设置日历字段year、month和date的值。
实验一:Java 基本语法
实验目的:
了解 Java 的数据类型,掌握各种变量的声明方式,理解运算符的优先级,掌握 Java 基本数据类型、运算符与表达式,掌握顺序结构、选择结构和循环结构语法的程序设计方法。
实验要求:
1、编写一个声明Java 不同数据类型变量的程序。
2、编写使用不同选择结构的程序。
3、编写使用不同循环结构结构的程序。
实验内容:
1、声明不同数据类型变量
1)编写声明不同数据类型变量的程序,代码见实验指导书。
运行结果:
2)Integer类在某对象中打包了原始类型为int的值。
Integer类型对象包含int型的单个域。
此外,此类提供了许多方法,可以将int型转换为string 型,也可以将Sring型转换为int型,还包含处理int类型时的其他有用常量和方法。
代码见实验指导书。
运行结果:
2、使用选择结构
使用if...else 语句,编写源程序文件,代码见实验指导书。
运行结果:
使用switch 语句
1)编写程序用swith语句实现从键盘读如1,2,3时,屏幕提示不同信息。
代码见实验指导书。
运行结果:
3、使用循环结构
使用for语句
1)程序源代码见实验指导书。
2)改正源程序中错误:
public static void main (String args[])
throws java.io.IOException
运行结果:。
自考Java语言程序设计(一)课后习题及答案自考Java语言程序设计(一)第一章Java语言概述课后习题一、Java语言概述1.Java语言有哪些特点?答:面向对象、简单、平台无关性、安全性、内存管理、分布式应用、多线程、动态、解释运行,高效能2.什么叫做类?什么叫做对象?答:在面向对象编程中,具体的客观实体称为对象,对象就是数据加方法。
对象在程序中是通过一种抽象数据类型来描述的,这种抽象数据类型称为类。
类是对具有相同属性和方法的一组相似对象的抽象,或者说类是对象的模板。
3.简述Java的运行机制。
答:Java程序的运行必须经过编写、编译、运行三个步骤。
编写是指在Java开发环境中进行程序代码的输入过程,最终形成后缀名为.java源文件。
编译是指使用Java编译器对源文件进行错误排查的过程,编译后将生成后缀名为.class的字节码文件。
运行是指使用Java解释器将字节码文件翻译成机器代码,在cpu上运行并显示结果的过程。
这一过程如图所示。
4.简述Java应用程序的开发流程。
答:Java应用程序的运行经过编写、编译、运行三个步骤。
第1步,编写程序。
使用记事本或其他软件编写程序的源代码,将源代码保存为文件filename.java文件。
第2步,编译程序。
在MS-DOS命令窗口,将当前目录转换到Java源程序所在的保存目录;输入“javame.java”形式的命令进行程序编译。
第3步,执行程序。
在同样的命令窗口中输入“javame”形式的命令执行程序。
来源:考试大完成了程序的开发,查看相应t目录,其中应该具有两个文件,分别是XXXX.java和XXXX.class。
考试大收集整理c5.当初Sun公司发展Java的原因是:(a)要发展航空仿真软件(b)要发展人工智能软件(c)要发展消费性电子产品b 6.Java是从哪种语言改进并重新设计?(a)Ade(b)C++(c)Pascala7.Java因为什么快速发展而走红?(a)个人计算机与网络(b)游戏软件(c)系统软件8.Java程序的种类有:(a)内嵌于Web文件中,由浏览器来观看的___Applet_______(b)可独立运行的_____Application_____考试大论坛(c)服务器端的____ Servlets _____9.Java是面向对象语言,对象是客观事物的__软件模型__,对象与之是一一对应的,它是很具体的概念。
第六章6.1 设计一个面板,该面板中有四个运动项目选择框和一个文本区。
当某个选择项目被选中时,在文本区中显示该选择项目。
程序运行结果:源文件:Work6_1.javaimport javax.swing.*;import java.awt.*;import ;/*** 6.1设计一个面板,该面板中有四个运动项目选择框和一个文本区。
<BR>*当某个选择项目被选中时,在文本区中显示该选择项目。
<BR>*@author黎明你好*/public class Work6_1 extends JFrame{private static final long serialVersionUID = 1L;private MyPanel6_1 panel;// 此面板public Work6_1(){super("第六章,第一题");panel = new MyPanel6_1();this.add(panel);this.setBounds(100, 100, 400, 150);this.setVisible(true);this.validate();this.addWindowListener(new WindowAdapter(){public void windowClosing(WindowEvent e){System.exit(0);}});}public static void main(String args[]){new Work6_1();}}面板类源文件:MyPanel6_1.java/***需要设计的面板类*/class MyPanel6_1 extends JPanel implements ItemListener{private static final long serialVersionUID = 1L;private JCheckBox box1, box2, box3, box4;private JTextArea textArea;public MyPanel6_1(){textArea = new JTextArea(5, 10);box1 = new JCheckBox("足球");box2 = new JCheckBox("排球");box3 = new JCheckBox("篮球");box4 = new JCheckBox("台球");box1.addItemListener(this);box2.addItemListener(this);box3.addItemListener(this);box4.addItemListener(this);this.add(box1);this.add(box2);this.add(box3);this.add(box4);this.add(textArea);this.setBackground(Color.cyan);}public void itemStateChanged(ItemEvent e){JCheckBox box = (JCheckBox) e.getSource();if (box == box1 && box.isSelected())textArea.append(box1.getText() + "\n");else if (box == box2 && box.isSelected())textArea.append(box2.getText() + "\n");else if (box == box3 && box.isSelected())textArea.append(box3.getText() + "\n");else if (box == box4 && box.isSelected())textArea.append(box4.getText() + "\n");}}6.2 设计一个面板,该面板中有四个运动项目单选框和一个文本框。
【程序1】ﻫ题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月得兔子总数为多少?ﻫ//这就是一个菲波拉契数列问题public class lianxi01{ﻫpublic staticvoid main(String[]args) {System、out、println("第1个月得兔子对数: 1”);System、out、println("第2个月得兔子对数: 1");intf1= 1,f2 =1,f,M=24;ﻫfor(int i=3;i〈=M; i++){ﻫf= f2;f2= f1+f2;ﻫf1 = f;System、out、println("第”+ i+”个月得兔子对数:"+f2);}ﻫ}ﻫ}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。
ﻫ程序分析:判断素数得方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不就是素数,反之就是素数。
ﻫpublicclass lianxi02 {ﻫpublic staticvoidmain(String[]args){ﻫint count = 0;ﻫfor(int i=101; i〈200;i+=2){ booleanb=false;for(int j=2; j〈=Math、sqrt(i);j++)ﻫ{ﻫif(i % j == 0){ b = false;break;}ﻫelse { b =true;}ﻫ}ﻫif(b== true) {coun t++;System、out、println(i );}}ﻫSystem、out、println( "素数个数就是: " + count);}}【程序3】ﻫ题目:打印出所有得"水仙花数”,所谓”水仙花数"就是指一个三位数,其各位数字立方与等于该数本身.例如:153就是一个"水仙花数",因为153=1得三次方+5得三次方+3得三次方。
第七章 (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.javaimport java.awt.*;import javax.swing.*;/***7.1画一个五角星<BR>*@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.javaimport java.awt.*;import java.awt.event.*;import javax.swing.*;/***7.2用Graphics2D画抛物线,抛物线方程的系数从图形界面输入.<BR>*@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,300g2D.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的平移,缩放,旋转功能。