当前位置:文档之家› JAVA简单邮件发送客户端程序设计

JAVA简单邮件发送客户端程序设计

JAVA简单邮件发送客户端程序设计
JAVA简单邮件发送客户端程序设计

武汉长江工商学院

--工学院

项目名称:简单邮件发送客户端

程序设计

学生姓名:

学号:

班级:

指导老师:

2012年6月12日

目录

1.设计概述 (1)

2.电子邮件发送协议与技术 (1)

2.1 SMTP协议简介及通讯模型 (1)

2.2 Java Mail API介绍 (2)

3.邮件发送客户端程序总体设计 (3)

3.1系统模块结构 (3)

3.2类的功能设计 (3)

3.2.1系统托盘类 (3)

3.2.2 账号设置类 (4)

3.2.3 邮件发送类 (4)

4.功能模块的实现 (5)

4.1 程序主界面的设计 (5)

4.2账号设置功能实现 (6)

4.3邮件发送功能实现 (8)

4.4附件发送实现 (10)

4.5系统托盘实现 (11)

5.程序测试 (12)

5.1 发送邮件程序账号设置测试 (12)

5.2发送电子邮件程序测试 (12)

5.3电子邮件程序系统托盘测试 (14)

设计小结 (15)

参考文献 (16)

附录1:SystemTrayTest类 (17)

附录2:MainSender类 (19)

附录3:LoginDialog类 (28)

1.设计概述

电子邮件(electronic mail,简称E-mail,标志:@,也被大家昵称为“伊妹儿”)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。是Internet应用最广的服务:通过网络的电子邮件系统,用户可以用非常低廉的价格(不管发送到哪里,都只需负担电话费和网费即可),以非常快速的方式(几秒钟之内可以发送到世界上任何你指定的目的地),与世界上任何一个角落的网络用户联系,这些电子邮件可以是文字、图像、声音等各种方式。同时,用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。

电子邮件的处理有两大部分组成:电子邮件在Internet上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当我们要寄一个包裹时,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出。同样的,当我们发送电子邮件时,这封邮件是由邮件发送服务器(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。

本系统使用Eclipse作为开发工具,开发一个电子邮件发送端应用程序。系统实现的功能主要有帐号设置,发送及添加附件,托盘程序等。

本例发送程序采取了与发送邮件服务器连接实现电子邮件的发送。用户在“收件人邮箱”所对应的对话框中输入收件人的Email地址,并在账号设置窗口所对的对话框中输入发信人的Email地址,设置好账号后,进入主对话框编辑信件的正文(本程序还可以发送附件,直接选择路径,就可以发送附件),然后单击“发送”按钮,便可完成电子邮件的发送。电子邮件发送成功,程序将弹出一个“发送成功”的消息对话框;若电子邮件发送失败,程序将给出失败的相关信息。

2.电子邮件发送协议与技术

2.1 SMTP协议简介及通讯模型

(SMTP:Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。它能够在传送中接力传送邮件,传送服务提供了进程间通信环境(IPCE),此环境可以包括一个网络,几个网络或一个网络的子网。理解到传送系统(或IPCE)不是一对一的是很重要的。进程可能直接和其它进程通过已知的IPCE通信。邮件是一个应用程序或进程间通信。邮件可以通过连接在不同IPCE上的进程跨网络进行邮件传送。更特别的是,邮件可以通过不同网络上的主机接力式传送。SMTP 协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,我们就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转你发出的电子邮件。

SMTP 是一种提供可靠且有效电子邮件传输的协议。SMTP是建模在 FTP 文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供来信有关的通知。

SMTP 独立于特定的传输子系统,而且仅要求一条可以保证传送数据单元顺序的通道且只需要可靠有序的数据流信道支持。SMTP 重要特性之一是其能跨越网络传输邮件,即“ SMTP邮件中继”。通常,一个网络可以由公用互联网上 TCP 可相互访问的主机、防火墙分隔的 TCP/IP 网络上 TCP 可相互访问的主机,及其它 LAN/WAN 中的主机利用非 TCP

传输层协议组成。使用 SMTP ,可实现相同网络上处理机之间的邮件传输,也可通过中继器或网关实现某处理机与其它网络之间的邮件传输。

在这种方式下,邮件的发送可能经过从发送端到接收端路径上的大量中间中继器或网关主机。域名服务系统(DNS)的邮件交换服务器可以用来识别出传输邮件的下一跳 IP 地址。SMTP在传输文件过程中使用25号端口。

可大致用下面的图2-1来表示。

图2-1 SMTP通信模型

2.2 Java Mail API介绍

一般情况下,在eclipse中,电子邮件程序的编写是主要是利用Java jdk1.7扩展包JavaMailAPI等及相关的SMTP等通信协议来实现的。随着现代软件业的发展,java提供了方便、简易、与服务器无关且稳固的电子邮件处理组件,使我们可以在程序开发语言中调用这些组件,利用很简单的语言实现功能强大的程序。JavaMail便是一个很好的电子邮件程序开发扩展组件。

JavaMail API是读取、撰写、发送电子信息的可选包。我们可用它来建立如Eudora、Foxmail、MS Outlook Express一般的邮件用户代理程序(Mail User Agent,简称MUA)。而不是像sendmail或者其它的邮件传输代理(Mail Transfer Agent,简称MTA)程序那样可以传送、递送、转发邮件。从另外一个角度来看,我们这些电子邮件用户日常用MUA程序来读写邮件,而MUA依赖着MTA处理邮件的递送。

JavaMail核心类:Session、Message、Address、Authenticator、Transport、Store、Folder。

Session类:定义了基本的邮件会话。就像Http会话那样,我们进行收发邮件的工作都是基于这个会话的。Session对象利用了java.util.Properties对象获得了邮件服务器、用户名、密码信息和整个应用程序都要使用到的共享信息。

Message类:当我们建立了Session对象后,便可以被发送的构造信息体了。在这里SUN 提供了Message类型来帮助开发者完成这项工作。由于Message是一个抽象类,大多数情况下,我们使用javax.mail.internet.MimeMessage这个子类,该类是使用MIME类型、MIME 信息头的邮箱信息。信息头只能使用US-ASCII字符,而非ASCII字符将通过编码转换为ASCII的方式使用。

Address类:到这里,我们已经建立了Session和Message,下面将介绍如何使用邮件地址类:Address。像Message一样,Address类也是一个抽象类,所以我们将使用javax.mail.internet.InternetAddress这个子类。

Authenticator类:像https://www.doczj.com/doc/5912682332.html,类那样,JavaMail API通过使用授权者类(Authenticator)以用户名、密码的方式访问那些受到保护的资源,在这里“资源”就是指邮件服务器。在javax.mail包中可以找到这个JavaMail的授权者类(Authenticator)。

Transport类:在发送信息时,Transport类将被用到。这个类实现了发送信息的协议(通称为SMTP),此类是一个抽象类,我们可以使用这个类的静态方法send()来发送消息:Transport.send(message);

Store和Folder类:接收邮件和发送邮件很类似都要用到Session。但是在获得Session 后,我们需要从Session中获取特定类型的Store,然后连接到Store,这里的Store代表了存储邮件的邮件服务器。在连接Store的过程中,极有可能需要用到用户名、密码或者Authenticator。

3.邮件发送客户端程序总体设计

3.1系统模块结构

电子邮件客户端主要由以下三个模块构成:发送邮件模块、系统托盘模块、账号设置模块。

其功能模块如图3-1所示:

图3-1 电子邮件功能模块图

1)发送邮件模块:发送邮件,并可以添加附件。

2)账号设置模块:对发送方电子邮件账号进行设置。

