循环、条件控制_第1页
循环、条件控制_第2页
循环、条件控制_第3页
循环、条件控制_第4页
循环、条件控制_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

题目1打印出所有的“水仙花数”。所谓的“水仙花数”是指一个3位整数,其中各位数字立方的和等于该数本身。例如:153是一个水仙花数,因为153=13+53+33。题目2求解100200之间的所有素数。(提示:素数m是一个不能被从2到k(k为m的平方根)之间任何一整数整除的整数。题目3求解一个二元一次方程组ax2+bx+c=0所有可能的解,要求输入三个系数,输出方程和解。(提示:1.如果a=0,有解和无解的情况2.两解要分实数解和虚数解的情况3.用到平方根)题目4假定在程序开始时二维坐标原点(x=0,y=0)有一机器人受我们控制。控制指令包括U,D,L,R,O,E等六个字符。U表示向上,即机器人由x轴向上行走一个单位;D表示向下,即机器人由x轴向下行走一个单位;L表示机器人由y轴向左行走一个单位,R表示机器人由y轴向右行走一个单位,O表示机器人返回坐标原点,E表示程序终止。写一个程序,从终端读入控制字符,模拟机器人行走,并在程序退出时输出坐标位置。题目5使用循环语句,终端输出从100到999之间的所有水仙花数,每个数占用一行,没有空格等字符. 程序名Narcissus.java. 无输入,输出格式如下:153 370.题目6从终端输入读取10个正整数,终端输出 它们的和,以及最大数,最小数,平均值(可能是浮点数),每个数输出一行。程序名Calc.java。输入输出格式如下:(实际输入会不一样)输入: 123.10输出:551015.5题目7从终端读入若干个正整数,终端输出它们的和、最大数、最小数、平均值,每个数输出一行。如果读入的数为0表示输入结束,0不参与计算。程序名Stats.java。输入输出如下:(实际输入输出会不一样)输入:123.1011.991000输出:5050100150.5“猜数字”:系统随机生成一个19的数字x,游戏者从终端输入自己所猜的数字,系统将该数字与x比较并给出相应信息,直至游戏者猜中为止。题目8输入你的名字,并逐个输出各个字所对应的Unicode编码值题目方式:填空形式,以注释形式给出提示,根据提示完成代码,注意下划线是提示你在此输入信息,不是代码的一部分,请输入代码时,把该处下划线全部删除。输入输出方式:采用JOptionPane方式输入输出题目正文:import javax.swing.JOptionPane;public class Lab3_1public static void main(String args)/定义一个字符串变量,用于存储你的名字中 name;/使用JOptionPane类获取你的名字name=JOptionPane. ( , , , );/定义一个字符变量。用以存储从字符串类型的名字逐个取出的字符 ch;/获取名字中的第一个字ch=name.charAt(0);/这是String类的一个方法,后面括号中传的整型参数代表要取第几个字符,从0开始/定义一个整型变量,用于存储字符对应的Unicode编码值 value;/使用前述定义的整型变量,存储第一个字符对应的Unicode编码值value= ;/输出这个字符对应的Unicode编码值JOptionPane. ( , , , );/获取名字中的第二个字ch=name.charAt(1);/使用前述定义的整型变量,用于存储字符对应的Unicode编码值value= ;/输出这个字符对应的Unicode编码值JOptionPane. ( , , , );/获取名字中的第三个字, 如果有的话/如果没有的话将“/-” 到 “/-”部分删除/- ;/使用前述定义的整型变量,用于存储字符对应的Unicode编码值value= ;/输出这个字符对应的Unicode编码值JOptionPane. ( , , , );/-/程序结束!题目9(主要是条件判断) 代码填空题:检测一个数字是否为回文数字 要求:对输入进行简单的检测判断,对于不在1099999之间的数给出错误提示,输入一个2位,3位,4位或者5位数,输出判断结果 注:回文是一种从前向后读和从后向前读都相同的数字或文字。例如12321,121,3443,11都是回文数字 以下是代码部分,下划线部分是需要填空的部分,也可以填写Lab4_1.java文件,并通过Editplus进行编译调试: import javax.swing.JOptionPane; class Lab4_1 public static void main(String args) String input = JOptionPane.showInputDialog( null, 请输入一个介于10到99999之间的整数:, 回文测试, JOptionPane.QUESTION_MESSAGE); /获得输入的整数 int num = Integer.parseInt(input); /如果该数字大于等于100000或者小于10,表明该数字不符合我们的要求 if( | ) JOptionPane.showMessageDialog( null, Input Error!nPlease input a integer between 10 99999, Error, JOptionPane.WARNING_MESSAGE); return; /如果是一个合法数字 else /获得这个数的个位 int geWei = (num % 10); /获得这个数的十位 int shiWei = ( ) / 10; /获得这个数的百位 int baiWei = (num % 1000) / 100; /获得这个数的千位 int qianWei = (num % 10000) / 1000; /获得这个数的万位 int wanWei = ( ) / ; /申明一个整数变量,用于保存反转后的数字 int reverseNum = 0; /如果万位大于0,表示这是一个五位数 if(wanWei 0) /如果是1个五位数,需要将个位与万位,十位与千位调换 reverseNum = (geWei * 10000) + (shiWei * 1000) + (baiWei * 100) + (qianWei * 10) + wanWei; /如果反转之前与反转之后的数值相等,那么他就是一个回文 if( ) JOptionPane.showMessageDialog( null, 五位数+num+ 是一个回文, 回文测试结果, JOptionPane.INFORMATION_MESSAGE); return; else JOptionPane.showMessageDialog( null, 五位数+num+ 不是一个回文, 回文测试结果, JOptionPane.INFORMATION_MESSAGE); return; /如果万位为0,千位大于0,表示这是一个四位数 else if( 0) /如果是一个四位数,需要将个位与千位,十位与百位调换 reverseNum = ( ) + (shiWei * 100) + ( ) + qianWei; /如果反转之前与反转之后的数值相等,那么他就是一个回文 if(num = reverseNum) JOptionPane.showMessageDialog( null, 四位数+num+ 是一个回文, 回文测试结果, JOptionPane.INFORMATION_MESSAGE); return; else JOptionPane.showMessageDialog( null, 四位数+num+ 不是一个回文, 回文测试结果, JOptionPane.INFORMATION_MESSAGE); return; /如果万位,千位为0,百位大于0,表示这是一个三位数 else if( ) /如果是一个三位数,需要调换个位与百位 reverseNum = (geWei * 100) + ( ) + ; /如果反转之前与反转之后的数值相等,那么他就是一个回文 if(num = reverseNum) JOptionPane.showMessageDialog( null, 三位数+num+ 是一个回文, 回文测试结果, JOptionPane.INFORMATION_MESSAGE); return; else JOptionPane.showMessageDialog( null, 三位数+num+ 不是一个回文, 回文测试结果, JOptionPane.INFORMATION_MESSAGE); return; /如果万位,千位,百位都等于0,十位大于0 表示这是一个两位数 else if( ) /如果是一个两位数,调换个位与十位 reverseNum = ( ) + ; /如果反转之前与反转之后的数值相等,那么他就是一个回文 if(num = reverseNum) JOptionPane.showMessageDialog( null, 两位数+num+ 是一个回文, 回文测试结果, JOptionPane.INFORMATION_MESSAGE); return; else JOptionPane.showMessageDialog(null, 两位数+num+ 不是一个回文, 回文测试结果, JOptionPane.INFORMATION_MESSAGE); return; else /十位,百位,千位,万位都为0的情况不应该出现在这里! System.out.println(Impossible! number : +num); return; 题目10(循环) 使用循环控制结构,打印出一个如下图所示的乘法表。 任意输入一个正数,输出该数字的所有最小乘积因子 例如:输入12,相应的输出为:2,2,3; 输入56,相应的输出为:2, 2, 2, 7; 题目1(for循环):利用for循环一次性并排打印如下4个三角形图像。提示:前两个三角形的每一行要求以特定数量的空格结束,后两个三角形的每一行要求以特定数量的空格开始,并且每个三角形的每一行中 (空格数+星号数量) = 10题目11 (循环)创建一个函数,使用非递归方法计算Fibonacci数列 要求: 函数参数为一个表示Fibonacci数列下标值的整型数,返回值为对应该下标的Fibonacci数值。 说明: Fibonacci数列 fib(0)=0; fib(1)=1; fib(n)=fib(n1)+fib(n2) n=2; Fibonacci数值: 0 1 1 2 3 5 8 13 21 34 55 下标: 0 1 2 3 4 5 6 7 8 9 10 注: 可在main函数里循环反复调用此函数,以输出Fibonacci的一个子数列。并可以查看到什么时候Fibonacci数值会使int整型变量上溢。题目12(ch4.22)最大公约数:任意输入两个整数,求出他们的最大公约数, GCD(int a. int b), 要求使用循环语句实现 示例:gcd(5,25) = 5 gcd(23,39) = 1 算法描述: 判断m,n的大小关系,如果mn交换两者的数值; 如果n为1,最大公约数为1;循环结束 如果m%n = 0,那么最大公约数为n,循环结束;否则将mn的数值赋给m,n的值不变,然后循环操作步骤1,2,3 题目14编写一个“猜数”的游戏程序。游戏如下:程序从1到1000随机选择某一个数让用户猜。用户最多只有10次猜测机会,在每次猜测时,程序显示对话框,如下图所示: 根据用户输入的猜测数字,比较程序最初产生的随机数,给出相应的结果。如果用户猜测错误,显示错误信息对话框,同时给出提示,如果用户猜测的过大,给出猜测过大的提示,如果用户猜测过小,给出过小的提示,显示结果如下图所示: 给出提示之后进入下一轮猜测,同样再次显示输入对话框: 如果用户猜测的比实际程序产生的随机数大,则显示如下信息: 由于用户第2轮仍然没有猜对,程序提示用户进入第三轮猜测: 如果用户10轮猜测都没有成功,则反馈如下信息,并最终退出程序: 如果用户猜测成功,则反馈如下的信息,并最终退出程序: 题目15(剪刀锤子布,只有判断)Rock, Paper, ScissorsProgram Rock.java contains a skeleton for the game Rock, Paper, Scissors. Open it and save it to your directory. Add statements to the program as indicated by the comments so that the program asks the user to enter a play, generates a random play for the computer, compares them and announces the winner (and why). For example, running your program might look like this: Note that the user should be able to enter either upper or lower case r, p, and s. The users play is stored as a string to make it easy to convert whatever is entered to upper case. Use a switch statement to convert the randomly generated integer for the computers play to a char. 题目16编写乘法表 输入一个整数n(Scanner, JOptionPane,直接命令行参数都可以),输出一个n*n的乘法表 只显示右上三角部分的结果 同一列的数据右对齐 数字与数字之间至少有一个空格的间隔(即两个乘法结果之间不能不空格的连在一起)示例 n=9 示例 n=18题目17i. 描述编写一个简单四则运算测试程序,并根据测试结果自动打分。1. 你要写一个方法来随机生成简单的四则运算题目,如4+2=? 15-3=? 14*12=? 7/3=? 要求运算题中出现的数为随机生成的在0,20内的整数,运算符也要求随机生成。注意,除法运算中的除数不能为0。2. 程序提示测试者输入要解答题目的数目n,随后随机生成n道题目让测试者解答。3. 对于测试者答错的题目,要求其重新解答,直至解答正确为止(因此你需要用数组保存答错的题目)。4. 程序在测试者答对所有题目后,给出测试者这次测试的总成绩,成绩的计算规则如下:对于第一次回答的题目,每题的平均得分为对于首次答错的题,以后每重新回答一次,该题的得分就减半。最后计算总得分,注意结果保留一位小数。ii. 示例Write a program to tell the user his/her constellation and animal sign.The users birthday should be typed by user from console or dialogue box.The users birthday always consists of year, month and day.You can use String.split() to split the string to get the year, month and day.When you determine the animal sign, just consider the year.Use switch statements.题目18 lab内容: 打印出歌曲”Hey Jude”的歌词。如图: 要求使用循环语句打印歌词,用的循环语句越多,在源码中,使用的原歌词就越少。 具体内容: 1 打开本目录下的“Hey Jude.txt”文件,里面有Hey Jude歌词,然后,点击打开“Hey Jude.mp3”,好好听,这首歌很好听的。O(_)O 2 研究歌词结构,我们发现以下的结构: 所以,打印歌词的时候,按照上图所示,可以使用多种循环结构(for、while、dowhile、swicth)打印歌词。当你使用的循环语句越多的时候,在源文件中,使用的歌词字符串就越少。 检查要求: 1. 要求完整地打印出歌词,歌词内容不得少写、漏写。 2. 使用本目录下的小工具,该工具能统计处你的源文件中歌词字符数。使用教程如下: 1) 点击打开“CountChar” 2) 点击“浏览”按钮,选择本lab的.java源文件。 3) 点击“开始计数按钮”。出现以下:评分要求(10分): 1 能完整地打印歌词 4 2 使用了循环语句 1; 3 TA实现版本中,歌词字符数为597,以此为标准(4): =600 4 =650 3 =700 2 750 0.5 4. 代码风格 1 不要忘记上传代码文件到FTP服务器上。题目19写一个方法,功能是单个大写字母转换,并在main方法里面进行测试。方法的声明如下: public static char upperCaseToLowerCase(char c) 方法说明:输入字符D,可以输出字符d。有报错功能,如果输入的c为数字,则有错误警告。 警告:在实现的方法里面,不可以直接调用Java API里面Character类的任何方法。否则,此部分得分为0.题目20 3.“X+1”模型图灵机的使用。 3.1 图灵机概述 图灵机(TM)是一种重要的计算模型,它由英国数学家AMTuring于1936年提出。这个模型很好的描述了计算过程。无数的事实表明,任何算法都可以用一个图灵机来描述,这就是著名的丘奇论题。图灵机在可计算性理论中起着重要作用。可以证明图灵机识别的语言就是0型语言。 图灵机的组成如下图所示: 它由一个状态控制器,一个读写头和一个输入带组成。其中输入带左右端可以无限伸长。带上的每一格恰好有一个字符。开始时,带上从编号为0开始的n个格存放着由有限输入字母表上的字符组成的字符串,第0格及其左边和第n1格及其右边各格均为空白。空白是一个特殊的带符号,它不属于输入字母表。读写头一次可以在带上读或写一个字符,并可根据指令向左或向右移一格。状态控制器根据当前的状态,读到输入字符并发布指令。指令的内容包括状态转换,在带上的一格写上(更换)字符,以及读写头向左或向右移动一格等。 带子上的无穷多个小格可写、可擦;读写头可沿带子左右移动并在带上读写;每个图灵机有一个状态集Q,其中有一个开始状态和一个结束状态;还有一个符号集=0,1,*;可形式化地描述为: 图灵机是一个七元组M=(Q,T,q0,B,H) 其中: Q -有限的状态集合; -有限的带字符集合; B -空白符号,B; T -输入字符集合, T且 BT; -下一次动作函数,是从Qx到QxxL,R的映射,即控制器的规则集合 q0 -初始状态 ,q0 Q; H -终止状态集合,HQ. 工作过程:首先从开始状态启动,每次动作都由控制器根据图灵机所处的当前状态和读写头所对准的符号决定下一步动作(或称操作)其中每一步包含三件事。各符号写到读写头当前对准的那个小格内,取代原来的符号。读写头向左或向右转动一格、或不动。一次动作会引起: (1)控制器改变状态; (2)在当前扫描到的单元上,重写一个字符取代原来的字符; (3)读写头左移或右移一个单元; 根据控制器的命令用某个状态(可以是原状态)取代当前的状态,使用图灵机进入一个新的状态。控制器的命令:(状态、符号)(写符号,移动、状态),当图灵机进入一个结束状态就停机。计算任务宣告完成,带上的内容即为输出结果。 3.2我们设计的图灵机的状态:3.3我们的lab要求: 用户首先输入当前的状态和当前的符号,然后输出结果。 结果包括:新符号,读写头移动状态,新状态。 3.4后续 同学们可以不理解图灵机的思想,凭借着上表就可以完成3.3的内容。 但是,图灵机是一个非常有趣的课题,有兴趣的同学可以深入研究下去。 评分要求: 检查3个内容的输出,每个3分。 代码风格1分。Homework: 以“我对图灵机的理解”为主题,写一篇不少于500字的的体会,可以附带代码、伪代码、流程图等等。形式不限。有兴趣的同学,可以去实现一个简单的图灵机,并写说明文档。实现得好的同学期末有加分 !题目21随机取出1000个double类型数字,数值时1100,求这1000个数字的总和,平均值,方差。要求随机值用random函数获得,如果你愿意给1000个变量赋值,也可以。(*_*) Hint:2.1方差是实际值与期望值之差平方的平均值 2.2 获得随机数 Math.random()返回一个0,1)的随机double类型的数值题目22猜数字的游戏玩法:每次开始游戏的时候,由电脑在一定范围内随机生成一个数字。由玩家开始猜这个数字是多少,每次玩家猜错之后,都会给提示这个数字大了还是小了,直至最后玩家猜出结果。游戏的实现界面: 提示:1. 随机生成数字,用Random类(java.util.Random)实现。具体用法详见API。2. 用while循环语句或者dowhile循环语句实现控制游戏的进行。Page933. 用ifelse 判断语句进行数字判断。Page87题目23富人Smith的生日英国富人P.Smith,1784年2月29日生于伦敦郊区,毕生酷爱旅游和参加party,出生时即被送至教堂学习,只有生日时会参加派对,直到20岁生日那天party上被宣布继承祖父基业,从此开始经营棉纺加工赚钱.因不满生辰, 决定此后闰年生日时举办party,平年2月28日则去教堂做祷告,并且每年的大月最后一天游玩Welsh,小月最后一天游玩Northern Ireland。Smith于1840年9月30日去Northern Ireland旅游的路上遭遇海难逝世。使用控制语句实现这样一个程序,由输入的不同日期判断Smith的活动。 1784 2.291804 2.29 1784 2.29 birth 1788 2.29、1792 2.29、1796 2.29、1804 2.29 party 其他时间 church 1804 3.11840 9.29 闰年2.29 party 平年2.28 church 大月31号 travel to Welsh 小月30号 travel to Northern Ireland 其他时间 Money 1840 9.30 Death (sea)公历纪年法中,能被4整除而不能被100整除的数和能被400整除的数是闰年,此外规定能被3200整除的不是闰年。如1900年是平年,2000年是闰年,3200年是平年。MyCalendar类 isLeapYear() 判断是否闰年 lastDayInMonth() 返回month的最大天数 lessThan(MyCalendar2) 判断当前MyCalendar是否早于MyCalendar2Smith类 String chooseDate() inputDialog输入任意日期 doMap() Date到status的映射,每个日期决定了Mr Smith不同的状态. Eg. For 1784-02-29, status is “birth” Activity() Status到信息输出的映射,每个status输出一个messageDialog While(chooseDate!=2007-09-27) doMap()得到status

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论