3)系统托盘模块:在任务栏可以使程序有托盘功能。

3.2类的功能设计

3.2.1系统托盘类

Class SystemTrayTest{

//该类为系统托盘类,为了实现邮件程序的托盘功能。

PopupMenu popup = new PopupMenu(); //系统托盘菜单数组。

MenuItem[] mItem = { new MenuItem("账号设置"),new MenuItem("退出程序") };

//点击鼠标邮件的菜单数组SystemTray tray;表示桌面的系统托盘对象。

TrayIcon trayIcon; // TrayIcon 对象表示可以添加到系统托盘的托盘图标。TrayIcon 可以包含工具提示(文本)、图像、弹出菜单

和一组与之关联的侦听器。

MailSender inst; //表示创建一个邮件发送类。

public SystemTrayTest() //该方法表示一个托盘类的构造。

public void actionPerformed(ActionEvent e) //该方法表示鼠标触发事件,其

中的参数为监视器变量。

}

3.2.2 账号设置类

Class LoginDialog{

//该类为账号设置类,主要实现了邮件系统的账号功能。

public static MailSender ms; //表示创建一个邮件发送类。private JLabel pwdLabel; //表示创建用户密码的短文本

字符串的显示区。

private JTextField userJT; //表示创建用户账号的输入区。private JButton logoutJB; //表示创建一个按钮。

private JPasswordField pwdJP; //表示创建一个密码输入区。private JLabel userLabel; //表示创建用户账号的短文本字

符串的显示区。

public LoginDialog(MailSender frame) //该方法表示账号设置类的一个

构造

private void initGUI() //该方法表示一个图形界面的初

始化。

private void logonJBMouseEntered(MouseEvent evt)//该方法以及接后的几个类似的

方法都表示鼠标触发事件。

}

3.2.3 邮件发送类

Class MailSender{

//该类为邮件发送类,主要是实现了邮件发送等功能。

public LoginDialog dlg; // 登录对话框

private static String attachPath; // 附件路径

private static String mailAddr; // 发件人邮箱地址

private static String mailPwd; // 发件人邮箱密码

public boolean loginCheck; // 是否已登录

private JLabel fromLabel; // 显示发件人

private JButton loginJB;

private JLabel attachLabel;

private JLabel stateLabel; // 邮件状态

private boolean hasAttach; // 是否有附件

private JButton attachJB; // 添加附件

private JTextField recieverJT; // @前面的邮箱地址

private JTextField smtpJT; // @后面的邮箱地址

private JTextField tittleJT; // 主题

private JTextArea textJTA; // 内容

private JSeparator jSeparator1; // 分割线

private void initGUI() //图形界面的初始化方法

class PasswordAuthenticator extends Authenticator//密码输入方法

private void sendJBActionPerformed(ActionEvent evt)//邮件发送的详细方法

private String smtpAddressConfirm(String smtpAddr)//SMTP邮件地址确认方法private void attachJBActionPerformed(ActionEvent evt)//添加附件的方法

}

4.功能模块的实现

4.1 程序主界面的设计

本次设计中,主要用到对话框Java图形界面。Java图形界面是实现应用程序人机交互的重要组成部分。它不但可以实现数据流的输入和输出,而且也可以移动和关闭对话框。

a.创建类MailSender.

首先,创建MailSender类,此类继承javax.swing.JFrame类。

b.创建initGUI方法

首先,设置窗口关闭方法,调用

setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE)方法。然后设置布局。对各个图形组件进行创建。

主界面的实现如图4-1,创建一个图形界面,有输入框,输入监视器,还有各个按钮等。方便用户可以使用系统。

图4-1 图形界面的创建与实现图

4.2账号设置功能实现

在账号设置时新建一个类,此类包含了GUI,鼠标触发事件,以及账号名,密码与邮件服务器的验证。在用户输入账号时会进行账号名检测,查看输入的账号格式是否有误,若有误,则返回重新输入。

账号设置流程图如图4-2,账号设置会在输入账号时检验合法性,然后等待主界面调用并提取账号。

图4-2 账号设置流程图

部分此类代码如下:

private void initGUI() {

try {

{

this.setTitle("账号设置");

getContentPane().setLayout(null);

}

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

}

private String smtpAddressConfirm(String smtpAddr) { if (smtpAddr.contains(".com")) {

if (smtpAddr.contains("163")) {

smtpAddr = "https://www.doczj.com/doc/5912682332.html,";

} else if (smtpAddr.contains("qq")) {

smtpAddr = "https://www.doczj.com/doc/5912682332.html,";

} else {

return "not include";

}

} else {

return "not include";

}

return smtpAddr;

}

4.3邮件发送功能实现

邮件发送流程图如图4-3,发送邮件时会对邮件以及账号进行处理和验证。

图4-3 邮件发送流程图

1)获取收件人账号,并设置SMTP邮件服务器(程序会检测输入账号合法性)。

关键代码:

String to = recieverJT.getText().trim() + "@"

+ smtpJT.getText().trim();// 获得收件人地址

System.out.println(to);

String subject = tittleJT.getText();

String body = textJTA.getText();

Properties props = System.getProperties();

// 设置SMTP邮件服务器:

String smtpAddr = smtpAddressConfirm(smtpJT.getText());

if ("not include" == smtpAddr) {

JOptionPane.showMessageDialog(null, "无法解析邮箱地

址!");

jLabel1.setIcon(resources.error);

}

System.out.println(smtpAddr);

props.put("mail.smtp.host", smtpAddr);

props.setProperty("mail.smtp.port", "25");

// SMTP服务器需要验证:

props.put("mail.transport.protocol", "smtp");

props.put("mail.smtp.starttls.enable", "true");

props.put("mail.smtp.auth", "true");

2)获取账号设置界面中用户输入的账号和密码传入服务器,然后创建一封新邮件。

关键代码:

// 传入用户名和口令:

Session session = Session.getDefaultInstance(props,

new PasswordAuthenticator(mailAddr, mailPwd));

session.setDebug(true);

// 创建新邮件:

Message msg = new MimeMessage(session);

msg.setFrom(new InternetAddress(mailAddr));

msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to, false));

msg.setSubject(subject);

msg.setText(body);

msg.setSentDate(new Date());

3)邮件发送以及发送失败的详细信息和原因。

关键代码:

MimeBodyPart mbp1 = new MimeBodyPart();

mbp1.attachFile("sss");

Multipart multi = new MimeMultipart();

FileDataSource fds = new FileDataSource(attachPath);

mbp1.setDataHandler(new DataHandler(fds));

mbp1.setFileName(attachLabel.getText());

multi.addBodyPart(mbp1);

msg.setContent(multi);

msg.saveChanges();

Transport.send(msg);

System.out.println("mail sended!");

stateLabel.setText("发送成功!");

sendJB.setIcon(resources.ok);

setIconImage(resources.mail_sended.getImage());

} catch (Exception ex) {

JOptionPane.showMessageDialog(null, "发送邮件失败!");

System.err.println("邮件发送失败的原因是:" + ex.getMessage());

System.err.println("具体的错误原因");

ex.printStackTrace(System.err);

4.4附件发送实现

添加附件流程图如图4-4,当用户点击“添加附加”按钮时,会弹出图形界面,方便用户选择附件路径,附件与邮件一起发送。

图4-4 添加附件流程图

新建一个JFileChoose对象chooser,然后调用对象的方法。

关键代码:

chooser.setFileSelectionMode(JFileChooser.FILES_ONLY);

chooser.setDialogTitle("打开文件夹");

chooser.setCurrentDirectory(new File("E:/flie/my coding tip"));

chooser.setMultiSelectionEnabled(true);// 支持多个附件

int returnVal = chooser.showOpenDialog(this);

if (returnVal == JFileChooser.APPROVE_OPTION) {

attachPath = chooser.getSelectedFile().getAbsolutePath();

attachLabel.setIcon(resources.attach);

attachLabel.setText(chooser.getSelectedFile().getName());

}

this.setIconImage(resources.mail_attachment.getImage());

this.hasAttach = true; // 有附件

4.5系统托盘实现

系统托盘流程图如图4-5,功能为当用户点击close键时,本系统最小化到托盘,然后当用户双击托盘图标时又出现主界面。

图4-5 系统托盘流程图

在本程序中添加了系统托盘功能,使用了jdk1.6中新增加的类Systemtray和TrayIcon类创建系统托盘,并在托盘上增加了鼠标邮件菜单。

关键代码:

trayIcon.addActionListener(this);

trayIcon.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

if (e.getSource() == trayIcon

&& e.getButton() == MouseEvent.BUTTON1) {

if (flag) {

setState(1);

flag = false;

} else {

setState(0);

flag = true;

}

}

setVisible(true);

}

5.程序测试

现在,以发送如下的一封带附件的邮件来进行功能测试。

收件人:hubeigongpeng@https://www.doczj.com/doc/5912682332.html,

发件人:hubeiwangchangyou@https://www.doczj.com/doc/5912682332.html,

邮件主题:测试邮件,收到勿回

邮件内容:测试邮件,收到勿回

附件:测试文件.doc

5.1 发送邮件程序账号设置测试

测试开始,在账号输入框中输入账号hubeiwangchangyou@https://www.doczj.com/doc/5912682332.html,,在密码框中输入密码,然后点击确认按钮。

如图5-1所示,为输入账号和密码

图5-1发送邮件程序账号设置测试

5.2发送电子邮件程序测试

在上一步已经测试了账号输入,然后再收件人地址输入框中输入“hubeigongpeng”,在@邮件服务器输入框中输入“https://www.doczj.com/doc/5912682332.html,”。接下来在主题输入框中输入“测试邮件,收到勿回”,正文中输入“测试邮件,收到勿回!”,然后添加附件“测试文件.doc”(如图5-2),最后点击发送,当邮件发送成功会在发送旁边返回“发送成功”的信息。

如图5-2为添加附件的界面。

图5-2发送电子邮件程序添加附件如图5-3为测试邮件发送成功。

图5-3发送电子邮件程序主界面

5.3电子邮件程序系统托盘测试

测试最后进入系统托盘测试,点击主界面的“”按钮,然后会看到主界面在桌面

上消失,在桌面左下角的任务栏里,可以找到一个类似地球的图标(如图5-3),当鼠标移上去时会有字体显示“CY电邮”,然后点击鼠标邮件,出现小菜单(如图5-4),选择“主界面”会弹出主界面,并有提示(如图5-5),选择“退出程序”,程序会退出。

如图5-4所示:系统托盘的实现

图5-4电子邮件程序(cy电邮)系统托盘

如图5-5所示:系统托盘右键菜单

图5-5电子邮件程序系统托盘右键菜单

如图5-6所示:弹出主界面提示

图5-6电子邮件程序系统托盘主界面弹出提示

设计小结

在课程设计即将完成之际,我想向曾经给我帮助的陈涛老师和一起讨论的同学表示衷心的感谢。本次设计过程中遇到了很多程序上的问题,在老师不厌其烦地指导和自己不断地思考中才得以解决,然后是不停地通宵研究,编译,拿出了刻苦的精神后,问题也就迎刃而解了。在这两个星期的努力中,我终于设计出一个电子邮件发送系统并调试通过,最后整理出设计报告。通过编写电子邮件的发送程序,我知道了java除了本来的许多包,还有需要特殊作用的扩展包,如本系统用到的javamail包等,目前系统还不够完整,还存在着很多的不足和不完善的地方。不过我相信随着以后学的专业知识越来越多,我会完善这个系统的。在完成过程中我在托盘程序时出现了鼠标点击的错误,在老师的帮助下我找到了错误并解决了,在发送邮件时出现无法登陆邮件服务器错误,问了老师才知道是因为我发的是QQ邮箱,而本身QQ邮箱的SMTP服务器没打开,所以我该用163邮箱发送。

最后,衷心感谢在百忙之中抽出时间审阅本课程报告的陈涛老师。

参考文献

[1]谢希仁.计算机网络.第五版[M].北京:电子工业出版社,2008.1

[2]耿祥义,张跃平.Java大学实用教程.第二版[M].北京:电子工业出版社,2005.5

[3][美]Rogers Cadenhead. Java编程入门经典.梅兴文译.第4版[M].北京:人民邮电出版社,2007

[4]王勇,代桂平.计算机网络课程设计[M].北京:清华大学出版社,2009.6

[5]耿祥义,张跃平.Java大学实用教程学习指导.第二版[M].北京:电子工业出版社,2005.5

附录1:SystemTrayTest类

功能:该类是实现主界面系统托盘功能的类。

import java.awt.AWTException;

import java.awt.Image;

import java.awt.Menu;

import java.awt.MenuItem;

import java.awt.PopupMenu;

import java.awt.SystemTray;

import java.awt.Toolkit;

import java.awt.TrayIcon;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

import java.awt.event.WindowAdapter;

import javax.swing.JFrame;

public class SystemTrayTest extends JFrame implements ActionListener { private static final long serialVersionUID = 5381564219860736835L;

PopupMenu popup = new PopupMenu();

MenuItem[] mItem = { new MenuItem("账号设置"),new MenuItem("退出程序") };

SystemTray tray;

TrayIcon trayIcon;

Image image1;

Image image;

boolean flag = true;

MailSender inst;

// public LoginDialog dlg;

public SystemTrayTest() {

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

mItem[i].addActionListener(this);

}

popup.add(mItem[0]);

popup.add(mItem[1]);

if (SystemTray.isSupported()) {

tray = SystemTray.getSystemTray();

image = Toolkit.getDefaultToolkit().getImage("imag/e_mail.png");

image1 = Toolkit.getDefaultToolkit().getImage("imag/e_mail.png");

trayIcon = new TrayIcon(image1, "CY电邮", popup);

trayIcon.setImageAutoSize(true);

try {

tray.add(trayIcon);

} catch (AWTException e) {

e.printStackTrace();

}

trayIcon.addActionListener(this);

trayIcon.addMouseListener(new MouseAdapter() {

public void mouseClicked(MouseEvent e) {

if (e.getSource() == trayIcon

&& e.getButton() == MouseEvent.BUTTON1) {

if (flag) {

setState(1);

flag = false;

} else {

setState(0);

flag = true;

}

}

setVisible(true);

}

});

}

else{

System.out.println("您的系统不支持托盘程序。");

}

inst = new MailSender();

inst.setLocationRelativeTo(null);

inst.setBounds(400, 200, 420, 400);

inst.setVisible(true);

自考Java语言程序设计试题及答案解析

自考J a v a语言程序设计试题及答案解析 文档编制序号:[KK8UY-LL9IO69-TTO6M3-MTOL89-FTT688]

2015年10月高等教育自学考试全国统一命题考试 Java语言程序设计(一) 试卷 (课程代码04747) 本试卷共13页,满分100分.考试时间150分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸. 2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑. 3.第二部分为非选择题。必须注明大、小题号.使用0.5毫米黑色字迹签字笔作答. 4.合理安排答题空间.超出答题区域无效。 第一部分选择题 一、单项选择题(本大题共10小题.每小题1分.共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的。请将其选出并将“答题卡” 的相应代码涂黑。未涂、错涂或多涂均无分. 1.以下字符组合中,不能作为Java整型常量的是 A.037 B.0x3ADG C.7000 D.0x3abcL 2.以下程序代码的输出结果是 3.设有数组定义,则x.length的值为 A.2 B.3 C.4 D.5 4. 设有字符串String s=〝ABCDEFGABC〞;,则表达式s.indexOf(〝A〞,7)的值是 A.7 B.6 C.3 D.0 5.以下关于Swing与AWT之间关系的叙述中,正确的是 A.Swing是AWT的提高和扩展

B.在写GUl程序时,AWT和Swing不能同时使用 C.AWT和Swing在不同的平台上都有相同的表示 D.AWT中有一些类是从Swing中的一些继承的 6.以下供选择的类中,其子类能用来创建框架窗口的是 A.JWindow B.JFrame C.JDialog D.JAudio 7.某程序定义了一个子类,并要让它实现多线程,以下正确的步骤是 A.继承Thread类,在类内定义run( )方法,声明和创建线程对象,并让该对象调用 start( )方法。 B.继承Thread类,在类内定义run( )方法,声明线程对象,并让该对象调用start( )方法。 c.声明实现Runnable接口,在类内实现run( )方法,声明线程对象,创建线程,并调用start( )方法。 D.声明实现Runnable接口,在类内实现run( )方法,声明和创建线程对象,并让该对象调用start( )方法。 8.大多数采用缓冲式输入数据文件的程序的主要目的是 A.用readLine( )方法按行输入字符 B.提高输入速度 C.更快地读入字符数据 D.用read( )方法输入任意个字符 9.在打开文件对话框时,可用FileFilter类设置筛选条件,在以下供选择的方法中,是 FileFilter类预设的方法之一的是 A.setFileFilter( ) B.addFileFilter( ) C.accept( ) D.setDescription( ) 10.对访问数据库的Java程序来说,DriverManager类的作用是

程序设计比赛试题

程序设计比赛试题 最少钱币数: 【问题描述】 这是一个古老而又经典的问题。用给定的几种钱币凑成某个钱数,一般而言有多种方式。例如:给定了6种钱币面值为2、5、10、20、50、100,用来凑15元,可以用5个2元、1个5元,或者3个5元,或者1个5元、1个10元,等等。显然,最少需要2个钱币才能凑成15元。 你的任务就是,给定若干个互不相同的钱币面值,编程计算,最少需要多少个钱币才能凑成某个给出的钱数。 【要求】 【数据输入】输入可以有多个测试用例。每个测试用例的第一行是待凑的钱数值M (1<=M<=2000,整数),接着的一行中,第一个整数K(1<=K<=10)表示币种个数,随后是K个互不相同的钱币面值Ki(1<=Ki<=1000)。输入M=0时结束。 【数据输出】每个测试用例输出一行,即凑成钱数值M最少需要的钱币个数。如果凑钱失败,输出“Impossible”。你可以假设,每种待凑钱币的数量是无限多的。 【样例输入】 15 6 2 5 10 20 50 100 1 1 2 【样例输出】 2 Impossible

Feli的生日礼物 【问题描述】 Felicia的生日是11月1日(和Kitty是同一天生的哦)。于是Feli请来Kitty一起过生日。Kitty带来了最新款的“Kitty猫”玩具准备送给Feli,不过她说,这份礼物可不是白送的。Feli要帮她一个忙,才能够得到心仪已久的玩具。Kitty说,“Kitty猫”玩具已经卖出了n!个,n<=10^100*_*,Kitty想知道确切的数字,而不是无聊的“一个数加个感叹号”。Feli听了大吃一惊。要知道,算出n!是一个无比艰巨的任务。Feli告诉Kitty,就算Feli算出n!,Kitty也看不下去,因为当n=20时,计算机的长整型已经存不下了(Kitty只能接受1-9之间的数字)。于是Kitty说,你只要告诉我n!最后一位非0的数就可以了。Feli想了想,立刻动手写了个程序算出了正确的答案。现在,请你也试试看!注意哦,AC的男生将会得到一个“Hello Kitty”计算器(可编程,CPU 1THz,Mem 1TMB),AC的女生将会得到一个仿真“Hello Kitty”宠物(善解人意,无须喂养,智商1101,附带写情书功能)。 【要求】 【数据输入】每行一个n,直到输入数据结束 【数据输出】对应输入的n,每行输出一个答案 【样例输入】 1101 【样例输出】 8

2016年《高级语言程序设计》期末考试题及答案

2016年下半年《高级语言程序设计(高起 专)》期末考试试题 1. ( 单选题) 以下程序的输出结果是()。 main() {int i,k,a[10],p[3]; k=5; for(i=0;i<10;i++) a[i]=i; for(i=0;i<3;i++) p[i]=a[i*(i+1)]; for(i=0;i<3;i++) k+=p[i]*2; printf("%d\n",k); } (本题2.0分) A、20 B、21 C、22 D、23 标准答案:B 2. ( 单选题) 有以下程序,输出结果是() float fun(int x,int y) { return(x+y); } main() {

int a=2,b=5,c=8; printf("%3.0f\n",fun((int)fun(a+c,b),a-c)); } (本题2.0分) A、9 B、21 C、9.0 D、编译出错 标准答案:A 3. ( 单选题) C语言程序的基本单位是()(本题2.0分) A、程序行 B、语句 C、函数 D、字符 标准答案:C 4. ( 单选题) 一个 C 程序的执行是从( )(本题2.0分) A、本程序的main函数开始,到main函数结束 B、本程序文件的第一个函数开始,到本程序文件的最后一个函数结束 C、本程序的main函数开始,到本程序文件的最后一个函数结束 D、本程序文件的第一个函数开始,到本程序main函数结束 标准答案:C 5. ( 单选题) 一个 C 语言程序是由( )(本题2.0分)

A、一个主程序和若干子程序组成 B、函数组成 C、若干过程组成 D、若干子程序组成 标准答案:B 6. ( 单选题) 变量的指针,其含义是指该变量的()(本题2.0分) A、值 B、名 C、地址 D、一个标志 标准答案:C 7. ( 单选题) C语言提供的合法的数据类型关键字是_____(本题2.0分) A、Double B、short C、integer D、Char 标准答案:B 8. ( 单选题) 以下关于数组的描述正确的是( )(本题2.0分) A、数组的大小是可变的,可以有不同的类型的数组元素 B、数组的大小是固定的,所有数组元素的类型必须相同

自考Java语言程序设计试题及答案解析

2015年10月高等教育自学考试全国统一命题考试 Java语言程序设计(一) 试卷 (课程代码04747) 本试卷共13页,满分100分.考试时间150分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸. 2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑. 3.第二部分为非选择题。必须注明大、小题号.使用0.5毫米黑色字迹签字笔作答. 4.合理安排答题空间.超出答题区域无效。 第一部分选择题 一、单项选择题(本大题共10小题.每小题1分.共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的。请将其选出并将“答题卡” 的相应代码涂黑。未涂、错涂或多涂均无分. 1.以下字符组合中,不能作为Java整型常量的是 A.037 B.0x3ADG C.7000 D.0x3abcL 2.以下程序代码的输出结果是 3.设有数组定义,则x.length的值为 A.2 B.3 C.4 D.5

4. 设有字符串String s=〝ABCDEFGABC〞;,则表达式s.indexOf(〝A〞,7)的值是 A.7 B.6 C.3 D.0 5.以下关于Swing与AWT之间关系的叙述中,正确的是 A.Swing是AWT的提高和扩展 B.在写GUl程序时,AWT和Swing不能同时使用 C.AWT和Swing在不同的平台上都有相同的表示 D.AWT中有一些类是从Swing中的一些继承的 6.以下供选择的类中,其子类能用来创建框架窗口的是 A.JWindow B.JFrame C.JDialog D.JAudio 7.某程序定义了一个子类,并要让它实现多线程,以下正确的步骤是 A.继承Thread类,在类内定义run( )方法,声明和创建线程对象,并让该对象调用 start( )方法。 B.继承Thread类,在类内定义run( )方法,声明线程对象,并让该对象调用start( ) 方法。 c.声明实现Runnable接口,在类内实现run( )方法,声明线程对象,创建线程,并 调用start( )方法。 D.声明实现Runnable接口,在类内实现run( )方法,声明和创建线程对象,

Java程序设计预赛模拟题-2

一、单选题 1.Java JDK中调试器的命令是( )。 A. javac B. java C. jdb D. javah 2.运行jar文件中class文件需要在java命令后面加的参数为()。 A. -cp B. -g C. -d D. -verbose 3.下面哪项在java中是不合法的标识符?() A. $user B. point C. You&me D. _endline 4.下列哪一项不是Java保留字?() A. sizeof B. super C. abstract D. break 5.下列哪个布局管理器中的按钮位置有可能会根据Frame的大小改变而改变? () A. BorderLayout B. CardLayout C. GridLayout D. FlowLayout 6.下面哪些java语句会导致无限循环?( ) I. while (true) i = 0; II. while (false) i = 1; III. while (!false) i = 0; A. III only B. I and III only C. I only D. I, II and III 7.下面是Example.java文件的完整代码,请找出会产生编译错误的行()。 1) class BaseClass { 2) public String str; 3) public BaseClass(){ 4) System.out.println(“ok”);} 5) public BaseClass(String s){ 6) str=s;}} 7) class SubClass extends BaseClass{ 8) } 9) public class Example{ 10) public void method(){ 11) SubClass s=new SubClass(“hello”); 12) BaseClass b=new BaseClass(“world”); 13) } 14) } A. 7 B. 10 C. 11 D.12 8.可以在下面代码段point x处写入的是()。 //point x public class Interesting{ //do something } A. String str; B. static int PI=3.14; C. public class MyClass{//do other thing…} D. import java.awt.*; 9.下面关于事件监听的说明,哪一个语句是正确的?() A. 所有组件,都不允许附加多个监听器 B. 如果多个监听器加在一个组件上,那么事件只会触发一个监听器 C. 组件不允许附加多个监听器

高级语言程序设计期中试卷B

上海电机学院 2010–2011学年第 2 学期 《高级语言程序设计》期中考试试卷B 2011.5 开课学院:电子信息学院, 考试形式:闭卷, 所需时间 90 分钟 考生姓名: 学号: 班级 一、填空题(共20分,每空格1分) 1.将数学式b a x ) (sin 2转换成C 语言表达式 。 2.getchar 函数的作用是 。 3.C 语言程序的基本单位是函数。程序的执行总是从 开始。 4.在C 程序中,逻辑运算符的操作对象,用 表示“真”,用 表示“假”。在求逻辑值时,用 表示逻辑表达式值为“真”,用 表示逻辑表达式值为“假”。 5.执行 printf("%d\n",(int)(2.5+3.0)%2); 的输出结果是 。 6.C 语言提供的三种逻辑运算符为: 、 和 。 7.设整型变量 x 、y 、z 均为3:则 ①执行"x -=y+x"后,x = ②执行"x %=y +z"后,x = 8. 设有说明语句:int a=21, b=6; 则a/b 的十进制数值为________ 9. 设有说明语句:int x=3, y=2; 则计算表达式(x=5) || (y=6*x) 后变量y 的值是________ 10 设a,b,c,t 为整型变量,初值为a=3,b=4,c=5,执行完语句t=!(a+b)+c-1&&b+c/2后, t 的值是 11.结构化程序设计的三种基本结构是 结构, 结构和 结构。 12.设定义 int k=1,n=163;执行下面程序段后,k 的值是 。 do { k*=n%10; n/=10; } while(n); 二、选择题 (共17分,每小题1分) 1.表达式3/5的值为: ( ) A . 0 B . 0.6 C . 0.600000 D .1 2.表达式“9!=9”的值是 ( ) A . true B .非0值 C . 0 D .1 3.设ch 是char 型变量,其值为‘A ’,则下面表达式的值是 ( )

第三届Java程序设计大赛题目

第三届Java程序设计大赛题目 重要提示: 1.除下载竞赛题目和上交代码,其余时间不允许连接网络,否则取消竞赛资格! 2.创建以“学号-姓名”命名的根文件夹(形式 如:“10317210135-张三”),并将竞赛结果代码严格按题目上的命名要求进行命名并直接保存在该文件夹下; 3.在两个小时之内完成源代码,源代码上交前要将前面创建的文件夹(如前面创建的“10317210135-张三”文件夹)压缩成“rar”格式,命名形如:“10317210135-张三.rar”; 3. 将压缩的源代码上交到上传 至“ftp://100.1.0.38/”,用户名:student10,密 码:student10; 4.源代码上交期限是4月27日21:00前,否则不予接收。 注意:凡违反上述规定的考生,其成绩一律按零分处理!

1. 竞赛第一题 有5个学生,他们的姓名分别为丁一,刘二,张三,李四,王五,他们的英语成绩分别为62,46,91,73,29;数学成绩分别为 64,97,81,75,90,物理成绩分别为94,27,65,51,88,编写一个Java程序,找出他们当中总分最高的学生,并输出他的姓名和分数。(提示:为每一个学生创建一个Student类,并将他们的姓名,各科成绩作为属性存储起来,然后建个Student类型的数组通过比较找出符合要求的人)。 要求: Java源文件包含main()方法,运行能输出结果,将制作好的应用程序类保存为“T1.java”,放在根文件夹下。 2. 竞赛第二题 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?(本题20分) 要求: Java源文件包含main()方法,运行能输出结果,将制作好的应用程序类保存为“T2.java”,放在根文件夹下。

高级语言程序设计(C)模拟试题二

高级语言程序设计(C)模拟试题二 一、单项选择题(每题3分,合计60分) 1.自定义标识符中,符合C语言规定的是。 A. for B. 3a C. *a D. _123 2.为表示关系100≥x≥10,应使用C语言表达式。 A. (100>=x)&&(x>=10) B. (100>=x) AND (x>=10) C. (100>=x>=10) D. (100>=x)&(x>=10); 3.定义int a; float f; double i; 表达式15+i*f+ˊAˊ的值是。 A. float B. int C. char D. double 4.下面程序要求从键盘上输入值并打印,请选择正确的输入方法。 main( ) { int a,b; scanf("x=%d,y=%d",&x,&y); printf("x=%d,y=%d\n",x,y); } A. 5,6 B. x=5, y=6 C. 5↙6 D. 5 6 5.定义如下变量和数组: int i; int x[3][3]={1,2,3,4,5,6,7,8,9}; 则下面语句的输出结果是。 for(i=0;i<3;i++) printf("%d",x[i][2-i]); A. 1 5 9 B. 1 4 7 C. 3 5 7 D. 3 6 9 6.在定义了 int a[3][2];之后,对a的引用正确的是。 A.a[3][2] B.a[3][0] C.a[0][0] D.a[0,0] 7.执行以下程序段后,m的值为。 int a[2][3]={{1,2,3},{4,5,6}}; int m,*p; p=&a[0][0]; m=(*p)+(*(p+2))+(*(p+4)); A. 9 B. 8 C. 7 D. 6

2016年10月自考Java语言程序设计(一)04747

2016年10月高等教育自学考试全国统一命题考试 Java语言程序设计(一)试卷 (课程代码 04747) 本试卷共9页,满分l00分,考试时间l50分钟。 考生答题注意事项: 1.本卷所有试题必须在答题卡上作答。答在试卷上无效,试卷空白处和背面均可作草稿纸。 2.第一部分为选择题。必须对应试卷上的题号使用2B铅笔将“答题卡”的相应代码涂黑。 3.第二部分为非选择题。必须注明大、小题号,使用0.5毫米黑色字迹签字笔作答。 4.合理安排答题空间,超出答题区域无效。 第一部分选择题(共l0分) 一、单项选择题(本大题共l0小题,每小题l分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其选出并将“答题卡”的相应代码涂黑。错涂、多涂或未涂均无分。淘宝店铺自考达人 V信1297755429 1.在下述字符串中,不是Java余言关键字的是 A.int B.static C.java D.try 2.要作下列数据类型转换,需进行强制类型转换才能实现的是 A.从int到char B.从int到 long C.从lloat到 double D.从byte到 int 3.在以下供选择的概念中,属于面向对象语言重要概念或机制的是 A.方法 B.模块 C.线程 D.继承 4.在下述Java程序代码中,能正确创建数组的是 A.int myA[5]={1,2,3,4,5); B.int myA[]=new int(5); C.int myA[];myA[]=new int[5]; D.int[]myA={1,2,3,4,5,6};5.某Java程序的类A需要利用Swin9创建无边框窗口,则A需要继承的类是A.JWindow B.JApplet C.JFrame D.JDialog 6.在以下供选的鼠标事件中,MouseMotionListener接口能处理的是 A.按下鼠标键 B.拖动鼠标 C.鼠标进入 D.鼠标松开7.在以下代码中,能正确创建Font对象的是 A.new Font(″宋体″,斜体,20); B.new Font(″楷体″,20,正常);C.new Font(″楷体″,Font.BOLD,l 8); D.new Font(″楷体″,1 8,Font.BOLD);8.某线程正处于运行状态,则在以下选项中,不可能是它的后继状态的是 A.就绪状态 B.新建状态 C.阻塞状态 D.死亡状态 9.某Java程序用类JFileChooser来实现打开和保存文件对话框。当对话框的返回 值是JFileChooser.APPROVE_OPTION时,程序进一步的工作是 A.用方法getName()取得文件名称 B.用方法getPathO()取得文件路径 C.用方法getFile()取得文件内容 D.用方法getSelectedFile()取得文件对象 10.Java语言实现C/S模式时,需要使用网络套接字,套接字的内容包括 A.IP地址+端口号 B.IP地址+监控线程名 C.监控线程名+端口号 D.IP地址+监控线程名+端口号 第二部分非选择题(共90分) 二、填空题(本大题共l0小题,每空2分,共20分) 11.一个Java小应用程序必须定义成一个子类,它的超类是______。 12.在Java语言中,左移运算符是______。 13.类A的成员变量x的类型是类B的,则类A和类B之间的关系是______。14.以下代码: 的输出结果是_______。 15.在JFrame子类的构造方法中,代码getContentPane0的作用是_______。16.用JScrollBar创建一个垂直滚动条对象时,需要指定的常量是_______。17.在异或模式下绘图时,实际绘制的颜色是由3种颜色作特定的运算确定的:当前正要绘 制的颜色、原先绘制的颜色以及_______。 18.处于运行状态的线程执行yield()方法,该线程将进入_______状态。 19.在Java语言中,客户端使用的套接字类是_______。 20.在Java语言中,DriverManager类的作用是加载驱动程序和_______。

高级语言程序设计练习题

(一)填空题: 1.C语言程序的基本单位是______________。 2.在C语言中,数字056是一个______________进制数,0xFF是一个______________进制数。 3.若程序中使用了函数scanf(),则必须包含的头文件名为。 4. 若程序中使用了函数strlen(),则必须包含的头文件名为。 5.C语言程序的三种基本结构是______________、______________、______________。 6.若程序中使用了函数sqrt(),则必须包含的头文件名为。 7.C语言中运算对象必须是整型的运算符是。 8.C语言中整型数据除以整型数据得到数据。 9.C语言源程序文件的扩展名是;经过编译后,所生成文件的扩展名是;经过链接后,所生成的文件扩展名是。 10. 若定义int a[3][5];则a数组所含数组元数个数是,sizeof(a)的值 是,其首地址是。 11.在C语言中,数组名是数组的,同时它是一个______ 常量。 12.判断字符型变量ch是否为小写英文字母的C语言表达式为____________________________。 13.判断变量a的数值范围1≤a≤10的C语言表达式是__________________ _________ _。 14.C语言运算符中,++和--的结合方向(运算方向)是___________________。 15.当用户输入的字符串含空格时,应使用 ___ 函数读入字符串。 16.函数直接或间接地调用自己本身称为_______________________。 17.已知w=1,x=2,y=3,z=3,a=4,b=2;则执行语句(a=w>x)&&(b=y>z);后,a的值为,b的值为。 18.字符串"student"的长度是,它在内存中的字节数为。 19. 设a、b、c为整型数,且a=2,b=3,c=4,则执行语句"a*=16+(b++)-(++c);"后,a的 值是。 20.执行int x,y,z;x=y=1;z=(x++,++y,y++);后, 则x= ,y= ,z= 。 21.定义语句int x,y;,执行y=(x=1,++x,x+2);语句后,则x= ,y= 。 22. 执行下列语句int a=2;a+=a-=a*a; 后,a的值是。 23.设函数外有整型变量n,为保证其在未赋值的情况下初值为0,应选择的存储类别是 _ _ _。

《java程序设计》实验指导书(完整)

实验一 Java实验环境的建立一、实验目的 1.掌握Java编程环境的搭建过程; 2.掌握Jcreator pro软件的使用方法; 3.能使用Java doc文档。 二、实验内容 1.下载并安装,配置JDK环境变量; 2.下载Javadoc压缩包并解压在JDK安装路径下; 3.下载Jcreator pro 并安装和配置使用环境; 4.使用实验环境运行书中实例代码,在屏幕上输出“Hello Java”字符串。 ①Java application程序代码如下: public class HelloJava { public static void main(String args[]) { "Hello Java!"); } } ②Java applet程序代码如下: import .*; public class Hello extends { public void paint(Graphics g) { ("Hello!",30,30); } } 三、试验要求 1、预习试验内容并写出上机报告。 2、实验中出现的问题及实验体会。

一、实验目的: 1.输入、输出操作实现原理和方法 2.掌握程序流程控制的实现方法 3.掌握数组的定义和操作方法 二、实验内容 1.计算 Result=1!+2!+3!+ (10) public class TestJieC{ p ublic static void main(String arg[]){ long result=1; for(int i=1;i<=10;i++) { result=i*result; result+=result; } " "+result); } } 2.计算1---50之间所有素数的和。 public class Test{ p ublic static void main(String args[]){ int count = 0; for(int i = 2;i<=50;i++){ for(int j = 2;j<=i;j++){ if(i>j){ if(i%j == 0){ count++; } } } if(count==0){

高级语言程序设计--编写程序题+答案

1已知银行整存整取存款不同期限的月息利率分别为: 0.315% 期限一年 0.330% 期限二年 月息利率=0.345% 期限三年 0.375% 期限五年 0.420% 期限八年 要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。 2输入年份year和月month,求该月有多少天。判断是否为闰年,可用如下C语言表达式:year%4==0 && year%100!=0 || year%400==0。若表达式成立(即表达式值为1),则year为闰年;否则,表达式不成立(即值为0),year为平年。 3编写一个简单计算器程序,输入格式为:data1 op data2。其中data1和data2是参加运算的两个数,op为运算符,它的取值只能是+、-、*、/。 4输入n值,输出如图所示矩形。 5输入n值,输出如图所示平行四边形。 6输入n值,输出如图所示高为n的等腰三角形。

7输入n值,输出如图所示高为n的等腰三角形。 8输入n值,输出如图所示高和上底均为n的等腰梯形。 9输入n值,输出如图所示高和上底均为n的等腰空心梯形。 10输入n值,输出如图所示边长为n的空心正六边型。 11输入n值,输出如图所示图形。

12输入n值,输出如图所示图形。

13输入n值,输出如图所示图形。 14输入n值,输出如图所示图形。 15输入n值,输出如图所示图形。

16输入n值,输出如图所示图形。(例为n=6时) 17编写程序,输出如图所示sin(x) 函数0到2π的图形。 18编写程序,在屏幕上输出一个由*号围成的空心圆。 19编写程序,在屏幕上绘制如图余弦曲线和直线。若屏幕的横向为x轴,纵向为y轴,在屏幕上显示0~360度的cos(x)曲线与直线x=f(y)=45*(y-1)+31的迭加图形。其中cos图形用"*"表示,f(y)用"+"表示,在两个图形的交点处则用f(y)图形的符号。

竞赛java编程题50题(有答案)

【程序1】 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? //这是一个菲波拉契数列问题 i01 { g[] args) { l n("第1个月的兔子对数: 1"); l n("第2个月的兔子对数: 1"); int f1 = 1, f2 = 1, f, M=24; for(int i=3; i<=M; i++) { f = f2; f2 = f1 + f2; f1 = f; l n("第" + i +"个月的兔子对数: "+f2); } } } 【程序2】 题目:判断-200之间有多少个素数,并输出所有素数。 程序分析:判断素数的方法:用一个数分别去除2到s qrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。 i02 { g[] args) { = 0; for(int i=101; i<200; i+=2) { ; for(int j=2; j<=Math.sqrt(i); j++) { if(i; } else { b = true; } } l n(i );} } l n( "素数个数是); } } 【程序3】 题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个"水仙花数",因为=1的三次方+5的三次方+3的三次方。 i03 { g[] args) { int b1, b2, b3;

for(int m=101; m<1000; m++) { b3 = m / 100; b2 = m % 100 / 10; b1 = m % 10; if((b3*b3*b3 + b2*b2*b2 + b1*b1*b1) == m) { l n(m+"是一个水仙花数"); } } } } 【程序4】 题目:将一个正整数分解质因数。例如:输入90,打印出=2*3*3*5。 程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成: (1)如果这个质数恰等于,则说明分解质因数的过程已经结束,打印出即可。 (2)如果n <> k,但n能被整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。 (3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。 t java.util.*; i04{ g[] args) { e r s = new Sc m.in); ( "请键入一个正整数: "); n t(); int k=2; (n + "=" ); (k <= n) { ;} els(k + "*");n = n / k; } else k++; } } } 【程序5】 题目:利用条件运算符的嵌套来完成此题:学习成绩> =90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。 t java.util.*; i05 { g[] args) { int x; ; m.in); ( "请输入一个成绩: "); n t(); = x >= 90 ? 'A' : x >= 60 ? 'B'

《高级语言程序设计》期末试题-刘坤良

天津工业大学计算机科学与软件学院 班级学号姓名 注意事项:1、本试卷共10 页,满分为100 分,考试时间为100分钟。 2、答题时请使用蓝、黑钢笔或圆珠笔,不得使用红颜色墨水笔。 除特殊要求外不得使用铅笔。 题目一二三四五总分分数核对 得分 阅卷人 答题纸部分(A1) 一、单项选择题:(每题 2 分,共20 分) (说明:将答案字母填写在答题纸中) 分数 1 2 3 4 5 6 7 8 9 10 二、填空题:(每空 2 分,共32 分) (说明:将答案填写在答题纸中) 分数 填空号答案填空号答案 (1)(2) (3)(4) (5)(6) (7)(8)

(9)(10) (11)(12) (13)(14) (15)(16) 分数三、阅读程序,写出程序输出结果:(每题 4 分,共20 分) (说明:将答案填写在答题纸中) (1)(2) (3)(4) (5) 分数四、程序填空:(每空 2 分,共 6 分) (说明:将答案填写在答题纸中)

填空号答案填空号答案 (1)(2) (3) 分数五、程序设计题:(共 2 题,共22 分) (说明:将答案填写在答题纸中)

试题部分(A1) 说明:将所有题目的答案均填写在前面的答题纸中!! 分数 一、单项选择题:(每题 2 分,共20 分) (说明:将答案填写在答题纸中) 1. 一个C程序的组成部分可以是。 A.一个主函数和一至若干个其他函数B.一至若干个主函数 C.一个主程序和一至若干个其他函数 D.一个主程序和一至若干个子程序 2. 以下叙述正确的是。 A.在C程序中,main函数必须位于程序的最前面 B.C程序的每行中只能写一条语句 C.C语言本身没有输入输出语句 D.在对一个C程序进行编译的过程中,可发现注释中的拼写错误3.一个C程序的执行是从。 A.本程序的main函数开始,到main函数结束 B.本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C.本程序的main函数开始,到本程序文件的最后一个函数结束 D.本程序文件的第一个函数开始,到本程序main函数结束 4.C语言中的标识符只能由字母、数字和下划线三种字符组成,且第一个字符。 A.必须为字母B.必须为下划线 C.必须为字母或下划线 D.可以是字母、数字和下划线中任一种字符 5.设有语句int a=3;则执行语句a+=a-=a*a后,变量a的值是。 A.3B.0C.9D.-12 6. 若int i=10,执行下列程序: switch(i) {case9:i+=1; case10: case11:i-=1; default:i+=1; } 则变量i的结果是。

《高级语言程序设计》期末考试试卷附答案

《高级语言程序设计》期末考试试卷附答案 一、选择题(共20题,每题3分,共60分) 1. 下列四个选项中,均是合法的整型常量的选项是() A.160 –0XFFFF 011 B. -0XCDF 01A 0XE C. -01 986,012 0688 D. -0X48a 2e5 0x 2. 下列四个选项中,均是不合法的浮点数的选项是() A.160.0.12 e3 B. 123 2e4.2 .e5C.18 0.0 123e4 D. e3. 234 1e3 3. 合法的C语言字符常数是() A.'\t' B. "A"C.54 D. A 4. 在C语言中,要求运算数一定是整型的运算符是() A./ B. ++C.!= D. % 5. 字符串常量”mine”的字符个数是() A.4 B. 5C.6 D. 7 6. 以下属于非法的C语言转义字符的是() A.'\b' B. '0xf'C.'\037' D. '\' 7. 若x、y、z均为int型变量,则执行以下语句后的输出是() x=(y=(z=10)+5)-5; printf("x=%d, y=%d, z=%d\n",x,y,z); y=(z=x=0,x+10); printf("x=%d, y=%d, z=%d\n",x,y,z); A. x=10, y=15, z=10 B.x=10, y=10, z=10 x=0, y=10, z=0x=0, y=10, z=0 C.x=10, y=15, z=10 D. x=10, y=10, z=10 x=10, y=10, z=0 x=10, y=10, z=0 8. 在以下一组运算符中,优先级最高的运算符是() A.<= B. =C.% D. && 9. 已知:int x; float y; 所用的scanf调用语句格式为: scanf( “x=%d, y=%f”, &x, &y ); 为了将数据10和66.6分别赋给x和y,正确的输入应当是() A.x=10, y=66.6<回车> B. 10, 66.6<回车> C.10<回车>66.6<回车> D. x=10<回车>y=66.6 <回车> 10. 已有如下定义的输入语句,若要求A1,A2,C1,C2的值分别为10,20,A和B,当从第一列开

高级语言程序设计练习题2015

《高级语言程序设计》练习题 一.填空题 1. 以下条件表达式可计算1+|a|的值,填空完成语句:a>=0 ?(1+a ):( 1-a ) 2. 函数max 定义的首部为:int max(int x[],int n),该函数完成实现寻找长度为n 的数组x 中的最大元素。若在主函数中有定义:int c,a[10];并要求函数调用后,变量c 存放数组a 中的最大元素,则函数调用语句应为:( c=max(a,10) ) 3. 若有int i=5; 则循环语句while(i > = 1) i - -;执行后,i 的值为 ( 0 )。 4. 能正确表示逻辑关系:“0≤a <10”的C 语言表达式是( a>=0&&a<10 )。 5. 设int a[2][3] = {{2},{3}};则数组元素(a[1][0] )的值为3。 6. 表达式 (int)(3.0/2.0)的值是( 1 )。 7. 有定义: int x=3, y=2; 执行x/=y+1; 语句后x 的值为( 1 ) 。 8. 有定义: int x=2, y=0; 表达式 (!x||y) 的值为( 0 )。 9. 有定义:int i=5; 则循环语句while(i>=1) i=i-2; 执行后变量i 的值为( -1 )。 10. 已知 ‘A ’~ ‘Z ’ 的ASCII 码为65~90,当执行int x= ‘D ’+5; 语句后x 的值为( 73 )。 11. 如果在调用一个函数过程中,又调用另一个函数,称为函数的( 嵌套 )调用。如果在调用一个函数的过程中又直接或间接地调用该函数本身,称为函数的(递归 )调用。 12. 若有语句:int b[][2]={1,2,3}; 则数组b 的元素a[1][1]的值是( 0 )。 13. 能正确表示数学表达式) (2c b c a +的C 语言表达式是( 2a/(c*(b+c)) )。 二. 选择题(在每题的四个备选答案中,选出一个正确的答案) 1. 以下不能定义为变量名的是:B (A) sanf (B) void (C) _2com (D) Go 2. 以下选项中非法的字符常量是:B (A) ‘\\’ (B)‘\181’ (C) ‘0’ (D) ‘\xAA ’ 3. 有以下程序: int main() D { int k=2,i=2,m ; m=i*=k++; printf(“%d,%d\n”,m,i);

全国高等教育自学考试Java语言程序设计完整版

全国高等教育自学考试 J a v a语言程序设计 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

全国2008年10月高等教育自学考试 Java?语言程序设计(一)试题 课程代码:04747 一、单项选择题(本大题共10小题,每小题1分,共10分) 在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.下述字符组合不能作为Java程序标识符的是()A.Aa12? B.大x C.y小? D.5x 2.以下程序代码的输出的结果是() int?x=53; System.out.println+x/2); A. B.

C. D.参照以下Java代码,以下四个叙述中最确切的是()class A{ int x; static int y; void fac(String s){Syatem. out. println("字符串:"+s);} } A.x、y和s都是成员变量 B.x是实例变量、y是类变量、s是局部变量 C.x和y是实例变量、s是参数 D.x、y和s都是实例变量 4.需要分析字符串,并将字符串分解成可被独立使用的单词,可使 用java. util包中的类是() A.String B.StringBuffer C.StringTokenizer

D.stringTokenizer 5.要为程序的子窗口设定一个由字符串s指定的名字,可以采用的代码是() A.JFrame(s) B.window(s) C.new JFrame(s) D.super(s) 6.以下关于菜单的叙述中,正确的是() A.菜单分三级定义,最高一级的是菜单条,菜单条中放菜单,菜单中放菜单项 B.菜单分三级定义,最高一级的是菜单,菜单中放菜单条,菜单条中放菜单项 C.菜单分两级定义,最高一级的是菜单,菜单中放菜单项 D.菜单分两级定义,最高一级的是菜单条,菜单条中放菜单项

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

全国高等教育自学考试高级语言程序设计试卷 考卷 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

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

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; C. if((a>b) && (c>d)) x = 1;else x = 2; D. if(a< =b) x = 2;else if (c>d) x = 1; 8. 设char x =′a′;则printf(″x = ﹪c, y = ﹪c \ n″,x,97);的输出是【】 A. x = a,y = 97 B. x = 97,y = a C. x = 97,y = 97 D. x = a,y = a 9. 设int a[][4]={1,2,3,4,5,6,7,8,9};则数组a的第一维的大小是【】 A. 2 B. 3 C. 4 D. 无确定值 10. 执行下列程序

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